高级工具smoothPolygon实现的思路

在arcgis工具栏中有smoothPolygon(平滑面)的工具,是将锯齿状的面图层变的更平滑的工具。这个工具在使用的时候输入平滑参数,就可以得到想要的平滑面。平滑过程中,可以选择不同平滑方式,其中一项是将平滑的拓扑错误处理掉的,即可以修正重叠和缝隙。那么这个工具室怎么实现的呢?


首先我调用过smoothPolygon这个gp。smoothPolygon的gp属于高级工具,必须具有AE企业版的license才能使用。

在接口IPolygon中,提供了smooth这个方法,首先用这个接口试一下,出来之后发现:面互相压盖,中间还有缝隙。怎么解决呢?我思考了一下,最终将问题解决,思路如下:

1、面图层生成内部点,并将面的属性信息一一赋值给对应的点。这个问题不难解决,一个IArea接口就解决了。

2、面图层生成线图层。用到的是IFeatureConstruction接口的ConstructLinesFromCursor方法。

3、平滑线,IPolyline接口的smooth方法。

4、LineToPolygon,还是IFeatureConstruction接口,方法是ConstructPolygonsFromFeaturesFromCursor或者ConstructPolygonsFromFeatures。在这两个方法中有一个参数labels,说明是The label feature class is optional and can specify an attribute source for the constructed polygons.应该是能够将该图层的属性赋值给面吧,可是我将1中生成的点图层传入,还是没有得到想要的结果,如果能够实现,其实就不用往下做了,到此功能已经实现。

5、既然没有实现,只好另外想办法,将1中的点图层的属性传入平滑完毕的面中。使用了ISpatialJoin接口,这个接口是ArcMapUI类中的,需要desktop的license。方法是JoinNearest,这个功能其实可以自己考虑写一个。

至此。smoothPolygon的功能实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值