关于几何服务

几何服务用于辅助应用程序执行各种几何计算,如缓冲区、简化、面积和长度计算以及投影。在 ArcGIS Server 管理器中启动几何服务之后,您才能够在应用程序开发过程中使用该服务。

问题及解决方案大致描述:

在使用几何服务的cut功能时出现错误。对于某些线要素(如,可供测试的修改前的要素)无法裁剪。后经测试找到问题原因,修改后的线要素

如图,弯弯曲曲的线要素为裁剪目标(Target Geometries),直线要素为裁剪(Cutter)。箭头所指为问题所在。

如下两图将 裁剪目标A(绿色)  复制粘贴为 裁剪目标B(紫色)  并修改

修改后的线要素  可以被被几何服务的 cut 功能 顺利处理。

具体测试过程:

几何服务cut功能API   API中示例链接

根据官方示例,几何服务使用rest链接输入参数、获取结果(都可选json格式)。json的百度百科

那么怎样直观的查看输入输出要素(即怎样在将json格式描述的要素显示在ArcMap中,以及怎样将在ArcMap中自己绘制的待测试要素导出为符合要求的json格式)。 参见链接

另外我们需要知道输出参数的含义,如下为官方示例的输出结果。

{"geometryType":"esriGeometryPolyline","geometries":[{"paths":[[[6805742.999940723,1843229.9998401403],[6805741.168907642,1843467.4288272262]],[[6805740.271927804,1843583.727151066],[6805739.999946713,1843619.0000463873]]]},{"paths":[[[6805741.168907642,1843467.4288272262],[6805740.271927804,1843583.727151066]]]},{"paths":[[[6802620.999951139,1843581.0001223981],[6805496.000106633,1844962.9999830574]]]}],"cutIndexes":[0,0,1]}

内容分别描述了 要素类型、要素坐标具体位置、cutIndexes,其中 cutIndexes是何含义呢?

观察可以发现  Paths 个数与 cutIndexes 中数字个数一致,都是3个。而Paths是运行结果,表示输入要素(官方输入裁剪目标为两个线要素)。

经过测试,"cutIndexes":[0,0,1]中,"0"表示裁剪目标的第一个, "0,0"表示被第一个要素被裁剪为两个要素。  同理  "1"表示裁剪目标的第二个, "1" 表示第二个要素未被裁剪成多个。

若第二个要素也被裁剪为两个要素。那么就会是   "cutIndexes":[0,0,1,1]。

而对于某些线要素(如,可供测试的修改前的要素),裁剪后结果显示要素未被裁剪。

未被裁剪的原因一般有二:

①裁剪目标(target)和裁剪要素(Cutter)无交点,经过上述方法得到符合标志json文件,再通过json to feature 在arcmap中查看发现二者是有交点的。

②cut功能异常。

分析过是否因为裁剪目标(target)太长了,所以出错,将其截成小段,得到json,再使用cut功能测试。在测试过程中,有的小段可以,有的不行,最终定位到只要包含某一段就不行。

那么可能是数据原因,仔细查看后,如上文图片所示,原因在于有重合的点,将其分离后,得到json并使用cut功能测试,成功了~~

重合的点指:假设画线要素时依次画了点   A、B、C、D、E、F、G .... 如下图绿色线,此时C和E位置重合,此时得到的json不能被几何服务的cut功能正常处理。

将绿色线平移,再把C、E两点分开得到紫色线。紫色线得到的json可以被几何服务的cut功能正常处理。

最新文章

  1. 转:serialVersionUID作用
  2. css_随笔
  3. Oracle 11g系列:视图
  4. day5----模块
  5. java之抽象类
  6. Bootstrap——导航栏编写
  7. C++,栈与队列
  8. 屏幕分辨率与FPS
  9. 怎么在ubuntu上使用pidgin登陆QQ
  10. HDOJ(HDU) 2521 反素数(因子个数~)
  11. 正确理解Python文件读写模式字w+、a+和r+
  12. 二维字符数组利用gets输入
  13. [LeetCode] Shopping Offers 购物优惠
  14. DocX开源WORD操作组件的学习系列三
  15. 找bug hhh
  16. mysql学习笔记三 —— 数据恢复与备份
  17. 查看tomcat运行状态
  18. 动态分析小示例| 08CMS SQL 注入分析
  19. 《图说VR入门》——DeepoonVR的大鹏(陀螺仪)枪
  20. Python简单登录密码比对

热门文章

  1. asp.net中membership使用oracle数据库(二)
  2. PHP面向对象讲解
  3. 模拟搭建Web项目的真实运行环境(二)
  4. quartz 线程问题
  5. js脚本语言
  6. iOS第三方Api及常用框架总结
  7. git学习(三):版本控制
  8. 【CentOS】磁盘管理与vim编译器
  9. CSS3动画里的过渡效果
  10. python中定义函数和参数的传递问题