Thêm GeoPackage vào ArcGIS Desktop bằng ArcObjects
Oct 27 2020
Làm cách nào để thêm lớp GeoPackage vào ArcGIS Desktop bằng mã ArcObjects (tốt nhất là c #)?
Từ tài liệu ESRI:
WorkspaceFactoryProgID xác định ProgID của đối tượng WorkspaceFactory được sử dụng để mở không gian làm việc cụ thể đó.
Dưới đây là danh sách một số WorkspaceFactoryProgIDs có thể có:
esriDataSourcesGDB.AccessWorkspaceFactory
esriDataSourcesFile.ArcInfoWorkspaceFactory
esriDataSourcesFile.CadWorkspaceFactory
esriDataSourcesGDB.FileGDBWorkspaceFactory
esriDataSourcesOleDB.OLEDBWorkspaceFactory
esriDataSourcesFile.PCCoverageWorkspaceFactory
esriDataSourcesRaster.RasterWorkspaceFactory
esriDataSourcesGDB.SdeWorkspaceFactory
esriDataSourcesFile.ShapefileWorkspaceFactory
esriDataSourcesOleDB.TextFileWorkspaceFactory
esriDataSourcesFile.TinWorkspaceFactory
esriDataSourcesFile.VpfWorkspaceFactory
Việc sử dụng từ "một số" khiến tôi nghĩ rằng có thể có nhiều nhà máy hơn. Bạn chắc chắn có thể thêm các lớp GeoPackage bằng nút AddData trong ArcMap.
Trả lời
3 Hornbydd Oct 28 2020 at 14:34
Dưới đây là một số mã VBA sẽ tải FeatureClass trong geoPackage vào bản đồ trong ArcMap. Bạn cần phải truy cập nó thông qua 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