PIE SDK坐标转换算法

1.算法功能简介

  数据坐标转换是空间实体位置的位置描述,是从一种坐标系统变换到另一坐标系统的过程。通过建立两个坐标系之间一一对应关系来实现。是各种比例尺地图测量和编绘中建立地图数学基础必不可少的步骤。两个及以上的坐标转换是由极坐标参照确定维数空间。

  目前国内常见的坐标转换有以下5种:大地坐标(BLH)对平面直角坐标(XYZ)、北京54、西安80及WGS84坐标的相互转换、任意两空间坐标系的转换、十进制角度和度分秒格式之间进行转换、经纬度和UTM坐标之间进行转换。

  转换的方法分二维转换和三维转换;二维转换放缓是将平面坐标转换到另一个坐标系统;三维转换该方法基本操作步骤是利用公共点,也就是同时具有WGS84直角坐标和地方坐标的直角坐标的点位,一般需要3个以上重合点,通过布尔莎模型(或其他模型)进行计算,得到从一个系统转换到另一个系统中的平移参数、旋转参数和比例因子。三维转换方法可使你确定最多7个转换参数(3个平移参数,3个旋转参数和1个比例因子)。用户也可以选择确定几个参数。对于三维转换方法,可以仅用3个公共点来计算转换参数,但使用4个以上点可得到更多的观测值并且可以计算残差。用这种方法计算转换参数的优点在于能够保持GPS测量的精度,只要地方坐标精度足够(包括高程),这种方法能适用任何区域。

  PIE支持坐标算法功能的执行,下面对该算法功能进行介绍。

2.算法功能实现说明

2.1 实现步骤

第一步

算法参数设置

第二步

算法执行

第三步

结果显示

2.2 算法参数

C#算法DLL

PIE.CommonAlgo.dll

C#算法名称

PIE.CommonAlgo.RasterToContourContructAlgo

参数结构体

RasterToContourContruct_Exchange_Info

参数说明

BandIndex

Int

波段

BAutoSetStartEndValue

bool

是否自动计算起始终止值

BClosed

bool

是否闭合

BGenerateContourFace

bool

是否生成等值面

BGenerateContourLine

bool

是否生成等值线

EndValue

double

终止值

InputRasterDataset

IRasterDataset

输入栅格数据集

OutputContourFaceFDataset

IFeatureDataset

输出等值面(内存)

OutputContourLineFDataset

IFeatureDataset

输出等值线 (内存)

SampleRatio

int

采样比

StartValue

double

起始值

ValueInterval

double

间隔

2.3 示例代码

数据路径

百度云盘地址下/ PIE示例数据/栅格数据/04.World/World.tif

示例代码

 1  /// <summary>
 2 /// 投影转换 本例子采用的FY4A其中一个通道 坐标系位标称投影 将标称投影转换位WGS-1984坐标系
 3 /// </summary>
 4 public void ProjectionTrans()
 5 {
 6     PIE.AxControls.DataPrjTransDialog frmDataPrjTrans = new AxControls.DataPrjTransDialog();    //数据坐标转换界面 
 7     if (frmDataPrjTrans.ShowDialog() != 1) return;
 8 
 9     PIE.CommonAlgo.DataProjectTrans_Exchange_Info info = new CommonAlgo.DataProjectTrans_Exchange_Info(frmDataPrjTrans.GetParams()); //数据坐标转换参数  
10     if (info == null) return;
11 
12     string strExt = System.IO.Path.GetExtension(info.strInputFile);
13     PIE.SystemAlgo.ISystemAlgo algo = null;
14     PIE.DataSource.IDataset dataset = PIE.DataSource.DatasetFactory.OpenDataset(info.strInputFile, DataSource.OpenMode.ReadOnly);
15     if (dataset == null) return;
16 
17     //判断数据坐标转换是栅格还是矢量数据
18     if (dataset is PIE.DataSource.IRasterDataset)
19     {
20         algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImgProjectTransAlgo");
21     }
22     else if (dataset is PIE.DataSource.IFeatureDataset)
23     {
24         algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ShapeDataCoordTransformAlgo");
25     }
26     (dataset as IDisposable).Dispose();
27     dataset = null;
28     if (algo == null) return;
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     if (result)
34     {
35         MessageBox.Show("执行成功");
36         ILayer layer = LayerFactory.CreateDefaultLayer(info.strOutputFile);
37         if (layer == null) return;
38         m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
39         m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
40     }
41 }
View Code

2.4 示例截图

 

图1:源数据坐标系统信息

 

图2:数据坐标转换功能界面

 

图3:坐标转换后空间参考系统

 

图4:结果图 

  注意:坐标转换需要设置参数,可以在图2 界面最下面的其参数设置七参数,不知道可以选默认Default,最好设置七参数,本示例用的是标称投影Geostationary_Satellite转WGS-1984,七参数设置默认。

posted @ 2019-07-26 10:02  PIESAT  阅读(745)  评论(0编辑  收藏  举报