同一图层多边形裁剪

0 投票
我想实现在现有的某一面图层中增加一个面,然后将这个面与现有这一图层中原有的面进行裁剪,裁去重叠的部分,这应该怎么实现?用什么方法?
12月 29, 2016 分类:  1207次浏览 | 用户: zjl 才疏学浅 (14 分)

1个回答

0 投票
 
已采纳
先将图层中的面取出来,然后使用Geometrist.HasIntersection判断是否有重叠的区域,如果有则使用Geometrist.Erase擦除重复的部分,将得到的数据重新加入到原来的数据,删除原本的面。
12月 29, 2016 用户: 周仕斌 名扬四海 (1,667 分)
采纳于 12月 30, 2016 用户:zjl

​我绘制了多边形,循环与图层中的多边形进行相交判断,与相交的多边形进行了一次erase操作之后,recordset.MoveNext(),获取到的id值为0,导致geometryTarget为空报错。

问题一:为什么erase之后recordset到下一条记录,获取到id会为0(LocalConstsFields.ID对应的就是SmID字段;

问题二:进行了Geometrist.Erase(geometrySearch,geometryTarget)操作,保存到记录集中,发现并没有进行erase,保存的多边形与原多边形一样;

请问我这两个问题出在哪?谢谢

1、报错是报参数为null,请检查两个对象的值,另外请查询看下数据集中是否包含这个ID

2、需要添加擦除后的对象,Erase方法会返回一个新对象,而不是添加原本的对象
...