GML也能以workspace的形式打开,用到的是FMEWorkspaceFactory,使用FMEWorkspaceFactory前要添加引用:ESRI DataInterop Object Library.
Public
Function getGMLWorkspace()
Function getGMLWorkspace(pPath As String) As IFeatureWorkspace
On Err GoTo err_handle
Dim pFMEWorkspaceFactory As IWorkspaceFactory
Set pFMEWorkspaceFactory = New FMEWorkspaceFactory
Dim pWS As IWorkspace
Set pWS = pFMEWorkspaceFactory.OpenFromFile(pPath, 0)
Dim pFWS As IFeatureWorkspace
Set pFWS = pWS
Set getGMLWorkspace = pFWS
Exit Function
err_handle:
Call utlLogErr("Error in getGMLWorkspace: " & Err.Description)
Set getGMLWorkspace = Nothing
End Function
Public Function getGMLFeatureClass() Function getGMLFeatureClass(pFCName As String, pFeatureWorkspace As IFeatureWorkspace) As IFeatureClass
On Error Resume Next
Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pFCName)
If pFeatureClass Is Nothing Then
Call utlLogErr("Error in getGMLFeatureClass: Cannot find featureclass " & pFCName)
Set getGMLFeatureClass = Nothing
Else
Set getGMLFeatureClass = pFeatureClass
End If
End Function
On Err GoTo err_handle
Dim pFMEWorkspaceFactory As IWorkspaceFactory
Set pFMEWorkspaceFactory = New FMEWorkspaceFactory
Dim pWS As IWorkspace
Set pWS = pFMEWorkspaceFactory.OpenFromFile(pPath, 0)
Dim pFWS As IFeatureWorkspace
Set pFWS = pWS
Set getGMLWorkspace = pFWS
Exit Function
err_handle:
Call utlLogErr("Error in getGMLWorkspace: " & Err.Description)
Set getGMLWorkspace = Nothing
End Function
Public Function getGMLFeatureClass() Function getGMLFeatureClass(pFCName As String, pFeatureWorkspace As IFeatureWorkspace) As IFeatureClass
On Error Resume Next
Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pFCName)
If pFeatureClass Is Nothing Then
Call utlLogErr("Error in getGMLFeatureClass: Cannot find featureclass " & pFCName)
Set getGMLFeatureClass = Nothing
Else
Set getGMLFeatureClass = pFeatureClass
End If
End Function