zoukankan      html  css  js  c++  java
  • PIE SDK矢量栅格化算法

    1.算法功能简介

      矢量栅格化,由矢量数据向栅格数据的转换一般比较方便.对于点、线目标,由其所在的栅格行、列数表示,对于面状目标,则需判定落人该面积内的像元.通常栅格(像元)尺寸均大于原来坐标表示的分辨率,所以若将栅格化数据再反转回去,则不可能达到原来矢量数据的精度.将矢量数据转化为栅格数据,主要用于空间分析、多边形叠置等.

      PIE支持矢量栅格化算法功能的执行,下面对该算法功能进行介绍。

    2.算法功能实现说明

    2.1 实现步骤

    第一步

    算法参数设置

    第二步

    算法执行

    第三步

    结果显示

    2.2 算法参数

    算法名称

    矢量栅格化

    C#算法DLL

    PIE.CommonAlgo.dll

    C#算法名称

    PIE.CommonAlgo.VectorToRasterAlgo

    参数结构体

    VectorToRaster_Exchange_Info

    参数说明

    strInputFile

    String

    要转换的矢量数据文件

    nFieldIndex

    Int

    转换所依赖的字段索引

    strOutputFile

    String

    转换后的栅格数据文件路径

    strOutputFileType

    String

    根据输出类型获得文件编码类型

    .tif/.tiff——GTiff

    .img—————HFA

    其他—————ENVI

    bStandardFile

    bool

    是否指定

    FALSE : 基于指定大小 xy有效,  true : 基于影像大小 strStandardFile有效

    x

    Int

    指定输出图像的列数

    y

    Int

    指定输出图像的行数

    strStandardFile

    String

    基准影像路径

    如果选择基准影像,则输出图像的大小和基准影像大小相同

    bHasNoData

    bool

    是否设置无效值

    dbNoData

    double

    无效值

     

    2.3 示例代码

    数据路径

    百度云盘地址下/PIE示例数据/栅格数据/ 08.图像分类/ distanceClassify-Julei.tif

     1         /// <summary>
     2         ///  矢量栅格化算法 本示例数据用的是将distanceClassify-Julei.tif数据进行矢量化的结果进行栅格化
     3         /// </summary>
     4         public void VectorToRaster()
     5         {
     6             VectorToRaster_Exchange_Info info = new VectorToRaster_Exchange_Info();
     7             info.strInputFile = @"D:data图像分类2distanceClassify-Julei_Re.shp";
     8             info.strOutputFile = @"D:data图像分类2VectorToRaster.tif";
     9             info.strOutputFileType = "GTiff";//GTiff、HAF或者ENVI
    10             info.nFieldIndex = 1;//选择字段的索引
    11 
    12             info.bStandardFile = false;//是否指定;false:基于指定大小 xy有效;true:基于影像大小 strStandardFile有效
    13             info.strStandardFile = "";//基准影像路径
    14             info.x = 1313;//指定输出的栅格列数
    15             info.y = 1215;//指定输出的栅格行数
    16 
    17             info.bHasNoData = true;//是否设置无效值
    18             info.dbNoData = 65535;//无效值
    19                              
    20             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.VectorToRasterAlgo");
    21             if (algo == null) return;
    22 
    23             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
    24             algo.Name = "矢量栅格化";
    25             algo.Params = info;
    26             bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
    27             if (result)
    28             {
    29                 MessageBox.Show("矢量栅格化算法执行成功");
    30                 ILayer layer = LayerFactory.CreateDefaultLayer(info.strOutputFile);
    31                 if (layer == null) return;
    32                 m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
    33                 m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    34             }
    35         }
    View Code

    2.4 示例截图

     

  • 相关阅读:
    iPhone iPad发展史
    iOS 学习
    iOS 学习
    iOS 学习
    iOS 学习
    iOS 学习
    iOS 学习
    iOS 学习
    iOS 学习
    iOS 学习
  • 原文地址:https://www.cnblogs.com/PIESat/p/11251393.html
Copyright © 2011-2022 走看看