私有函数GetRaster(ByRef sLayerLocation As String)As ESRI.ArcGIS.Carto.FeatureLayer
Dim fso As New Scripting.FileSystemObject
Dim sFolder As String
Dim sFile As String
Dim pWsFact As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory
Dim pRasterWs As ESRI.ArcGIS.Geodatabase.IRasterWorkspace2
Dim pRasterDataset As ESRI.ArcGIS.Geodatabase.IRasterDataset
Dim pRaster As ESRI.ArcGIS.Geodatabase.IRaster
Dim pRasterLayer As ESRI.ArcGIS.Carto.IRasterLayer
sFolder = fso.GetParentFolderName(sLayerLocation)
sFile = fso.GetFileName(sLayerLocation)
Try
'Open the workspace
pWsFact = New ESRI.ArcGIS.DataSourcesRaster.RasterWorkspaceFactory
pRasterWs = pWsFact.OpenFromFile(sFolder, 0)
'Open the raster dataset
pRasterDataset = pRasterWs.OpenRasterDataset(sFile)
pRasterLayer = New ESRI.ArcGIS.Carto.RasterLayer
pRasterLayer.CreateFromDataset(pRasterDataset)
pRaster = pRasterLayer.Raster
**GetRaster = pRaster;**
Catch ex As Exception
End Try
在上面的代码片段中,当尝试将pRaster分配给GetRaster时,代码语句抛出异常"无法转换类型为' System .__ ComObject'的COM对象。接口类型' ESRI.ArcGIS.Carto.FeatureLayer" 。我也尝试过铸造,但那也没有用。任何帮助将不胜感激。
答案 0 :(得分:0)
栅格图层不实现IFeatureLayer接口。我认为除了栅格目录层。 您的函数应该返回IRasterLayer或IRaster。