python ECEF转GPS
def ecef2gps(point_3d):
# pyproj库函数
# 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, point_3d[0], point_3d[1], point_3d[2], radians=False)
# 公式计算
WGS84_A = 6378137.0
WGS84_E = 0.0818191908
b = (WGS84_A * WGS84_A * (1 - WGS84_E * WGS84_E)) ** 0.5
ep = ((WGS84_A * WGS84_A - b * b) / (b * b)) ** 0.5
p = math.hypot(point_3d[0], point_3d[1])
th = math.atan2(WGS84_A * point_3d[2], b * p)
lon = math.atan2(point_3d[1], point_3d[0])
lat = math.atan2((point_3d[2] + ep * ep * b * (math.sin(th) **3 )), (p - WGS84_E * WGS84_E * WGS84_A * (math.cos(th) ** 3)))
N = WGS84_A / ((1 - WGS84_E * WGS84_E * math.sin(lat) * math.sin(lat)) ** 0.5)
alt = p / math.cos(lat) - N
lat = RAD2DEG(lat)
lon = RAD2DEG(lon)
print('--------------------gps---------------------')
print(lat,lon,alt)
print('--------------------------------------------')
return lat,lon,alt