用一个不规则多边形擦除另一个多边形,不想用Erase工具,用接口如何实现?

用一个不规则多边形擦除另一个多边形,不想用Erase工具,用接口如何实现?
已邀请:

朱新颖

赞同来自:

【解决办法】:
可以使用ITopologicalOperator.Difference方法。
1,将被擦除的IPolygon转为ITopologicalOperator,用来擦除的IPolygon作为Difference的参数传入,返回的IGeometry即为只属于第一个IPolygon而不属于第二个IPolygon的部分。
2,将获取到的IGeometry重新赋予第一个IPolygon对应的IFeature,保存即实现了擦除的功能。
IMap map = axMapControl1.Map;
IFeatureLayer pFeatureLayer = map.get_Layer(0) as IFeatureLayer;
IFeatureClass FC = pFeatureLayer.FeatureClass;
IFeature fea = FC.GetFeature(1);
IPolygon poly = fea.Shape as IPolygon;//被擦除的IPolygon
IPolygon polyCut = FC.GetFeature(2).Shape as IPolygon;//用来擦除的IPolygon
ITopologicalOperator topo = poly as ITopologicalOperator;
IGeometry geo = topo.Difference(polyCut);
fea.Shape = geo;
fea.Store();

要回复问题请先登录注册