gis数据获取mdb、gdb、shapefile、数据
'获取mdblayer
Public Function getMDBlayer(ByVal dirpath As String, ByVal layname As String, ByVal strFilter As String) As ILayer
Try
Dim pWS As IWorkspace
Dim pWSF As IWorkspaceFactory
pWSF = New ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactory
pWS = pWSF.OpenFromFile(dirpath, 0)
Dim pFWS As IFeatureWorkspace
pFWS = pWS
Dim pFeatureClass As IFeatureClass
Dim pFLayer As ESRI.ArcGIS.Carto.IFeatureLayer
pFLayer = New ESRI.ArcGIS.Carto.FeatureLayer
If strFilter = "" Then
pFeatureClass = pFWS.OpenFeatureClass(layname)
pFLayer.FeatureClass = pFeatureClass
' pFLayer.Name = pDataset.Name
pFLayer.Name = layname 'pFeatureClass.AliasName
Else
ReplaceFilter(strFilter, "featureid", "fid")
pFeatureClass = pFWS.OpenFeatureClass(layname)
pFLayer.FeatureClass = pFeatureClass
Dim pFLDef As ESRI.ArcGIS.Carto.IFeatureLayerDefinition
pFLDef = pFLayer
pFLDef.DefinitionExpression = strFilter
''pFSel = pFLayer
''pFSel.SelectFeatures(Nothing, ESRI.ArcGIS.Carto.esriSelectionResultEnum.esriSelectionResultAdd, False)
''pFLayer1 = pFLDef.CreateSelectionLayer(arr(1), True, "", "")
''pFLayer = pFLayer1
End If
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureClass)
System.Runtime.InteropServices.Marshal.ReleaseComObject(pWS)
System.Runtime.InteropServices.Marshal.ReleaseComObject(pWSF)
Return pFLayer
Catch ex As Exception
Return Nothing
End Try
End Function
Private Function ReplaceFilter(ByRef strfilter As String, ByRef strold As String, ByRef strnew As String)
strfilter = strfilter.Replace(strold, strnew)
End Function
'获取gdblayer
Public Function getGDBlayer(ByVal dirpath As String, ByVal layname As String, ByVal strFilter As String) As ILayer
Try
Dim pWS As IWorkspace
Dim pWSF As IWorkspaceFactory
pWSF = New ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactory
pWS = pWSF.OpenFromFile(dirpath, 0)
Dim pFWS As IFeatureWorkspace
pFWS = pWS
Dim pFeatureClass As IFeatureClass
Dim pFLayer As ESRI.ArcGIS.Carto.IFeatureLayer
pFLayer = New ESRI.ArcGIS.Carto.FeatureLayer
If strFilter = "" Then
pFeatureClass = pFWS.OpenFeatureClass(layname)
pFLayer.FeatureClass = pFeatureClass
' pFLayer.Name = pDataset.Name
pFLayer.Name = pFeatureClass.AliasName
Else
ReplaceFilter(strFilter, "featureid", "fid")
pFeatureClass = pFWS.OpenFeatureClass(layname)
pFLayer.FeatureClass = pFeatureClass
Dim pFLDef As ESRI.ArcGIS.Carto.IFeatureLayerDefinition
pFLDef = pFLayer
pFLDef.DefinitionExpression = strFilter
''pFSel = pFLayer
''pFSel.SelectFeatures(Nothing, ESRI.ArcGIS.Carto.esriSelectionResultEnum.esriSelectionResultAdd, False)
''pFLayer1 = pFLDef.CreateSelectionLayer(arr(1), True, "", "")
''pFLayer = pFLayer1
End If
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureClass)
System.Runtime.InteropServices.Marshal.ReleaseComObject(pWS)
System.Runtime.InteropServices.Marshal.ReleaseComObject(pWSF)
Return pFLayer
Catch ex As Exception
Return Nothing
End Try
End Function
'获取shpfile
Public Function getShapeFilielayer(ByVal dirpath As String, ByVal layname As String, ByVal strFilter As String) As ILayer
Try
Dim pWorkspaceFactory As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory
Dim pFeatureWorkspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace
Dim pFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass
Dim pFLayer As ESRI.ArcGIS.Carto.IFeatureLayer
Dim pQueryDef As ESRI.ArcGIS.Geodatabase.IQueryDef
Dim pDataset As ESRI.ArcGIS.Geodatabase.IFeatureDataset
Dim pFSel As ESRI.ArcGIS.Carto.IFeatureSelection
Dim pFeatureClassContainer As ESRI.ArcGIS.Geodatabase.IFeatureClassContainer
pWorkspaceFactory = New ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass
pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(dirpath, 0)
pFLayer = New ESRI.ArcGIS.Carto.FeatureLayerClass
If strFilter = "" Then
pFeatureClass = pFeatureWorkspace.OpenFeatureClass(layname)
pFLayer.FeatureClass = pFeatureClass
' pFLayer.Name = pDataset.Name
pFLayer.Name = pFeatureClass.AliasName
Else
ReplaceFilter(strFilter, "featureid", "fid")
pFeatureClass = pFeatureWorkspace.OpenFeatureClass(layname)
pFLayer.FeatureClass = pFeatureClass
Dim pFLDef As ESRI.ArcGIS.Carto.IFeatureLayerDefinition
pFLDef = pFLayer
pFLDef.DefinitionExpression = strFilter
''pFSel = pFLayer
''pFSel.SelectFeatures(Nothing, ESRI.ArcGIS.Carto.esriSelectionResultEnum.esriSelectionResultAdd, False)
''pFLayer1 = pFLDef.CreateSelectionLayer(arr(1), True, "", "")
''pFLayer = pFLayer1
End If
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureClass)
System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureWorkspace)
System.Runtime.InteropServices.Marshal.ReleaseComObject(pWorkspaceFactory)
Return pFLayer
Catch ex As Exception
Return Nothing
End Try
End Function