1

将 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 ..

4

2 回答 2

5

如果要访问 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,所以需要额外的转换。

于 2010-05-17T17:27:59.693 回答
1

ILayer 将由多个多边形组成。将图层视为 sql 表,将要素视为该表中的一行。IPolygon 将指构成单个特征的几何体。您可能需要将该 ILayer 转换为 IFeatureLayer 之类的东西,以访问正确的属性/方法来访问图层中的各个功能。

于 2010-05-17T16:04:30.377 回答