1. 数据源必须是 SDE
2. 数据必须包含 GlobalIDs
3. 不可含有 M and Z 值
4. 没有使用FeatureClass的 area或length字段进行渲染
5. 编辑多边形的第一部分必须按顺时针方向走,逆时针方向会形成洞从而引发一个异常。
2008年12月9日星期二
2008年12月5日星期五
ArcGIS Server Java 9.3 REST API的中文查询问题的解决方案
【2009.2.18补注】这个问题在SP1 for Linux中修复,SP1 for Windows下问题更加严重,如果打了SP1 for Windows,还想使用REST服务,就必须使用Linux或者没有打SP1补丁的Windows的ArcGIS Server的$arcgis/java/web_output/rest替换现有的目录(同时,还需要手动修改/WEB-INF/classes下的配置文件server.properties)。
目前在ArcGIS Server 9.3 Java中使用中文进行REST查询时是有问题的,这是ArcGIS Server for Java集成的tomcat的问题,我的同事曾经给出一个解决方案:
1、ArcGIS Server Java 9.3可以把services和rest单独导出成war包,部署到其他的web服务器上,从而可以避免内置tomcat的性能瓶颈。进入Manager-->services-->Configure Services Handler-->Export页面,把rest服务导出成rest.war,保存到本地;
2、把保存下来的rest.拷贝到任何一个其他版本的tomcat 的webapps目录下(ArcGIS Server内置的tomcat是5.5.9版本,我们测试用的是apache-tomcat-6.0.10)
3、启动tomcat6.0.10,在浏览器中输入http://localhost:8080/rest,进入service directory页面。
4、选中服务的图层进行查询,输入中文进行查询,看是否可以得到正确的结果。
有人反映这个方案不能解决问题,可能和tomcat的版本有关,我研究了一下,给出两种解决方案:
方案1:
从客户端入手。
中文不能查询的根本原因在于编码,当我们在使用REST API进行查询的时候,请求的URL一般是这样:“http://wuyfsles:8399/arcgis/rest/services/BeijingTraffic/MapServer/find?searchText=事故&contains=true&searchFields=&sr=&layers=0&returnGeometry=true”,其中的中文无法被服务器识别。因此,你可以在发送前对“事故”这个中文关键词进行URL编码,应该是“%CA%C2%B9%CA”,你在浏览器中输入“http://wuyfsles:8399/arcgis/rest/services/BeijingTraffic/MapServer /find?searchText=%CA%C2%B9%CA&contains=true&searchFields=&sr=& layers=0&returnGeometry=true”的时候,是不是可以看到结果了?
方案2:
从服务器端入手,还是着手解决编码问题。
既然tomcat有问题,我们就在tomcat身上开刀。以Linux为例,分别打开“/arcgis/java/manager/service/tomcat/managerappserver/conf/server.xml”和“/arcgis/java/manager/service/tomcat/managerserver/conf/server.xml”,找到“Connector”元素,如图添加属性URIEncoding="UTF-8"。保存退出,重启tomcat和ArcGIS Server。

在浏览器中试一下中文查询,问题已经解决,如图:

再在Flex中进行Find Task查询,也能查到正确结果,如图:
目前在ArcGIS Server 9.3 Java中使用中文进行REST查询时是有问题的,这是ArcGIS Server for Java集成的tomcat的问题,我的同事曾经给出一个解决方案:
1、ArcGIS Server Java 9.3可以把services和rest单独导出成war包,部署到其他的web服务器上,从而可以避免内置tomcat的性能瓶颈。进入Manager-->services-->Configure Services Handler-->Export页面,把rest服务导出成rest.war,保存到本地;
2、把保存下来的rest.拷贝到任何一个其他版本的tomcat 的webapps目录下(ArcGIS Server内置的tomcat是5.5.9版本,我们测试用的是apache-tomcat-6.0.10)
3、启动tomcat6.0.10,在浏览器中输入http://localhost:8080/rest,进入service directory页面。
4、选中服务的图层进行查询,输入中文进行查询,看是否可以得到正确的结果。
有人反映这个方案不能解决问题,可能和tomcat的版本有关,我研究了一下,给出两种解决方案:
方案1:
从客户端入手。
中文不能查询的根本原因在于编码,当我们在使用REST API进行查询的时候,请求的URL一般是这样:“http://wuyfsles:8399/arcgis/rest/services/BeijingTraffic/MapServer/find?searchText=事故&contains=true&searchFields=&sr=&layers=0&returnGeometry=true”,其中的中文无法被服务器识别。因此,你可以在发送前对“事故”这个中文关键词进行URL编码,应该是“%CA%C2%B9%CA”,你在浏览器中输入“http://wuyfsles:8399/arcgis/rest/services/BeijingTraffic/MapServer /find?searchText=%CA%C2%B9%CA&contains=true&searchFields=&sr=& layers=0&returnGeometry=true”的时候,是不是可以看到结果了?
方案2:
从服务器端入手,还是着手解决编码问题。
既然tomcat有问题,我们就在tomcat身上开刀。以Linux为例,分别打开“/arcgis/java/manager/service/tomcat/managerappserver/conf/server.xml”和“/arcgis/java/manager/service/tomcat/managerserver/conf/server.xml”,找到“Connector”元素,如图添加属性URIEncoding="UTF-8"。保存退出,重启tomcat和ArcGIS Server。

在浏览器中试一下中文查询,问题已经解决,如图:

再在Flex中进行Find Task查询,也能查到正确结果,如图:
2008年12月1日星期一
Google Map中国地图搜索的请求方式
与MapABC、Mapbar等国内地图“API”提供商不同,Google Map在对坐标的控制上比较宽松,不像国内地图厂家对坐标进行加密。而且,Google Map的地图搜索请求不仅仅支持html输出,而且还支持json和kml等输出,这无疑给程序整合带来便利。
目前,Google Map中国地图的搜索可以通过如下的URL请求完成:
http://ditu.google.cn/maps?output=kml&hl=zh-CN&q=东方新天地+餐厅&near=王府井&start=10
简单的解释一下:output对应输出格式,目前至少支持html、json和kml;q对应请求的搜索对象,多个关键字用“+”连接;near对应周边搜索;start对应多页搜索结果的起始值,默认一页10个结果,那么如果查看第二页那就是start=10,第三页就是20……
目前,Google Map中国地图的搜索可以通过如下的URL请求完成:
http://ditu.google.cn/maps?output=kml&hl=zh-CN&q=东方新天地+餐厅&near=王府井&start=10
简单的解释一下:output对应输出格式,目前至少支持html、json和kml;q对应请求的搜索对象,多个关键字用“+”连接;near对应周边搜索;start对应多页搜索结果的起始值,默认一页10个结果,那么如果查看第二页那就是start=10,第三页就是20……
订阅:
博文 (Atom)
