时遇到一个转换到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 ..

有帮助吗?

解决方案

如果您要访问包含在shape文件层的几何形状,你必须得到图层的要素类。这是IFeatureLayer接口的属性,所以你必须投下您层(这是一个ILAYER)第一名:

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

如果你有一个要素类,你可以通过索引(慢),或者通过在要素类定义游标功能(这是快速的首选方式,当你要处理大量的功能搜索IFeatureCursor; ESRI文档usualy配备好的代码片段)。

如果您的要素类仅包含一个功能,或者如果你只想要一个功能,您可以使用GetFeature方法:

IFeature MyFeature = FClass.GetFeature(0);

现在你几乎没有。的特征的几何形状在其形状属性局促:

IPolygon MyPoly = MyFeature.Shape as IPolygon;

时,所需的额外铸造因为Shape属性是一个IPolygon,这是一个更具体的IGeometry。

其他提示

在ILAYER将作出多个多边形组成。想想一个层作为SQL表和特征,因为该表中的行。该IPolygon将指作出了个人特征的几何形状。您可能需要演员,其中的iLayer的东西像一个IFeatureLayer获得访问权的属性/方法您层内访问各个功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top