FAQ
マップにフィーチャ レイヤーを追加する方法

ナレッジ番号:5561 | 登録日:2023/07/27 | 更新日:2024/11/21

概要

ファイル ジオデータベースのフィーチャクラスからフィーチャ レイヤーを作成し、マップに追加する方法を示します。

コード

1.ファイル ジオデータベースへのアクセス

ワークスペースへアクセスするにはフォーマットに応じた WorkspaceFactory のサブクラスをインスタンス化し、IWorkspaceFactory::OpenFromFile メソッドを使用します。

string path = @"C:\myData\myFGDB.gdb";
Type factoryType = System.Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
IWorkspaceFactory pWorkspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(path, 0);
Dim path As String = "C:\myData\myFGDB.gdb" 
Dim factoryType As Type = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory") 
Dim pWorkspaceFactory As IWorkspaceFactory = CType(Activator.CreateInstance(factoryType), IWorkspaceFactory) 
Dim pWorkspace As IWorkspace = pWorkspaceFactory.OpenFromFile(path, 0)

※ファイル ジオデータベース以外のワークスペースへアクセスする方法は、以下のアンサー ページをご参考ください。

ワークスペースへのアクセス

エンタープライズ ジオデータベースへのアクセス

2.フィーチャクラスへのアクセス

ファイル データベース内のフィーチャクラスへアクセスするには、IWorkspace から IFeatureWorkspace へキャストし、IFeatureWorkspace::OpenFeatureClass メソッドを使用します。

IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
//OpenFeatureClass の引数には、フィーチャクラス名を指定します。
IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass("sample");
Dim pFeatureWokrpace As IFeatureWorkspace = pWorkspace
'OpenFeatureClass の引数には、フィーチャクラス名を指定します。
Dim pFeatureClass As IFeatureClass = pFeatureWokrpace.OpenFeatureClass("sample")

3.フィーチャ レイヤーの作成

新規に FeatureLayer オブジェクトを作成し、上記で作成した FeatureClass オブジェクトを FeatureClass プロパティに設定します。また IFeatureLayer::Name プロパティを使用して、[コンテンツ] ウィンドウに表示される文字列を設定します。

IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name = "サンプル";
pFeatureLayer.Visible = true;
Dim pFeatureLayer As IFeatureLayer = New FeatureLayer
pFeatureLayer.FeatureClass = pFeatureClass
pFeatureLayer.Name = "サンプル"
pFeatureLayer.Visible = True

4.マップにフィーチャ レイヤーを追加

マップにレイヤーを追加するには、IMap::AddLayer メソッドを使用します。今回は、アクティブなマップ(データ フレーム)にレイヤーを追加します。

IMxDocument pMxDocument = ArcMap.Document;
IMap pMap = pMxDocument.FocusMap;
pMap.AddLayer((ILayer)pFeatureLayer);
pMxDocument.ActiveView.Refresh();
Dim pMxdocument As IMxDocument = My.ArcMap.Document
Dim pMap As IMap = pMxdocument.FocusMap
pMap.AddLayer(pFeatureLayer)
pMxdocument.ActiveView.Refresh()

メタデータ

機能

種類

製品