zoukankan      html  css  js  c++  java
  • AE中用矢量数据剪裁栅格

    之前写了一个矢量数据剪裁栅格的例子(掩膜),用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

  • 相关阅读:
    十个一篇
    css等比例缩放
    windows高度和宽度相关文档
    希尔排序
    插入排序
    选择排序
    冒泡排序
    php面试题之面向对象
    前端面试题
    Python课习题笔记
  • 原文地址:https://www.cnblogs.com/luspa/p/1263242.html
Copyright © 2011-2022 走看看