【发布时间】:2021-07-19 13:32:52
【问题描述】:
给定一个坐标点 X=(lat, lon) 和一个圆心 C=(lat_center, lon_center) 我想计算点 X 的截然相反的坐标(假设 X 在圆心的圆内是 C)。
例如,如果 C=(45.9, 180),则与 X=(45.9, -179) 截然相反的应该是 (45.9, 179)。
以下函数是一个近似值,但不能解决纬度在 (-90, 90) 和经度 (-180, 180) 之间的问题。
def f(lat, lon, center):
lat_center = center[0]
lon_center = center[1]
dist_lon = np.abs(lon - lon_center) if np.abs(lon - lon_center)<180 else 360 - np.abs(lon - lon_center)
dist_lat = np.abs(lat - lat_center) if np.abs(lat - lat_center)<180 else 360 - np.abs(lat - lat_center)
lon_op = lon_center + dist_lon if lon_center + dist_lon != lon else lon_center - dist_lon
lat_op = lat_center + dist_lat if lat_center + dist_lat != lat else lat_center - dist_lat
return np.round(lat_op, 2), np.round(lon_op, 2)
【问题讨论】:
-
您希望得到的结果有多精确,C 与 X 的距离有多远?最好的方法:寻找大地测量库:你计算 X 和 C 之间的大地测量的距离和方向,然后你应用到 C 的方向和距离,所以你得到 Y。在较短的距离上,你可以使用其他技巧(只是球体或也只是笛卡尔坐标)
-
什么是
lat和lon,角度还是坐标? -
纬度和经度是坐标
标签: python math coordinates