ArcObjects를 사용하여 ArcGIS Desktop에 GeoPackage 추가

Oct 27 2020

ArcObjects 코드 (바람직하게는 C #)를 사용하여 ArcGIS Desktop에 GeoPackage 레이어를 추가하려면 어떻게하나요?

ESRI 문서에서 :

WorkspaceFactoryProgID는 특정 작업 공간을 여는 데 사용되는 WorkspaceFactory 객체의 ProgID를 식별합니다.

다음은 가능한 WorkspaceFactoryProgID의 일부 목록입니다.

esriDataSourcesGDB.AccessWorkspaceFactory
esriDataSourcesFile.ArcInfoWorkspaceFactory
esriDataSourcesFile.CadWorkspaceFactory 
esriDataSourcesGDB.FileGDBWorkspaceFactory
esriDataSourcesOleDB.OLEDBWorkspaceFactory
esriDataSourcesFile.PCCoverageWorkspaceFactory
esriDataSourcesRaster.RasterWorkspaceFactory
esriDataSourcesGDB.SdeWorkspaceFactory
esriDataSourcesFile.ShapefileWorkspaceFactory
esriDataSourcesOleDB.TextFileWorkspaceFactory
esriDataSourcesFile.TinWorkspaceFactory
esriDataSourcesFile.VpfWorkspaceFactory

"some"이라는 단어를 사용하면 더 많은 공장이있을 수 있다고 생각합니다. ArcMap의 데이터 추가 버튼을 사용하여 GeoPackage 레이어를 추가 할 수 있습니다.

답변

3 Hornbydd Oct 28 2020 at 14:34

다음은 geoPackage의 FeatureClass를 ArcMap의지도에로드하는 VBA 코드입니다. 을 통해 액세스해야합니다 SqlWorkspaceFactory.

Public Sub AddDataToMap()
    ' Path to geopackage
    Dim sPath As String
    Let sPath = "C:\Scratch\test.gpkg"
    
    ' Create workspace factory
    Dim pWSFac As IWorkspaceFactory2
    Set pWSFac = New esriDataSourcesGDB.SqlWorkspaceFactory
    
    ' Open workspace
    Dim pWS As IWorkspace
    Set pWS = pWSFac.OpenFromFile(sPath, 0)
    
    ' cast into Featureworkspace
    Dim pFWS As IFeatureWorkspace
    Set pFWS = pWS
    
    ' open FeatureClass
    Dim pFC As IFeatureClass
    Set pFC = pFWS.OpenFeatureClass("main.fcLines")
    
    ' Create layer
    Dim pFl As IFeatureLayer
    Set pFl = New FeatureLayer
    Set pFl.FeatureClass = pFC
    pFl.Name = "Lines dataset"
    
    ' Add to current map and refresh
    Dim pmxd As IMxDocument
    Set pmxd = ThisDocument
    pmxd.FocusMap.AddLayer pFl
    pmxd.ActiveView.Refresh
    pmxd.UpdateContents        
End Sub