PIE SDK坐标转换算法

本文深入解析了坐标转换算法,涵盖二维和三维转换方法,详细介绍了布尔莎模型在确定转换参数中的应用,以及如何通过公共点计算平移参数、旋转参数和比例因子。文章还提供了PIE软件中坐标转换功能的具体实现步骤、参数设置和示例代码。

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,七参数设置默认。

转载于:https://www.cnblogs.com/PIESat/p/11248526.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值