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\result3.tif"; 11 info.OutPixelX = 0.00008F; 12 info.OutPixelY = 0.00008F; 13 string path = @"D:\Data\result2.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\result3.tif"); 36 m_HookHelper.ActiveView.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 37 } |
2.4.示例截图