wgis84坐标系转地心直角坐标系 代码
时间: 2023-10-03 19:04:09 浏览: 91
java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现
以下是WGS84坐标系转地心直角坐标系的Python代码:
```python
import math
# WGS84椭球体参数
a = 6378137.0
b = 6356752.3142
f = (a - b) / a
e_sq = f * (2 - f)
# 定义函数将经纬度转换为弧度
def deg2rad(deg):
return deg * (math.pi/180)
# 定义函数将地心直角坐标系转换为WGS84坐标系
def ecef2lla(x, y, z):
p = math.sqrt(x**2 + y**2)
theta = math.atan2(z*a, p*b)
lon = math.atan2(y, x)
lat = math.atan2(z + e_sq*b*(math.sin(theta)**3), p - e_sq*a*(math.cos(theta)**3))
N = a / math.sqrt(1 - e_sq*(math.sin(lat)**2))
alt = p / math.cos(lat) - N
lon = lon % (2*math.pi) - math.pi
lat = lat % (2*math.pi) - math.pi
return [lat*(180/math.pi), lon*(180/math.pi), alt]
# 定义函数将WGS84坐标系转换为地心直角坐标系
def lla2ecef(lat, lon, alt):
lat = deg2rad(lat)
lon = deg2rad(lon)
xi = math.sqrt(1 - e_sq*(math.sin(lat)**2))
x = (a / xi + alt) * math.cos(lat) * math.cos(lon)
y = (a / xi + alt) * math.cos(lat) * math.sin(lon)
z = (a*(1-e_sq) / xi + alt) * math.sin(lat)
return [x, y, z]
```
其中,`ecef2lla`函数将地心直角坐标系的x、y、z坐标转为WGS84坐标系的经度、纬度、高度,`lla2ecef`函数将WGS84坐标系的经度、纬度、高度转为地心直角坐标系的x、y、z坐标。
阅读全文