我有一個帶有空間點的MySQL表,並需要計算距離。我使用Haversine公式發現了很多材料,但是所有這些都假設點之間的距離很大。就我而言,我只關心短距離(< 1英里),所以我不需要糾正地球的曲率。我的直覺是使用Haversine公式在如此小的距離上是不準確的。有什麼建議麼?計算緯度/長點之間的短距離
2
A
回答
3
你的直覺是不正確的。考慮haversine公式,和半正矢的定義,根據維基百科(φ是緯度和ψ是經度):
存在進一步的事實是相關的:對於小值θ,sin θ近似等於l至θ;更相關地,它大約是線性 in θ。因此,散射角θ將近似爲(θ/2)2。當θ接近零時,這個近似變得更好。
如果緯度和經度併攏,然後φ₂ - φ₁和ψ₂ - ψ₁,這是什麼樣的半正矢函數應用到這裏,將接近零的,這意味着式近似
(d/2R)2 =((φ₂ - φ₁)/ 2)2 + cos(φ₁)COS(φ₂)((ψ₂ - ψ₁)/ 2)²
現在注意,此式具有相同的形式在兩個維度上與一些任意縮放因子作爲歐幾里得距離(記住(KX)2 = ķ²X²所以我們可以進出的平方舉動常數):
ķ₁d²= ķ₂Δφ²+ ķ₃Δψ²
最後,我斷言沒有證明這些任意縮放因子變成是相同的那些它將緯度/經度的變化轉換成線性距離。
因此,半正定公式確實是而不是對於很小的距離會變得不準確;與小距離極限下的普通歐式距離計算完全相同。
0
在 MyISAM表創建一個使用幾何數據類型的點值的點
創建這些點上空間索引
使用MBRContains()來查找值:
SELECT *
FROM table
WHERE MBRContains(LineFromText(CONCAT(
'('
, @lon + 10/(111.1/cos(RADIANS(@lon)))
, ' '
, @lat + 10/111.1
, ','
, @lon - 10/(111.1/cos(RADIANS(@lat)))
, ' '
, @lat - 10/111.1
, ')')
,mypoint)
,或者,在MySQL 5.1及更高版本中:
SELECT *
FROM table
WHERE MBRContains
(
LineString
(
Point
(
@lon + 10/(111.1/COS(RADIANS(@lat))),
@lat + 10/111.1
)
Point
(
@lon - 10/(111.1/COS(RADIANS(@lat))),
@lat - 10/111.1
)
),
mypoint
)
這將選擇框內大概的所有點(@lat +/- 10 km,@lon +/- 10km)。
這實際上不是一個盒子,而是一個球形矩形:球體的經度和緯度邊界部分。這可能與Franz Joseph Land上的一個簡單的矩形不同,但在大多數有人居住的地方非常接近。
應用額外的過濾選擇圓(而不是正方形)
可能適用額外的精細過濾,佔大圈距離內的一切(對大的距離)
相關問題
- 1. 計算緯度/長度列表之間的距離
- 2. 計算兩個緯度 - 經度點之間的距離? - 鈦
- 3. 如何計算經度和緯度兩點之間的距離?
- 4. 計算兩點之間的距離(經度,緯度)
- 5. 計算兩個長/經緯度之間的距離
- 6. 使用rethinkdb 2個經緯度點之間計算距離
- 7. PIG:計算緯度和經度對之間的最大距離
- 8. Sql查詢計算2緯度和經度之間的距離
- 9. SQL Server計算2組經度/緯度列之間的距離
- 10. J2ME - 計算2緯度和經度之間的距離
- 11. 如何找到緯度/經度/緯度點之間的距離?
- 12. 經典ASP中兩個緯度/長點之間的距離
- 13. 計算兩個緯度座標之間的距離/方位
- 14. 使用MapKit計算經緯度之間的距離
- 15. 使用緯度經度和海拔(海拔)計算兩點之間的距離
- 16. 如何計算距離另一點一定距離的點的緯度/經度?
- 17. 計算數據幀中兩個長緯度座標之間的距離
- 18. 計算matlab中點之間的距離
- 19. 計算點之間的距離
- 20. 如何計算點之間的距離?
- 21. 根據方位角和距離計算緯度和長度
- 22. 在excel中,如何計算兩組大點與經緯度之間的距離?
- 23. 使用經緯度座標計算多個點之間距離的Excel公式
- 24. 如何計算距離另一點一定距離的點的緯度?
- 25. 緯度和距離之間的關係
- 26. 兩個經緯度之間的距離
- 27. 計算距離另一緯度/經度點米的緯度和經度
- 28. 測量兩個緯度/經度點之間的距離
- 29. PHP兩點之間的距離緯度經度
- 30. 獲取兩個經度緯度點之間的駕駛距離
你可能將這些條目視爲一個平面三角形,並簡單地使用正弦定律。然而,Haversine不會因爲小的或大的距離而不準確......它比假設地球是平坦的更準確。 Haversine是正弦法球形模擬的特例。 – 2011-12-22 15:10:09