• PIE SDK正射校正


    1. 算法功能简介

            正射校正是对影像空间和几何畸变进行校正生成多中心投影平面正射图像的处理过程。它除了能纠正一般系统因素产生的几何畸变外,还可以消除地形引起的几何畸变

            PIE支持算法功能的执行,下面对正射校正算法功能进行介绍。

    2. 算法功能实现说明

    2.1. 实现步骤

    第一步

    算法参数设置

    第二步

    算法执行

    第三步

    结果显示

    2.2. 算法参数

    算法名称

    正射校正

    C#算法DLL

    PIE.CommonAlgo.dll

    C#算法名称

    PIE.CommonAlgo.PIEOrthoAlgo

    参数结构体

    DataPreOrtho_Exchange_Info

    参数说明

    FileName

    String

    输入文件

    (*.tif;*.tiff;*.bmp;*.img;*.jpg;*.ldf)

    Demfile

    String

    输入的DEM文件(可选) 覆盖影像范围

    ConstDem

    Float

    设置高程常值(可选) 这个是把一个地区看做是一个平坦地区,所以可以取一个常数,一般取340

    RPBFileName

    String

    正射校正的RPC文件路径

    (*.txt/*.RPB)

    DestFileName

    String

    输出文件(*.tif;*.tiff; *.img)

    ErroFile

    String

    有控制点时,可以输出精度报告文件

    OutPixelX

    Float

    输入影像的X方向分辨率

    高分一

    0.00008  (多光谱)

    0.00002  (全色)

    0.00016  (WFV)

    高分二

    0.000032  (多光谱)

    0.000008  (全色)

    OutPixelY

    float

    输入影像的Y方向分辨率

    高分一

    0.00008  (多光谱)

    0.00002  (全色)

    0.00016  (WFV)

    高分二

    0.000032  (多光谱)

    0.000008  (全色)

    gcpWKT

    String

    输入控制点的坐标系

    destWKT

    String

    默认是WGS84坐标系,可以选择

    GCP

    IList<PIE.CommonAlgo

    .Struct_GCP>

    控制点(由ptID控制点索引号、ptType控制点类型Control、x像素坐标、y像素坐标、X地理坐标、Y地理坐标、Z地理坐标,ex误差,ey误差组成)

    proSrcULX

    Int

    处理范围(这个是针对GF1数据的,从XML里获取是否是MSS的数据(根据Xml里的ImageGSD分辨率大小判断是MSS还是PAN),如果是则四周去掉2行进行处理,这个是为了后续拼接效果做的,GF1数据一般四周2行都有一些问题。

    proSrcULY

    Int

    处理范围

    proSrcWidth

    Int

    处理范围

    SrcHeight

    Int

    处理范围

    GcpFileName

    String

    控制点文件路径(可选)

    imageResampling

    Int

    重采样类型

    (最近邻点法0/双线性1/三次卷积法2)

    FuncName

    String

    功能名称

    FileType

    String

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

    .tif/.tiff——GTiff

    .img—————HFA

    其他—————ENVI

    2.3. 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/10.算法调用/图像预处理/ PIE.ImagePreprocessing. PIEOrthoAlgo

    数据路径

    百度云盘地址下/PIE示例数据/栅格数据/01.GF1/ GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tiff

    GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.rpb

    视频路径

    百度云盘地址下/PIE视频教程/10.算法调用/图像预处理/正射校正算法.avi

    示例代码

     1          /// <summary>
     2         ///正射校正算法测试,本算法实现了将GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tiff进行最近邻域法正射校正
     3         /// </summary>
     4         public override void OnClick()
     5         {
     6             #region 1、参数设置
     7             PIE.CommonAlgo.DataPreOrtho_Exchange_Info info= new PIE.CommonAlgo.DataPreOrtho_Exchange_Info();
     8             info.FileName = @"D:Data GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tiff ";
     9             info.RPBFileName = @"D:Data GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.rpb";
    10             info.DestFileName = @"D:Data
    esult3.tif";
    11             info.OutPixelX = 0.00008F;
    12             info.OutPixelY = 0.00008F;
    13             string path = @"D:Data
    esult2.tif";
    14             IRasterDataset rDataset = DatasetFactory.OpenDataset(path, OpenMode.ReadOnly) as IRasterDataset;
    15 
    16             info.destWKT = SpatialReferenceFactory.CreateSpatialReference((int)GeoCSType.GeoCSType_WGS1984).ExportToWkt();
    17             info.proSrcULX=2;
    18             info.proSrcULY=2;
    19             info.proSrcWidth=rDataset.GetRasterXSize()-4;
    20             info.SrcHeight=rDataset.GetRasterYSize()-4;
    21             info.imageResampling = 0;
    22             info.FileType = "Gtiff";
    23 
    24             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.PIEOrthoAlgo");
    25             if (algo == null) return;
    26             #endregion
    27 
    28             //2、算法执行
    29             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
    30             algo.Name = "正射校正";
    31             algo.Params = info;
    32             bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
    33 
    34             //3、结果显示
    35             ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:Data
    esult3.tif");
    36             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);           m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    37         }
    View Code

    2.4.示例截图

     

  • 相关阅读:
    Linux CAT与ECHO命令详解
    查看linux版本信息
    kubernetes(一)
    Chrome不安装插件实现页面长截图
    centos 升级glibc-2.17
    redis修改大key报Argument list too long的解决办法
    mysql打印用户权限的小技巧
    Centos6.5 自带的Python2.6.6 如何安装setuptools和pip
    TCP三次握手过程中涉及的队列知识的学习
    Docker volume权限导致的几个问题
  • 原文地址:https://www.cnblogs.com/PIESat/p/10190975.html
Copyright © 2020-2023  润新知