2016-06-13 409 views
0

如何識別具有LAT,LONG座標格式的點是否靠近其他點。如何查找給定座標的最近點

可以說,我想找到附近所有點:

-38.9086621 ,-68.082214

這是在不到1公里的距離。我已經知道如何在給定象限中找到座標,但不知道如何在點附近找到象限。

+1

如果你需要的精度,你應該變換地理座標爲指標參照系統(如EPSG:3857),然後你可以用簡單的數學。你可以看看proj4js(http://proj4js.org)。 –

+0

@MarcCompte您在測量距離時做了什麼樣的精度提升?在大地測量工作角度或距離測量中,補償,測量誤差......在全球座標系統(例如ECEF)中是可取的,以避免有關參考框架的錯誤。 –

+1

@JoseHermosillaRodrigo我們談論距離。兩點之間的距離是飛機上的一項指標。地理座標是三維的。除了從3D轉換到平面以外,沒有其他方法可以計算度量距離。當然,你可以使用基本的三角函數來做到這一點,但是假設地球是一個完美的球體,這很少像使用橢球體(對地球3D形狀更復雜的近似)一樣精確。這就是爲什麼轉換是實現高精度距離計算的關鍵,除了使用激光測量。 –

回答

0

可以使用正弦表達式計算兩個給定座標之間的距離。計算出的距離是給定座標(直線)之間的直接連接。

JavaScript示例(Source):

var R = 6371e3; // meters 
var lat1Radians = lat1.toRadians(); 
var lat2Radians = lat2.toRadians(); 
var deltaLat = (lat2-lat1).toRadians(); 
var deltaLon = (lon2-lon1).toRadians(); 

var a = Math.sin(deltaLat/2) * Math.sin(deltaLat/2) + 
     Math.cos(lat1Radians) * Math.cos(lat2Radians) * 
     Math.sin(deltaLon/2) * Math.sin(deltaLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 

var d = R * c; 
+0

請避免使用非拉丁字母作爲變量名稱。可能導致很多問題;) – veritas

+1

剛剛從源複製它,但它現在已被更正。謝謝 – KRONWALLED

相關問題