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中的相应服务中找到。
前端关键代码如下:
后端servlet关键代码如下:
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 for Server发布服务的要素类进行操作(字段增删、索引重建等)
- Ambari-Server Rest API处理2(Ambari-Server通过Rest API进行服务安装、部署、操作流程+操作源码分析)
- arcgis总结——网络分析服务的发布以及路径规划
- arcgis总结——离线地图服务的发布以及显示
- ArcGIS API for Silverlight中通过https访问rest服务
- 目前比较流行的ASP木马主要通过三种技术来进行对服务器的相关操作
- 网站对历史发布信息进行备份和查阅的相关管理制度及执行情况说明
- VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式
- 数据库应用--回顾SQLite数据库--通过按钮来进行对数据库的管理以及登陆验证操作
- CXF发布Rest服务出现错误:javax.xml.bind.JAXBException:以及其任何超类对此上下文都是未知的。
- 通过Python脚本自动发布ArcGIS服务
- 将Java算法通过axis2发布为web服务,并进行服务调用的实现
- 黑马程序员--Java基础加强--14.利用反射操作泛型III【解析关于泛型类型的细节信息的获取方法】【Method与泛型相关的方法】【个人总结】
- ArcgisEngine+c#二次开发,sde要素类进行GP操作总结
- 总结一下js数组以及jquery相关操作
- 无法通过Rest远程访问ArcGISServer发布的服务
- 通过服务管理对mysql服务进行相关操作时 ,出现” 指定的服务已标记为删除“ 问题
- 关于使用Silverlight通过IP地址访问本地ArcGIS Server发布的Rest服务无法出图的问题
- Android 连接Mysql进行相关操作——用PHP做中介以及JSON做数据交换