【发布时间】:2016-03-17 08:50:45
【问题描述】:
私有函数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
在上面的代码 sn-p 中,尝试将 pRaster 分配给 GetRaster 时,代码语句抛出异常 "Unable to cast COM object of type 'System.__ComObject' to interface type 'ESRI.ArcGIS.Carto.FeatureLayer" 。我也尝试过铸造,但这也不起作用。任何帮助将不胜感激。
【问题讨论】:
标签: vb.net interface casting esri