每個座標我有,我覺得從赤道公里給我兩個距離的距離:轉換緯度,經度,以從公里赤道輪距離最近公里
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