一、椭球
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″

大地坐标与空间直角坐标转换相关推荐

  1. c语言大地坐标转换空间坐标,大地坐标与空间直角坐标转换_C程序

    大地坐标与空间直角坐标转换的C程序 #include #include double HD(double a,double b,double c) {b=b+c/60; a=a+b/60; a=a/1 ...

  2. 【测绘程序设计】——空间直角坐标转换

      测绘工程中经常遇到空间直角坐标转换--比如,北京54(或西安80)空间直角坐标转换成CGCS2000(或WGS-84)空间直角坐标,常用转换模型包括:①布尔沙模型(国家级及省级范围):②莫洛坚斯基 ...

  3. 大地坐标与空间直角坐标互相转换

    引言 坐标转换代码,由大地坐标(经.纬度.高)与空间直角坐标(XYZ)互相转换.MATLAB代码,下面代码默认转换的是WGS84坐标系下的空间直角和大地坐标,可以根据需要选择椭球参数. Matlab代 ...

  4. arcgis中python批处理_基于Python的ArcGIS空间数据格式批处理转换工具开发

    基于 Python 的 ArcGIS 空间数据格式批处理转换工具开 发 焦 洋,邓 鑫,李胜才 [摘 要] 摘 要 ArcGIS 仅提供了单个文件的空间数据格式转换工具.本文首先 研究基于 Pytho ...

  5. 帅某---考研---空间直线绕坐标轴旋转、二次曲面方程

    一.空间直线绕坐标轴旋转 注:1.本说明以Z轴为例子,其他轴类同: 2.直线绕直线旋转对应的为二次曲面方程,属于超纲内容.考察内容为:给定二次曲面方程,只需要知道其曲面类型. 二.二次曲面方程 1.介 ...

  6. python实现WGS-84坐标系下大地坐标和空间直角坐标系互转xyz2blh、blh2xyz,xyz2neu

    WGS-84坐标系下大地坐标blh和空间直角坐标系xyz互转,以及转站心坐标系neu # -*- coding: utf-8 -*- """ Created on Tue ...

  7. WGS84下大地坐标转换为空间直角坐标

    核心代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  8. 任意两空间直角坐标系的转换的数学模型和算法实现

    数学模型: 两个空间直角坐标系进行转换,需要7个参数来描述,分别是3个旋转角,3个平移距离,1个比例因子. 如果知道3个点在两个坐标系中分别的位置,那么这7个参数可以唯一确定. 坐标转换的数学模型为: ...

  9. AS3-45度角坐标转换

    AS3-45度角坐标转换 (2012-01-31 09:52:06) guan(我)的理解: 关于45度角地图中像素坐标和地图坐标之间的转换,网上有各种方法,其实坐标转换就是计算tite宽和tile高 ...

最新文章

  1. 使用 JMeter 进行压力测试
  2. 通过VsPhere体验MAC OS X
  3. linux 批量同步,多主机目录到备份服务器批量同步脚本
  4. IOS-网络(监听网络状态)
  5. 在matlab中求协方差,matlab里面的求协方差函数
  6. 日期和时间的正则表达式
  7. 海运业务常用缩略语 一
  8. 情人节程序员用HTML网页表白【新婚快乐】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  9. 缓存和数据库刷新的顺序 及阿里OCS介绍
  10. windows打印服务器
  11. idea打包jar包,运行后显示 没有主清单属性
  12. 分析:G20相争 IMF得利
  13. moses 编译_手把手教你编译MOSES机器翻译系统 | 学步园
  14. 火影忍者粉:入手一个酷炫的NARUTO发光手机壳
  15. 计算两个时间戳之间的时间差
  16. 1块钱整个域名,这波不错
  17. archlinux安装kde常见的问题(无法登录,黑屏,无法调节亮度等)
  18. Oracle报错1031,dataguard 归档日志报1031错误的一次处理
  19. Python PyQt5简介
  20. 使用Weevely工具上传一句话木马

热门文章

  1. node后台实现分页
  2. SQL查询某一字段重复的数据
  3. POJ 2547 No Tipping 笔记
  4. HDU 2547 无剑无我 水水。。
  5. vue导入音乐_比VUE更强大、更易上手的视频剪辑App,小白也能轻松出大片
  6. # ***Craps赌博游戏***
  7. 如何确认芯片是被MTK验证过
  8. 河海大学计算机专硕考研万字经验贴
  9. tsm linux 错误日志,TSM linux oracle安装
  10. 如何实现从APP通过一键点击直接跳转至微信?