การเพิ่ม GeoPackage ไปยัง ArcGIS Desktop โดยใช้ ArcObjects

Oct 27 2020

ฉันจะเพิ่มเลเยอร์ GeoPackage ไปยัง ArcGIS Desktop โดยใช้รหัส ArcObjects ได้อย่างไร (ควรเป็น c #)

จากเอกสาร ESRI:

WorkspaceFactoryProgID ระบุ ProgID ของอ็อบเจ็กต์ WorkspaceFactory ที่ใช้เพื่อเปิดเวิร์กสเปซนั้น

นี่คือรายการของ WorkspaceFactoryProgIDs ที่เป็นไปได้บางส่วน:

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

การใช้คำว่า "บาง" ทำให้คิดว่าน่าจะมีโรงงานเพิ่มขึ้น คุณสามารถเพิ่มเลเยอร์ GeoPackage ได้โดยใช้ปุ่ม AddData ใน ArcMap

คำตอบ

3 Hornbydd Oct 28 2020 at 14:34

ด้านล่างนี้คือโค้ด VBA ที่จะโหลด FeatureClass ใน geoPackage ลงในแผนที่ใน ArcMap 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