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

  • 相关阅读:
    6位密码框js
    总结 清除浮动的四种常见方法
    JS中关于clientWidth offsetWidth scrollWidth 的区别及意义
    字符超过长度将以省略号显示
    如何改变在浏览器上选中字体的颜色
    dev gridcontrol把event事件转换成命令
    gridcontrol datatemplate trigger
    oracle数据库一些用户管理语句
    dev gridcontrol 绑定int型及日期型的列默认当值为0时显示空白及格式化日期显示方式
    c#计算datatable中某一列值的和
  • 原文地址:https://www.cnblogs.com/luspa/p/1263242.html
Copyright © 2011-2022 走看看