1

Ilayer を IPolygon に変換する際に問題が発生しました。

ArcMap のツールバーを開発しており、サイド テーブルのコンテンツからコードを介してレイヤーを取得しています。Layer は Polygon ですが、コードはそれを 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 に変換しないだけで動作します。

4

2 に答える 2

5

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

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

フィーチャ クラスがある場合は、インデックス (低速) またはフィーチャ クラスでカーソルを定義することによってフィーチャを取得できます (これは高速であり、多くのフィーチャを処理する場合に推奨される方法です。IFeatureCursor を検索してください。ESRI ドキュメントは通常付属しています)。適切なコード スニペットを使用)。

フィーチャ クラスに含まれるフィーチャが 1 つだけの場合、または必要なフィーチャが 1 つだけの場合は、GetFeature メソッドを使用できます。

IFeature MyFeature = FClass.GetFeature(0);

今、あなたはほとんどそこにいます。フィーチャのジオメトリは、その Shape プロパティに隠されています。

IPolygon MyPoly = MyFeature.Shape as IPolygon;

Shape プロパティはより具体的な IGeometry である IPolygon であるため、追加のキャストが必要です。

于 2010-05-17T17:27:59.693 に答える
1

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

于 2010-05-17T16:04:30.377 に答える