Frage

Problem hat, eine Ilayer zu einem IPolygon konvertieren.

Ich bin eine Symbolleiste für ArcMap Entwicklung und ich greife eine Schicht über den Code von der Seite Inhaltsverzeichnis. Die Schicht ist ein Polygon, aber der Code wird es nicht zu einem IPolygon konvertieren.

Kann mir jemand helfen aus? Dies ist der Code, den ich verwende, um zu versuchen und zu wandeln es in ein IPolygon ...

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

Ich kann dies tun:

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

Und das funktioniert, nur nicht auf einen IPloygon Umwandlung ..

War es hilfreich?

Lösung

Wenn Sie die Geometrien in einer Shape-Datei Schicht enthalten zugreifen möchten, müssen Sie die Feature-Class der Ebene erhalten. Dies ist eine Eigenschaft der IFeatureLayer-Schnittstelle, so dass Sie Ihre Schicht gegossen haben werden (das ist ein ilayer) zuerst:

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

Wenn Sie einen Feature-Class haben, können Sie Funktionen von Index erhalten (langsam) oder durch einen Cursor auf dem Objektklasse definieren (diese schnell ist und die bevorzugte Art und Weise, wenn Sie Greifen viele Funktionen wollen für IFeatureCursor Suche;. ESRI docs usualy kommen mit guter Code-Snippets).

Wenn die Feature-Class nur ein Merkmal enthält, oder wenn Sie nur ein Merkmal möchten, können Sie die GetFeature Methode verwenden:

IFeature MyFeature = FClass.GetFeature(0);

Jetzt sind Sie fast da. Eine Geometrie-Funktion ist in seiner Form Eigenschaft versteckt:

IPolygon MyPoly = MyFeature.Shape as IPolygon;

Die extra gegossen wird benötigt, weil die Shape-Eigenschaft ein IPolygon ist, die eine spezifischere IGeometry ist.

Andere Tipps

Die ilayer wird aus mehreren Polygonen werden. Denken Sie an eine Schicht als SQL-Tabelle und eine Funktion als eine Zeile in der Tabelle. Die IPolygon wird auf die Geometrie beziehen, die ein individuelles Merkmal bildet. Sie können Guss müssen, dass ilayer als so etwas wie ein IFeatureLayer Zugriff auf die richtigen Eigenschaften / Methoden zu erhalten, die einzelnen Funktionen innerhalb Ihrer Ebene zugreifen zu können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top