Pregunta

Tiene problemas convertir una Ilayer a un IPolygon.

estoy desarrollando una barra de herramientas de ArcMap y agarro una capa a través del código de la mesa auxiliar de contenidos. La capa es un polígono, pero el código no lo convertirá en un IPolygon.

Alguien me puede ayudar? Este es el código que estoy utilizando para tratar de convertirlo en un IPolygon ...

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

Puedo hacer esto:

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

y que funciona, pero no convertirlo en un IPloygon ..

¿Fue útil?

Solución

Si desea acceder a las geometrías contenidas en una capa shapefile, usted tiene que conseguir la clase de entidad de la capa. Esta es una propiedad de la interfaz IFeatureLayer, por lo que tendrá que emitir su capa (que es un iLayer) primero:

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

Si usted tiene una clase de entidad, se puede obtener características de índice (lento) o mediante la definición de un cursor en la clase de entidad (esto es rápido y la manera preferida cuando se desea mucha manija de funciones de búsqueda para IFeatureCursor;. ESRI docs usualy vienen con buenos fragmentos de código).

Si la clase de entidad contiene una sola función, o si sólo desea una función, puede utilizar el método GetFeature:

IFeature MyFeature = FClass.GetFeature(0);

Ahora ya está casi allí. La geometría de una función está escondido en su propiedad Shape:

IPolygon MyPoly = MyFeature.Shape as IPolygon;

Se necesita el molde extra porque la propiedad es una forma de IPolygon, que es un IGeometry más específico.

Otros consejos

El iLayer se compone de varios polígonos. Pensar en una capa como una tabla de SQL y una función como una fila en la tabla. El IPolygon se referirá a la geometría que conforma una característica individual. Es posible que necesite elenco que iLayer como algo parecido a un IFeatureLayer para obtener acceso a las propiedades correctas / métodos para acceder a las características individuales dentro de su capa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top