Come convertire ilayer a IPolygon In ArcObjects
-
27-09-2019 - |
Domanda
Hai problemi conversione di un Ilayer a un IPolygon.
sto sviluppando una barra degli strumenti per ArcMap e ho afferrare uno strato tramite codice dalla tabella lato dei contenuti. Il livello è un poligono, ma il codice non verrà convertito in un IPolygon.
Qualcuno può darmi una mano? Questo è il codice che sto usando per cercare di convertirlo in un IPolygon ...
IPolygon poly = m_document.Maps.get_Item(0).get_Layer(0) as IPolygon;
Posso fare questo:
ILayer layer = m_document.Maps.get_Item(0).get_Layer(0) as ILayer;
e che le opere, non solo convertirlo in un IPloygon ..
Soluzione
Se si desidera accedere alle geometrie contenute in uno strato shapefile, dovete ottenere feature class del livello. Questa è una proprietà dell'interfaccia IFeatureLayer, quindi dovrete lanciare il vostro livello (che è un ilayer) prima:
IFeatureLayer FLayer = layer as IFeatureLayer;
IFeatureClass FClass = FLayer.FeatureClass;
Se si dispone di una classe di entità, è possibile ottenere caratteristiche di indice (lenta) oppure definendo un cursore sulla classe di entità (questo è veloce e il modo preferito quando si vuole un sacco manico di funzioni di ricerca per IFeatureCursor;. ESRI docs usualy sono dotati di frammenti di codice buoni).
Se la feature class contiene una sola funzione, o se si desidera solo una funzione, è possibile utilizzare il metodo GetFeature:
IFeature MyFeature = FClass.GetFeature(0);
Ora ci sei quasi. la geometria di una funzione è nascosto nella sua proprietà Shape:
IPolygon MyPoly = MyFeature.Shape as IPolygon;
Il cast supplementare è necessaria perché la proprietà Shape è un IPolygon, che è un IGeometry più specifica.
Altri suggerimenti
L'ilayer sarà costituito da più poligoni. Pensare a un livello come tabella SQL e una funzione come una riga nella tabella. L'IPolygon farà riferimento alla geometria che compone una caratteristica individuale. Potrebbe essere necessario cast che ilayer come qualcosa di simile a un IFeatureLayer per ottenere l'accesso alle giuste proprietà / metodi per accedere alle singole funzioni all'interno del tuo livello.