Aggiunta di GeoPackage ad ArcGIS Desktop utilizzando ArcObjects
Oct 27 2020
Come si aggiunge un livello GeoPackage ad ArcGIS Desktop utilizzando il codice ArcObjects (preferibilmente c #)?
Dalla documentazione ESRI:
WorkspaceFactoryProgID identifica il ProgID dell'oggetto WorkspaceFactory utilizzato per aprire quella particolare area di lavoro.
Di seguito è riportato un elenco di alcuni dei possibili 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
L'uso della parola "alcuni" mi fa pensare che potrebbero esserci più fabbriche disponibili. Puoi sicuramente aggiungere layer GeoPackage usando il pulsante AddData in ArcMap.
Risposte
3 Hornbydd Oct 28 2020 at 14:34
Di seguito è riportato del codice VBA che caricherà una FeatureClass in un geoPackage in una mappa in ArcMap. Devi accedervi tramite 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