gpt4 book ai didi

c# - 如何在 ArcObjects 中将 ILayer 转换为 IPolygon

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:17 26 4
gpt4 key购买 nike

无法将 Ilayer 转换为 IPolygon。

我正在为 ArcMap 开发一个工具栏,我通过代码从副目录中获取一个图层。 Layer 是一个多边形,但代码不会将其转换为 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 接口(interface)的一个属性,因此您必须先转换您的层(这是一个 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。

关于c# - 如何在 ArcObjects 中将 ILayer 转换为 IPolygon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com