您的位置:首页 > 其它

AE中用矢量数据剪裁栅格

2008-08-07 21:12 363 查看
之前写了一个矢量数据剪裁栅格的例子(掩膜),用SpatialAnalystTools中的 ExtractByMask或者ExtractByPolygon实现会方便一些,这里参考帮助里面的实例,先将矢量转栅格,再用该栅格抽取,用到SpatialAnalyst和GeoAnalyst中的IExtractionOp和IConversionOp,下面是部分代码,其中的FCCoventToPolygon和GetDataSourceFromRaster函数是另外写的。

Public Function ExtractRasterbyFeatureClass(ByVal pRaster As IRaster, ByVal ExtentFeatureClass As IFeatureClass) As IRaster

Dim pFeatureClass As IFeatureClass

'当范围数据为polyline时,将其转为polygon形式的featureclass

If ExtentFeatureClass.ShapeType = esriGeometryType.esriGeometryPolyline Then

pFeatureClass = FCCoventToPolygon(ExtentFeatureClass)

Else

pFeatureClass = ExtentFeatureClass

End If

'接口转化为IGeoDataset,做为后面的格式转换函数的参数(该参数要求为IGeoDataset形式)

Dim pTempDS As IGeoDataset

pTempDS = pFeatureClass

'定义格式转化器

Dim pConOp As IConversionOp

pConOp = New RasterConversionOp

'设置转换的环境参数

Dim pRasterAnalysisEnvironment As IRasterAnalysisEnvironment

pRasterAnalysisEnvironment = pConOp

Dim pProp As IRasterProps

pProp = pRaster

pRasterAnalysisEnvironment.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, pProp.MeanCellSize.X)

'得到raster的数据源的路径,做为后面的工作空间

Dim RasterFullPath, RasterPath As String

RasterFullPath = GetDataSourceFromRaster(pRaster)

RasterPath = IO.Path.GetDirectoryName(RasterFullPath)

Dim sPath As String

sPath = RasterPath

'删除已有文件

Dim fs

fs = CreateObject("Scripting.FileSystemObject")

If fs.FileExists(sPath + "\" + "TempCov.img") Then

fs.Deletefile(sPath + "\" + "TempCov.img")

End If

'打开工作空间

Dim pWs As IWorkspace

Dim pWksF As IWorkspaceFactory

pWksF = New RasterWorkspaceFactory

pWs = pWksF.OpenFromFile(RasterPath, 0)

'进行格式转换操作,将矢量数据转为栅格

Dim pRasterDataset As IRasterDataset

pRasterDataset = pConOp.ToRasterDataset(pTempDS, "IMAGINE Image", pWs, "TempCov.img")

'进行抽取操作,使用RasterExtractionOp运算器

Dim pOutRaster As IRaster

Dim pExtrOp As IExtractionOp

Dim pGeoDataset As IGeoDataset

pGeoDataset = pRaster '接口转化为IGeoDataset,做为后面的栅格抽取函数的参数(该参数要求为IGeoDataset形式)

pExtrOp = New RasterExtractionOp

pOutRaster = pExtrOp.Raster(pGeoDataset, pRasterDataset)

Return pOutRaster

End Function
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: