无法将Ilayer转换为IPolygon。

我正在开发ArcMap的工具栏,并通过内容侧面表中的代码获取图层。图层是多边形,但是代码不会将其转换为IPolygon。

谁能帮我吗?这是我用来尝试将其转换为IPolygon的代码...

 IPolygon poly = m_document.Maps.get_Item(0).get_Layer(0) as IPolygon;


我可以做这个:

 ILayer layer = m_document.Maps.get_Item(0).get_Layer(0) as ILayer;


而且有效,只是不将其转换为IPloygon。

最佳答案

如果要访问shapefile图层中包含的几何,则必须获取图层的要素类。这是IFeatureLayer接口的属性,因此您必须首先转换图层(这是ILayer):

IFeatureLayer FLayer = layer as IFeatureLayer;
IFeatureClass FClass = FLayer.FeatureClass;


如果您有要素类,则可以按索引(缓慢)或通过在要素类上定义光标来获取要素(这是快速的方法,当您要处理大量要素时,这是首选方法。搜索IFeatureCursor; ESRI文档通常会出现带有良好的代码段)。

如果要素类仅包含一项功能,或者仅希望一项功能,则可以使用GetFeature方法:

IFeature MyFeature = FClass.GetFeature(0);


现在您快到了。要素的几何隐藏在其Shape属性中:

IPolygon MyPoly = MyFeature.Shape as IPolygon;


需要额外的转换,因为Shape属性是IPolygon,这是一个更具体的IGeometry。

09-13 11:14