大地坐标与空间直角坐标转换
一、椭球
1、常用椭球参数
克拉索夫斯基椭球 | 1975年国际椭球 | WGS-84椭球 | CGCS2000(2000中国大地坐标系) | |
---|---|---|---|---|
a | 6378245(m) | 6378140(m) | 6378137(m) | 6378137(m) |
b | 6356863.0187730473(m) | 6356755.2881575287(m) | 6356752.3142 (m) | 6356752.3141(m) |
c | 6399698.9017827110(m) | 6399596.6519880105(m) | 6399593.6258(m) | 6399593.6259(m) |
α | 1/298.3 | 1/298.257 | 1/298.257223563 | 1/298.257222101 |
e2 | 0.006693421622966 | 0.006694384999588 | 0.00669437999013 | 0.00669438002290 |
e’2 | 0.006738525414683 | 0.006739501819473 | 0.00673949674227 | 0.00673949677548 |
决定旋转椭球的大小和形状只要知道以上参数中的两个就可(至少包含一个长度元素)
我国的北京54坐标系是基于克拉索夫斯基椭球建立的,
西安80坐标系是基于1975年国际椭球建立,
GPS定位系统是基于WGS-84椭球,
CGCS2000坐标系是全球地心坐标系在我国的体现,坐标系原点是地球质心(包括大气和海洋),
Z轴指向国际时间局1984年定义的CTP,X轴为起始子午面与通过原点且正交于Z轴的赤道面,构成右手地心地固直角坐标系
2、
C#构建椭球类
class Ellipsoid{//长半轴public double a;//短半轴public double b;//扁率public double f;//第一偏心率平方public double ec;//第二偏心率平方public double ecc;/// <summary>/// /// </summary>/// <param name="a为长半轴"></param>/// <param name="Invf为扁率"></param>public Ellipsoid(double a,double Invf){this.a = a;f = 1 / Invf;evaluate();}public Ellipsoid(){a = 6378137.000;f = 1 / 298.3;evaluate();}void evaluate(){double b = a - a * f;ec = 1 - Math.Pow(b, 2) / Math.Pow(a, 2);ecc= ec / (1-ec);}}
二、大地坐标与空间直角坐标转换
1、转换类
class Transform{public double a;public double ec;public double ecc;public Transform(Ellipsoid ellipsoid){a = ellipsoid.a;ec = ellipsoid.ec;ecc = ellipsoid.ecc;}public PointXYZ BLHToXYZ(PointBLH bLH){double B = bLH.B;double L = bLH.L;double H = bLH.H;//辅助计算公式double W = Math.Sqrt(1 - ec * Math.Pow(Math.Sin(B), 2));double N = a / W;PointXYZ xYZ = new PointXYZ();xYZ.X = (N + H) * Math.Cos(B) * Math.Cos(L);xYZ.Y = (N + H) * Math.Cos(B) * Math.Sin(L);xYZ.Z = (N * (1 - ec) + H) * Math.Sin(B);return xYZ;}public PointBLH XYZToBLH(PointXYZ xYZ){double X = xYZ.X;double Y = xYZ.Y;double Z = xYZ.Z;PointBLH bLH = new PointBLH();bLH.L = Math.Atan(Y / X);if (X < 0)bLH.L += Math.PI;var r = Math.Sqrt(X * X + Y * Y);var B1 = Math.Atan(Z / r);double B2;while (true){var W1 = Math.Sqrt(1 - ec * (Math.Sin(B1) * Math.Sin(B1)));var N1 = a / W1;B2 = Math.Atan((Z + N1 * ec * Math.Sin(B1)) / r);if (Math.Abs(B2 - B1) <= 0.0000000001)break;B1 = B2;}bLH.B = B2;var W = Math.Sqrt(1 - ec * (Math.Sin(B2) * Math.Sin(B2)));var N = a / W;bLH.H = r / Math.Cos(B2) - N;return bLH;}}
把输入的点构造成Mypoint类
class PointBLH{public double B;public double L;public double H;}class PointXYZ{public double X;public double Y;public double Z;}
2、大地坐标系与空间之间坐标系转换公式
大地坐标换算到空间直角坐标
P点投影到椭球面上,大地高为H
空间直角坐标换算到大地坐标
解算大地纬度的时候需要进行迭代计算,
保证前后两次迭代<e-10时,可保证计算精度达到0.0001″
大地坐标与空间直角坐标转换相关推荐
- c语言大地坐标转换空间坐标,大地坐标与空间直角坐标转换_C程序
大地坐标与空间直角坐标转换的C程序 #include #include double HD(double a,double b,double c) {b=b+c/60; a=a+b/60; a=a/1 ...
- 【测绘程序设计】——空间直角坐标转换
测绘工程中经常遇到空间直角坐标转换--比如,北京54(或西安80)空间直角坐标转换成CGCS2000(或WGS-84)空间直角坐标,常用转换模型包括:①布尔沙模型(国家级及省级范围):②莫洛坚斯基 ...
- 大地坐标与空间直角坐标互相转换
引言 坐标转换代码,由大地坐标(经.纬度.高)与空间直角坐标(XYZ)互相转换.MATLAB代码,下面代码默认转换的是WGS84坐标系下的空间直角和大地坐标,可以根据需要选择椭球参数. Matlab代 ...
- arcgis中python批处理_基于Python的ArcGIS空间数据格式批处理转换工具开发
基于 Python 的 ArcGIS 空间数据格式批处理转换工具开 发 焦 洋,邓 鑫,李胜才 [摘 要] 摘 要 ArcGIS 仅提供了单个文件的空间数据格式转换工具.本文首先 研究基于 Pytho ...
- 帅某---考研---空间直线绕坐标轴旋转、二次曲面方程
一.空间直线绕坐标轴旋转 注:1.本说明以Z轴为例子,其他轴类同: 2.直线绕直线旋转对应的为二次曲面方程,属于超纲内容.考察内容为:给定二次曲面方程,只需要知道其曲面类型. 二.二次曲面方程 1.介 ...
- python实现WGS-84坐标系下大地坐标和空间直角坐标系互转xyz2blh、blh2xyz,xyz2neu
WGS-84坐标系下大地坐标blh和空间直角坐标系xyz互转,以及转站心坐标系neu # -*- coding: utf-8 -*- """ Created on Tue ...
- WGS84下大地坐标转换为空间直角坐标
核心代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- 任意两空间直角坐标系的转换的数学模型和算法实现
数学模型: 两个空间直角坐标系进行转换,需要7个参数来描述,分别是3个旋转角,3个平移距离,1个比例因子. 如果知道3个点在两个坐标系中分别的位置,那么这7个参数可以唯一确定. 坐标转换的数学模型为: ...
- AS3-45度角坐标转换
AS3-45度角坐标转换 (2012-01-31 09:52:06) guan(我)的理解: 关于45度角地图中像素坐标和地图坐标之间的转换,网上有各种方法,其实坐标转换就是计算tite宽和tile高 ...
最新文章
- 使用 JMeter 进行压力测试
- 通过VsPhere体验MAC OS X
- linux 批量同步,多主机目录到备份服务器批量同步脚本
- IOS-网络(监听网络状态)
- 在matlab中求协方差,matlab里面的求协方差函数
- 日期和时间的正则表达式
- 海运业务常用缩略语 一
- 情人节程序员用HTML网页表白【新婚快乐】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- 缓存和数据库刷新的顺序 及阿里OCS介绍
- windows打印服务器
- idea打包jar包,运行后显示 没有主清单属性
- 分析:G20相争 IMF得利
- moses 编译_手把手教你编译MOSES机器翻译系统 | 学步园
- 火影忍者粉:入手一个酷炫的NARUTO发光手机壳
- 计算两个时间戳之间的时间差
- 1块钱整个域名,这波不错
- archlinux安装kde常见的问题(无法登录,黑屏,无法调节亮度等)
- Oracle报错1031,dataguard 归档日志报1031错误的一次处理
- Python PyQt5简介
- 使用Weevely工具上传一句话木马