FAQ
データセットのコンバート

ナレッジ番号:2672 | 登録日:2023/05/29 | 更新日:2023/12/28

概要

FeatureDataConverter クラスを使用することで、テーブル、フィーチャクラス、フィーチャ データセットをコピーしたり別のフォーマットに変換したりすることができます。このサンプルでは、既存のフィーチャクラスを別のフォーマットのフィーチャクラスに変換する方法を示します。

コード

既存のフィーチャクラスを別のフォーマットのフィーチャクラスに変換

シェープファイルをファイル ジオデータベースのフィーチャクラスに変換するサンプルです。

以下のパスに変換元の入力データセットとして、シェープファイルを配置し、コードを実行してください。

入力データセット:C:\Temp\Folder\InputFeatureClass.shp

//入力ワークスペースネームの作成
IWorkspaceName inputWorkspaceName = new WorkspaceNameClass();
inputWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";
inputWorkspaceName.PathName = @"C:\Temp\Folder";        //入力ワークスペースのフルパス名

//入力フィーチャクラスネームの作成
IFeatureClassName inputFeatureClassName = new FeatureClassNameClass();
IDatasetName inputDatasetName = (IDatasetName)inputFeatureClassName;
inputDatasetName.WorkspaceName = inputWorkspaceName;
inputDatasetName.Name = "InputFeatureClass";            //フィーチャクラス名

//出力ワークスペースネームの作成
IWorkspaceName outputWorkspaceName = new WorkspaceNameClass();
outputWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory";  //ファイル ジオデータベースの場合
outputWorkspaceName.PathName = @"C:\Temp\Output.gdb";   //出力ワークスペースのフルパス名
                        
//出力フィーチャクラスネームの作成
IFeatureClassName outputFeatureClassName = new FeatureClassNameClass();
IDatasetName outputDatasetName = (IDatasetName)outputFeatureClassName;
outputDatasetName.WorkspaceName = outputWorkspaceName;
outputDatasetName.Name = "OutputFeatureClassName";  //出力フィーチャクラス名

//変換するフィーチャの絞り込み(この例では絞り込みは特に行わない。)
IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = "";

//フィーチャクラスのコンバート
IFeatureDataConverter pFeatureDataConverter = new FeatureDataConverterClass();
pFeatureDataConverter.ConvertFeatureClass(inputFeatureClassName,queryFilter, null, outputFeatureClassName,null, null, "", 1000, 0);
'入力ワークスペースネームの作成
Dim inputWorkspaceName As IWorkspaceName = New WorkspaceNameClass()
inputWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"
inputWorkspaceName.PathName = "C:\Temp\Folder" '入力ワークスペースのフルパス名

'入力フィーチャクラスネームの作成
Dim inputFeatureClassName As IFeatureClassName = New FeatureClassNameClass()
Dim inputDatasetName As IDatasetName = DirectCast(inputFeatureClassName, IDatasetName)
inputDatasetName.WorkspaceName = inputWorkspaceName
inputDatasetName.Name = "InputFeatureClass"  'フィーチャクラス名

'出力ワークスペースネームの作成
Dim outputWorkspaceName As IWorkspaceName = New WorkspaceNameClass()
outputWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory"

'ファイル ジオデータベースの場合
outputWorkspaceName.PathName = "C:\Temp\Output.gdb"     '出力ワークスペースのフルパス名

'出力フィーチャクラスネームの作成
Dim outputFeatureClassName As IFeatureClassName = New FeatureClassNameClass()
Dim outputDatasetName As IDatasetName = DirectCast(outputFeatureClassName, IDatasetName)
outputDatasetName.WorkspaceName = outputWorkspaceName
outputDatasetName.Name = "OutputFeatureClassName"     '出力フィーチャクラス名

'変換するフィーチャの絞り込み(この例では絞り込みは特に行わない。)
Dim queryFilter As IQueryFilter = New QueryFilterClass()
queryFilter.WhereClause = ""

'フィーチャクラスのコンバート
Dim pFeatureDataConverter As IFeatureDataConverter = New FeatureDataConverterClass()
pFeatureDataConverter.ConvertFeatureClass(inputFeatureClassName, queryFilter, Nothing, outputFeatureClassName, Nothing, Nothing,"", 1000, 0)

制限

IFeatureDataConverter では、以下のデータセットを変更することはできません。

  • ジオメトリック ネットワーク
  • トポロジ
  • ネットワーク データセット
  • リレーションシップ クラス
  • ネットワーク フィーチャクラス
  • アノテーション、ディメンション フィーチャクラス
  • クラス エクステンションを伴うフィーチャクラス
  • サブタイプ、ドメイン、デフォルト値

参考

IFeatureDataConverter Interface (ArcObjects API Reference for .NET)

メタデータ

種類

製品