Agregar GeoPackage a ArcGIS Desktop usando ArcObjects
Oct 27 2020
¿Cómo agrego una capa GeoPackage a ArcGIS Desktop usando código ArcObjects (preferiblemente c #)?
De la documentación de ESRI:
WorkspaceFactoryProgID identifica el ProgID del objeto WorkspaceFactory que se utiliza para abrir ese espacio de trabajo en particular.
Aquí hay una lista de algunos de los posibles 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
El uso de la palabra "algunos" me hace pensar que podría haber más fábricas disponibles. Ciertamente, puede agregar capas de GeoPackage usando el botón AddData en ArcMap.
Respuestas
3 Hornbydd Oct 28 2020 at 14:34
A continuación se muestra un código VBA que cargaría un FeatureClass en un geoPackage en un mapa en ArcMap. Necesitas acceder a él a través de 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