对于我拥有的每个坐标,我发现到赤道的距离(以公里为单位)给了我两个距离:
from pyproj import Geod
wgs84_geod = Geod(ellps='WGS84')
_,_, lon_dist = wgs84_geod.inv(0, 0,lon, 0)
_,_, lat_dist = wgs84_geod.inv(0, 0,0, lat)
作为一个健全的检查,我可以从这些值重新计算原始坐标如下(假设赤道坐标(0,0)的方向是北和西:
_, new_lat, _ = wgs84_geod.fwd(0,0, 0, lat_dist)
new_lon, _, _ = wgs84_geod.fwd(0, 0, 90, lon_dist)
这给了我开始时相同的坐标。
现在我想找到离我的坐标最近的公里点。我将 lon_dist 和 lat_dist 舍入到距离赤道值的公里处。
lat_km_dist = round(lat_dist/1000)*1000 #to nearest km and back to meters
lon_km_dist = round(lon_dist/1000)*1000
我以与以前相同的方式使用这些距离获取坐标
_, km_lat, _ = wgs84_geod.fwd(0,0, 0, lat_km_dist)
km_lon, _, _ = wgs84_geod.fwd(0, 0, 90, lon_km_dist)
逻辑应该是对于同一区域的多个坐标,任何km_lat,km_lon对之间的最近距离应该是1km。在北/南轴上确实如此,但对于经度,距离取决于我所在的纬度。我附上了两个屏幕截图,以可视化 km_lat、km_lon 坐标由面积为 1 公里的多边形中心的黑色圆圈表示的问题。
我该如何纠正这个?