每个坐标我有,我觉得从赤道公里给我两个距离的距离:转换纬度,经度,以从公里赤道轮距离最近公里
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)
这让我回我开始用相同的坐标
。 10现在我想找到离我的坐标最近的公里点。我将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对应该一公里。 这在南/北轴线上是正确的,但对于经度来说,距离因我所处的纬度而异。 我附上了两张屏幕截图,以显示km_lat,km_lon坐标由面积为1km的多边形中心的黑色圆圈表示的问题。
我该如何纠正?
如您所说,目标是将大量坐标减少为较少的代表性点。这需要独立于数据集,因此给定同一区域中的不同坐标,底层网格不会改变。出于这个原因,我不想使用群集。在这种方法中,有没有一种方法可以考虑纬度对经度距离的影响? – clurhur
@clurhur你可能会尝试改变参考点 - 我已经包括一个例子... – ewcz
感谢您的这一点。我尝试过这种方法,它让我更接近我想要的1公里的距离。难点在于这依赖于了解这些参考坐标。因为我想在世界的任何地方使用这种方法,所以这需要收集许多这样的参考。我已经看到了一个国家中心名单,但是对于南北大片地区的国家来说,也会出现同样的问题。 – clurhur