質問

ilayerをイポリゴンに変換するのに苦労しています。

私は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に変換するのではありません。

役に立ちましたか?

解決

ShapeFileレイヤーに含まれるジオメトリにアクセスする場合は、レイヤーの機能クラスを取得する必要があります。これはifeaturelayerインターフェイスのプロパティであるため、最初にレイヤー(ilayer)をキャストする必要があります。

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

機能クラスがある場合、インデックス(スロー)で機能を取得するか、機能クラスでカーソルを定義することで機能することができます(これは、多くの機能を処理するときに高速で好ましい方法です。IfeatureCursorを検索します。優れたコードスニペット付き)。

機能クラスに1つの機能が含まれている場合、または1つの機能が必要な場合は、GetFeatureメソッドを使用できます。

IFeature MyFeature = FClass.GetFeature(0);

今、あなたはほとんどそこにいます。機能のジオメトリは、その形状のプロパティに隠れています。

IPolygon MyPoly = MyFeature.Shape as IPolygon;

ShapeプロパティはIpolygonであり、より具体的なイゴイオメトリーであるため、追加のキャストが必要です。

他のヒント

ilayerは複数のポリゴンで構成されます。レイヤーをSQLテーブルと考え、そのテーブルの列として機能を考えてください。 Ipolygonは、個々の機能を構成するジオメトリを指します。そのilayerをifeaturelayerのようなものとしてキャストして、適切なプロパティ/メソッドにアクセスして、レイヤー内の個々の機能にアクセスする必要がある場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top