以工作区间(workspace)形式打开GML文件
GML也能以workspace的形式打开,用到的是FMEWorkspaceFactory,使用FMEWorkspaceFactory前要添加引用:ESRI DataInterop Object Library.
Public 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(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(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
-----------------------------------------------------------
佛对我说:你心里有尘。我用力的拭擦。