坐标转换 python 坐标转换方法
转载
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,七参数设置默认。
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。