wgs-84到enu坐标转换代码
时间: 2023-05-29 16:02:43 浏览: 658
ENU与WGS84相互转换,基于python与matlab的两种
4星 · 用户满意度95%
以下是 Python 实现的 WGS-84 到 ENU 坐标转换的代码,使用了 NumPy 库:
```python
import numpy as np
def wgs84_to_enu(lat, lon, alt, lat0, lon0, alt0):
earth_radius = 6378137.0
ecc = 0.081819190842965
n = earth_radius / np.sqrt(1 - ecc ** 2 * np.sin(lat0) ** 2)
x0 = (n + alt0) * np.cos(lat0) * np.cos(lon0)
y0 = (n + alt0) * np.cos(lat0) * np.sin(lon0)
z0 = (n * (1 - ecc ** 2) + alt0) * np.sin(lat0)
x = (n + alt) * np.cos(lat) * np.cos(lon) - x0
y = (n + alt) * np.cos(lat) * np.sin(lon) - y0
z = (n * (1 - ecc ** 2) + alt) * np.sin(lat) - z0
rotation_matrix = np.array([[-np.sin(lon0), np.cos(lon0), 0],
[-np.sin(lat0) * np.cos(lon0), -np.sin(lat0) * np.sin(lon0), np.cos(lat0)],
[np.cos(lat0) * np.cos(lon0), np.cos(lat0) * np.sin(lon0), np.sin(lat0)]])
enu = np.dot(rotation_matrix, np.array([x, y, z]))
return enu[0], enu[1], enu[2]
```
其中输入参数分别为:
- `lat`:WGS-84 坐标系下的纬度(角度制);
- `lon`:WGS-84 坐标系下的经度(角度制);
- `alt`:WGS-84 坐标系下的海拔高度(单位:米);
- `lat0`:参考点的纬度(角度制);
- `lon0`:参考点的经度(角度制);
- `alt0`:参考点的海拔高度(单位:米)。
返回值为 ENU 坐标系下的 X、Y、Z 坐标(单位:米)。
阅读全文