PIE-Engine 上传矢量文件“Self-intersection at or near point [xx.xxxxx xx.xxxxxx] 报错解决方案
报错原因是交叉点或者点过于接近
1.首先测试点过于接近
采用的方法是使用arcgistoolbox内部的简化面工具
通过1000、500、200、100、50m容差测试,对于报错解决反应不稳定,在高容差时报错少,低容差时报错多
由于在测试时发现内部空心岛的点数量不会减少于是假设不稳定是由于空心岛内点
**
2.测试面要素中空心岛影响
**
所使用的是toolbox内的消除面部件工具
设置了面积所占百分比的条件,消除了面要素内小于百分之5总面积的空心岛海,但仍然会报错。在观察边界时发现有的空心岛并没有被消除,且点位与报错点吻合,测试交叉点
3.测试交叉点
交叉点
通过编辑器内编辑点进行修改
发现报错问题得到解决
结论:
湖泊边界的上传错误是因为存在面要素内部的空心岛边界与面要素边界重合,且用一个点(或公用边?),修改此处即可
在创建面要素时是通过创建点要素构建链表结构来存储的。每标记一个点即创造一个结构体(包含上指针、坐标值、下指针),而在交叉点情况时,交叉点同时具有两个上指针(指向面边界上一点、空心岛最后一点)和下指针(空心岛第一点和面要素下一点),于是上传到pie-engine就会发生报错。
同时arcgis把具有交叉点的空心岛看作面要素边界在1测试中,由于的容差设置的大,空心岛被判定为面要素边界得到简化,从而能够上传,在测试2中具有交叉点的空心岛被判定为边界,而不会被消除