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
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
相关文章推荐
- ae中矢量数据转换成栅格数据
- 在ArcGIS利用矢量数据剪裁栅格数据的方法
- ae中栅格数据转为矢量数据 (转)
- ae中栅格数据转为矢量数据
- 显示栅格图层和矢量图层的属性表(AE开发)
- Erdas:将shp文件保存为Erdas中适用的AOI文件 矢量数据裁剪栅格
- AE 栅格数据使用总结
- 向SDE库中写入栅格和矢量数据
- 向SDE中写入栅格和矢量数据类
- 推荐:用ogr和PIL把矢量数据转化成栅格图像
- ArcGIS教程:用不规则矢量多边形裁切栅格数据的方法比较
- [转]矢量数据向栅格数据的转换
- C#+ArcEngine:加载打开Shp矢量数据和栅格数据(VS2010窗体+代码)
- 矢量数据和栅格数据2
- 空间数据库引擎探究及GIS栅格和矢量数据类型的存储
- [GDAL]2.读取栅格和矢量数据
- 向SDE库中写入栅格和矢量数据
- 矢量数据向栅格数据的转换
- 栅格数据与矢量数据
- AE 栅格数据接口