admin管理员组

文章数量:1596328

用gp调用eliminate工具实现碎小图斑消除是很高级的工具,但是在调用的时候必须是高级权限advanced(即以前版本的arcinfo权限),这在开发ARCGIS engine时候未免为难,如果没有购买arcgis桌面版,就不可以使用这个gp工具。


那么能不能使用arcgis engine提供的接口来实现这个功能呢,当然可以。arcgis desktop中的几乎所有功能都是可以使用AO的接口来完成的,AO是arcgis的基础。
小小研究一把,终于使用AE接口实现了eliminate功能,这里将思路分享给大家:
在使用toolbox中的eliminate的时候,首先的必需选择一个layer中的要素,那么这些要素才能够融合到大的图斑中,如果默认是融合到与所选碎小图斑边界接触最长的那个图斑中。而在调用gp的时候,首先需要用makelayer,然后再SelectLayer。
这样分析就明显得到,要先选择要素集嘛。选完要素集做什么,当然就是合并。合并完就ok了。
所以具体步骤就是这样: 1、获取要素集。 2、根据要素集遍历每一个要素。 3、每一个要素选择其相邻的要素集。 4、遍历相邻要素集,获取相邻边界最长的要素,将要素与其最长交界的要素合并。保存,完毕。
大概说一下所用关键接口: 1、ISelectionSet这个接口用来放选择要素集的,它肯定是从IFeatureClass中来的,中间需要IFeatureSelection接口过渡。 2、ICursor、IFeatureCursor,这是用来遍历的,所以游标也是必须的。IQueryFilter、ISpatialFilter,获取要素必须有。 3、再往下就是IFeature、IGeometry。这些要素和几何图形的接口也是必需品。当然还有拓扑处理接口也是少不了了。 如果要是用相邻最大面积融合,那就更简单,找相交最大面积要素就是了。
下一篇准备讲一下高级工具smoothPolygon实现的思路。

本文标签: 思路高级工具ArcGISEliminate