gpt4 book ai didi

Python pyproj 将 ecef 转换为 lla

转载 作者:太空狗 更新时间:2023-10-29 21:54:57 56 4
gpt4 key购买 nike

我想在带有 pyproj 的 python 中使用 WGS84 将 x/y/z-ECEF 位置转换为 lla (lat/lon/alt),但似乎转换失败了。

示例代码在这里:

import pyproj

# Example position data, should be somewhere in Germany
x = 652954.1006
y = 4774619.7919
z = -2217647.7937

ecef = pyproj.Proj(proj='geocent', ellps='WGS84', datum='WGS84')
lla = pyproj.Proj(proj='latlong', ellps='WGS84', datum='WGS84')
lon, lat, alt = pyproj.transform(ecef, lla, x, y, z, radians=True)

print lat, lon, alt

谁能看出问题出在哪里?

编辑:到目前为止,我猜计算是正确的,只是我从接收器获得的数据似乎有问题。有人可以确认吗?

最佳答案

我用自己自制的坐标变换程序测试了一下,正确的顺序是:

lon, lat, alt = pyproj.transform(ecef, lla, x, y, z, radians=True)

我认为在设计库时,他们更愿意将经度视为 x 轴,将纬度视为 y 轴,因此他们按此顺序返回。

我更喜欢用degree,这样读起来更容易:

lon, lat, alt = pyproj.transform(ecef, lla, x, y, z, radians=False)
print lat, lon, alt

输出是:

-24.8872207779 82.2128095674 -1069542.17232

我更改了 z 值以获得更合理的值,该值位于“靠近”表面:

x= 652954.1006
y = 4774619.7919
z =-4167647.7937

然后我得到:

-41.0445318235 82.2128095674 2274.39966936

您还可以看到只有纬度值在变化,而经度与 z 值无关。这是因为 z 轴指向北极。

如果你想了解更多关于这个转换是如何完成的,请看这个简短的描述: https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates

关于Python pyproj 将 ecef 转换为 lla,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30307311/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com