2017-03-08 45 views
0

每個座標我有,我覺得從赤道公里給我兩個距離的距離:轉換緯度,經度,以從公里赤道輪距離最近公里

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的多邊形中心的黑色圓圈表示的問題。

我該如何糾正?

Copenhagen

San Francisco

回答

0

什麼該算法本質上是這樣做的是,它構造一個等距離目(與點1公里開)在赤道上(LAT = 0)與主子午線(LON = 0) 。然後它有效地在橢球上構建一個網格作爲這些點的笛卡爾乘積。

但是,緯度/經度座標不形成笛卡爾框架,由這些網格點產生的結果平行/子午線定義的「方塊」的大小不僅取決於特定的經度,還取決於緯度。在完美的球體上,這將在南北方向上起作用,從那時起,lon = 0上的等距(按照大圓距離)網格在緯度上也是等距的(緯度差等於距離上的差球體的半徑)。

換句話說,如果固定兩個緯度lat1lat2並從(lat1, lon)特定經度lon舉,比如說(lat2, lon)1公里,向西方向,那麼這些新獲得的積分不會有相同的經度...

我不完全確定你要達到的目標,但如果目標是獲得一些不太接近的代表點,那麼就大圓距離而言,hierarchical clustering可能會提供合理的結果...

編輯:

作爲一個近似的解決方法,你可以得到最有可能離開的選擇比(0, 0)另一個參考點 - 新的參考點應該不會太遠,你試圖描述的區域(類似於感興趣區域的「左下角」)。如果整個感興趣區域不覆蓋全球的大部分地區(大緯度緯度),那麼這些差異將非常小,因此它們在GoogleMaps可視化中可能幾乎看不見...

因此,如果您對丹麥感興趣(通過截圖來判斷),那麼類似以下內容可能會起作用:

lat_ref, lon_ref = 53.637976, 6.694138 

_,_, lon_dist = wgs84_geod.inv(lon_ref,lat_ref, lon, 0) 
_,_, lat_dist = wgs84_geod.inv(lon_ref,lat_ref, 0, lat) 

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(lon_ref,lat_ref, 0, lat_km_dist) 
km_lon, _, _ = wgs84_geod.fwd(lon_ref,lat_ref, 90, lon_km_dist) 
+0

如您所說,目標是將大量座標減少爲較少的代表性點。這需要獨立於數據集,因此給定同一區域中的不同座標,底層網格不會改變。出於這個原因,我不想使用羣集。在這種方法中,有沒有一種方法可以考慮緯度對經度距離的影響? – clurhur

+0

@clurhur你可能會嘗試改變參考點 - 我已經包括一個例子... – ewcz

+0

感謝您的這一點。我嘗試過這種方法,它讓我更接近我想要的1公里的距離。難點在於這依賴於瞭解這些參考座標。因爲我想在世界的任何地方使用這種方法,所以這需要收集許多這樣的參考。我已經看到了一個國家中心名單,但是對於南北大片地區的國家來說,也會出現同樣的問題。 – clurhur

相關問題