一些坐标系概念(ECEF、ENU、WGS-84、Web墨卡托、UTM坐标系)

简介

站心坐标系、地心坐标系、地心地固坐标系、Web墨卡托投影坐标系、像素坐标系、瓦片坐标系

1.球体坐标系

1.1地心地固坐标系ECEF

在这里插入图片描述

坐标系定义: 以地球质心为坐标原点,z轴指向极点,x轴过赤道和本初子午线交点,y轴完成右手坐标系。
坐标形式: [x,y,z],单位m

1.2站心坐标系ENU

坐标系定义: 站心坐标系即东北天坐标系,以用户所在位置P为坐标原点,z轴指向天空,x轴指向东方,y轴指向北方。
坐标形式: [x,y,z],单位m

1.3地心坐标系WGS84

可以近似看作和地心地固坐标系ECEF相同,以地心为坐标原点,x轴指向0度径线所在平面和赤道交点,y轴完成右手坐标系。WGS84用于GPS导航。
坐标形式: [经度,维度,高度],单位度

2.投影平面坐标系

2.1Web墨卡托投影坐标系

坐标系定义:
以整个世界范围,赤道作为标准纬线,本初子午线作为中央经线,两者交点为坐标原点,向东向北为正,向西向南为负。

坐标系投影过程:
在这里插入图片描述

墨卡托(Mercator)投影,又名“等角正轴圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定,假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅标准纬线为零度(即赤道)的“墨卡托投影”绘制出的世界地图。

坐标形式: [x,y],单位m

2.2UTM坐标系

坐标定义:
UTM坐标系指通用横墨卡托格网系统,UTM投影为椭圆柱横正轴割地球椭球体,椭圆柱的中心线位于椭球体赤道面上,且通过椭球体质点。从而将椭球体上的点投影到椭圆柱上。
在这里插入图片描述

UTM投影分布带:
UTM 经度区范围为1到60,其中58个区的东西跨度为 6°。经度区涵盖了地球中纬度范围从 80°S 到 84°N 之间的所有区域。一共有 20个UTM 纬度区,每个区的南北跨度为 8°;使用字母 C 到 X 标识(其中没有字母 I 和 O)。A、B、Y、Z 区不在系统范围以内,它们覆盖了南极和北极区。
在这里插入图片描述

UTM坐标表示:
UTM 坐标的表示格式为:经度区纬度区以东以北,其中以东表示从经度区的中心子午线的投影距离,而以北表示距离赤道的投影距离。这个两个值的单位均为米。举例来说,使用 UTM 表示经/纬度坐标 61.44,25.40 的结果就是35V 414668 6812844;而经/纬度坐标 -47.04,-73.48 的表示结果为18G 615471 4789269。、
在这里插入图片描述

3.像素平面坐标系

3.1 图像平面坐标系

在使用激光点云信息制作反射率底图时,一般是将其转换为俯视图的形式。通常需要设置一个分辨率res,表示激光点云地图中res*res大小的一个体素对应平面上的一个像素单位。

图像平面坐标系就是SLAM中普通的像素坐标系,坐标原点位于图像左上角定点,x轴向右,y轴向下

3.2 瓦片图坐标系

瓦片图就是按照固定的尺寸大小将图像切割成若干个网格,得到的像素块。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是ENU坐标系ECEF坐标系的转换代码: ```c #include <math.h> // WGS84椭球体参数 const double a = 6378137.0; // 地球长半轴 const double b = 6356752.314245; // 地球短半轴 const double f = 1 / 298.257223563; // 地球扁率 const double e = sqrt(2 * f - f * f); // 地球第一偏心率 const double e2 = e * e; // 地球第二偏心率 // ENU坐标系ECEF坐标系的转换函数 void enu2ecef(double enu[3], double lat, double lon, double alt, double ecef[3]) { // 计算ENU坐标系到NED坐标系的转换矩阵 double cosLat = cos(lat); double sinLat = sin(lat); double cosLon = cos(lon); double sinLon = sin(lon); double R_ENU2NED[3][3] = { {-sinLon, cosLon, 0}, {-sinLat * cosLon, -sinLat * sinLon, cosLat}, {cosLat * cosLon, cosLat * sinLon, sinLat} }; // 计算ENU坐标系ECEF坐标系的转换矩阵 double R_NED2ECEF[3][3] = { {-sinLon, -sinLat * cosLon, cosLat * cosLon}, {cosLon, -sinLat * sinLon, cosLat * sinLon}, {0, cosLat, sinLat} }; // 计算ENU坐标系ECEF坐标系的转换矩阵 double R_ENU2ECEF[3][3]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { R_ENU2ECEF[i][j] = 0; for (int k = 0; k < 3; k++) { R_ENU2ECEF[i][j] += R_NED2ECEF[i][k] * R_ENU2NED[k][j]; } } } // 计算ENU坐标系ECEF坐标系的转换向量 double ECEF_Origin[3], NED_Origin[3]; llh2ecef(lat, lon, alt, ECEF_Origin); llh2ned(lat, lon, alt, enu[0], enu[1], enu[2], NED_Origin); double ENU_Origin[3] = {NED_Origin[1], NED_Origin[0], -NED_Origin[2]}; double ECEF_enu[3]; for (int i = 0; i < 3; i++) { ECEF_enu[i] = 0; for (int j = 0; j < 3; j++) { ECEF_enu[i] += R_ENU2ECEF[i][j] * ENU_Origin[j]; } } // 计算ENU坐标点在ECEF坐标系中的位置 for (int i = 0; i < 3; i++) { ecef[i] = ECEF_Origin[i] + ECEF_enu[i]; } } // 经纬高坐标系ECEF坐标系的转换函数 void llh2ecef(double lat, double lon, double alt, double ecef[3]) { double N = a / sqrt(1 - e2 * sin(lat) * sin(lat)); ecef[0] = (N + alt) * cos(lat) * cos(lon); ecef[1] = (N + alt) * cos(lat) * sin(lon); ecef[2] = (N * (1 - e2) + alt) * sin(lat); } // 经纬高坐标系到NED坐标系的转换函数 void llh2ned(double lat, double lon, double alt, double lat0, double lon0, double alt0, double ned[3]) { double cosLat = cos(lat); double sinLat = sin(lat); double cosLon = cos(lon); double sinLon = sin(lon); double cosLat0 = cos(lat0); double sinLat0 = sin(lat0); double cosLon0 = cos(lon0); double sinLon0 = sin(lon0); double R_ENU2NED[3][3] = { {-sinLon0 * cosLat0, -sinLat0 * cosLon0, cosLat0}, {-sinLon0 * sinLat0, cosLat0 * cosLon0, sinLat0}, {cosLon0, sinLon0, 0} }; double ecef[3], ecef0[3]; llh2ecef(lat, lon, alt, ecef); llh2ecef(lat0, lon0, alt0, ecef0); for (int i = 0; i < 3; i++) { ned[i] = 0; for (int j = 0; j < 3; j++) { ned[i] += R_ENU2NED[i][j] * (ecef[i] - ecef0[j]); } } } ``` 以上是ENU坐标系ECEF坐标系的转换代码,其中 `enu` 表示ENU坐标系下的坐标,`lat`、`lon`、`alt` 分别表示参考点的纬度、经度和高度,`ecef` 表示转换后的ECEF坐标系下的坐标。 如果需要进行其他坐标系之间的转换,可以根据上面的代码进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值