PIE SDK坐标转换算法

1.算法功能简介

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

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

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

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

2.算法功能实现说明

2.1 实现步骤

第一步orm

算法参数设置blog

第二步内存

算法执行ci

第三步数学

结果显示string

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

相关文章
相关标签/搜索