FAQ
VPFデータをジオデータベースへ変換する方法

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

【概要】

次のサンプル・コードはVPFデータセットをパーソナルジオデータベース・データセットへ変換する方法です。


【手順】

  1. ArcMapを開きます。

  2. 新規UIButtonControlを作成します。

  3. UIButtonControlを右クリックし、「ソースの表示」を選択します。

  4. UIButtonControlのクリック・イベントに次のコードをペーストします。必要に応じてコード内のパス名やファイル名を変更してください。


Sub vpf2gdb()
  




'入力WorkspaceFactoryを作成します。
  Dim pInWorkspaceFact As IWorkspaceFactory
  Set pInWorkspaceFact = New VpfWorkspaceFactory

  'ワークスペースを開くためにPropertySetを作成します。
  Dim pInPropSet As IPropertySet
  Set pInPropSet = New PropertySet
  pInPropSet.SetProperty "database", "E:\WORK\UVMAP\UVMAP"

  'ワークスペースを開きます。
  Dim pInWorkspace As IWorkspace
  Set pInWorkspace = pInWorkspaceFact.Open(pInPropSet, 0)

  Dim pFeatWorkspace As IFeatureWorkspace
  Set pFeatWorkspace = pInWorkspace

  'フィーチャデータセットを開きます。
  Dim pFeatDataset As IFeatureDataset
  Set pFeatDataset = pFeatWorkspace.OpenFeatureDataset("baydhabo:trans")

  'DatasetNameを設定します。
  Dim pInDatasetName As IDatasetName
  Set pInDatasetName = pFeatDataset.FullName

  '出力WorkspaceFactoryを作成します。
  Dim pOutWorkspaceFactory As IWorkspaceFactory
  Set pOutWorkspaceFactory = New AccessWorkspaceFactory

  '


ワークスペースを開くためにPropertySetを作成します。



  Dim pOutPropSet As IPropertySet
  Set pOutPropSet = New PropertySet
  pOutPropSet.SetProperty "Database", "e:\work"

  '出力WorkspaceNameを作成します。
  Dim pOutWorkspaceName As IWorkspaceName
  Set pOutWorkspaceName = pOutWorkspaceFactory.Create("e:\work", _

  "VPFtoGDB", pOutPropSet, 0)
Dim pOutFeatDatasetName As IFeatureDatasetName Set pOutFeatDatasetName = New FeatureDatasetName Dim pOutDatasetName As IDatasetName Set pOutDatasetName = pOutFeatDatasetName Set pOutDatasetName.WorkspaceName = pOutWorkspaceName pOutDatasetName.Name = pInDatasetName.Name 'IFeatureDatasetNameへQIします。 Dim pFeatDatasetName As IFeatureDatasetName Set pFeatDatasetName = pInDatasetName Dim pEnumDS_FCName As IEnumDatasetName Set pEnumDS_FCName = pFeatDatasetName.FeatureClassNames Dim pDS_FCName As IDatasetName Set pDS_FCName = pEnumDS_FCName.Next 'コレクション内の各フィーチャクラスを変換します。 Do While Not pDS_FCName Is Nothing 'IFeatureClassNameへQIします。 Dim pFeatClassName As IFeatureClassName Set pFeatClassName = pDS_FCName 'INameへQIします。 Dim pName As IName Set pName = pFeatClassName 'フィーチャクラスを開きます。 Dim pFeatClass As IFeatureClass Set pFeatClass = pName.Open 'IDatasetへQIします。 Dim pTempDataset As IDataset Set pTempDataset = pFeatClass 'フィールド名が有効かどうか確認するためにIFieldCheckerを使用します。 Dim pFields As IFields Dim pValidatedFields As IFields Dim pFieldChecker As IFieldChecker 'フィーチャクラスからFieldsを取得します。 Set pFields = pFeatClass.Fields Set pFieldChecker = New FieldChecker pFieldChecker.Validate pFields, Nothing, pValidatedFields '新規出力FeatureClassNameオブジェクトを作成します。 Dim pOutFeatClassName As IFeatureClassName Set pOutFeatClassName = New FeatureClassName 'IDatasetNameへQIします。 Dim pOutDataset_FCName As IDatasetName Set pOutDataset_FCName = pOutFeatClassName 'FeatClassNameのNameを設定します。 pOutDataset_FCName.Name = pTempDataset.Name Dim pFeatDataConv As IFeatureDataConverter Set pFeatDataConv = New FeatureDataConverter pFeatDataConv.ConvertFeatureClass pFeatClassName, Nothing, _ pOutFeatDatasetName, pOutFeatClassName, Nothing,pValidatedFields, "", 1000, 0 Set pDS_FCName = pEnumDS_FCName.Next Loop End Sub

メタデータ

機能

種類

製品