您的位置:首页 > 其它

arcgis总结——地理信息服务的发布以及通过rest服务进行geocode相关操作

2016-09-09 16:39 357 查看
       说明:这里不方便截图,所以所有步骤均无图片

       1、打开arcgis map

       2、在toolboxes中找到create address locator工具

       3、在弹出的窗口中进行设置

             a、address locator style中选择general-single field

             b、reference data中加载所要生成locator的图层

             c、field map中进行映射,主要是把locator所需要的字段和图层中的数据库字段数据进行映射

             d、拉动滚动条,output address locator中选择生成locator的路径

             e、点击OK,则会生成locator

       4、把生成的locator拷贝到地图数据文件夹下,重启arcgis map

       5、在catalog下面找到生成的locator,鼠标右键,share as->geocode service

       6、接下来的发布和发布地图服务差不多,这里就不细说了

      

      接下来是如何信息地理位置的解析和逆解析。

      这里不推荐用jsapi,因为存在跨域的问题,除非你的服务端和客户端在一台机子做测试。我选择的是使用rest服务,这样就不用解决跨域的问题了。

      由于这里只是写demo,我就简单的用servlet+apache的http工具了。关于rest的api可以在http://server_url:6080/arcgis/admin中的相应服务中找到。

      前端关键代码如下:

     

function locate(address){
dojo.xhrGet({
url:'http://testtest:8080/arcgisDemo/geocode?address='+address+'&action=reverseGeocode',
load:function(data){
var json=dojox.json.ref.fromJson(data);
showResults(json.candidates[0].location.x+";"+json.candidates[0].location.y);
}
});
}

dojo.xhrGet({
url:'http://testtest:8080/arcgisDemo/geocode?lon='+lon+'&lat='+lat+'&action=geocode',
load:function(data){
var json=dojox.json.ref.fromJson(data);
showResults(json.address.SingleKey);
}
});




后端servlet关键代码如下:

@Override
proptected void doGet(
HttpServletRequest request,
HttpServletResponse response
){
response.setContentType("text/html;charset=UTF-8");
response.setContentType("application/json;charset=UTF-8");
String lon=request.getParameter("lon");
String lat=request.getParameter("lat");
String address=request.getParameter("address");
String action=request.getParameter("action");
PrintWriter out=null;
try{
String rs="";
if(action.equals("geocode"))
rs=ClientUtil.executeHttp("http://server_url:6080/arcgis/rest/services/serverName/GeocodeServer/reverseGeocode?location="+lon+"%2C"+lat+"&distance=1000&outSR=&f=pjson");)
else if(action.equals("reverseGeocode"))
rs=ClientUtil.executeHttp("http://server_url:6080/arcgis/rest/services/serverName/GeocodeServer/findAddressCandidates?SingleKey="+URLEncoder.encode(address,"UTF-8")+"&SingleLine=&outFields=&outSR=&searchExtent=&f=pjson");
out=response.getWriter();
out.write(rs);
}catch(Exception e){
e.printStactTrace();
}finally{
if(out!=null){
out.close();
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arcgis 地理信息
相关文章推荐