簡體   English   中英

搜索地理坐標的數據庫設計

[英]Database design for search of geocoordinates

在MySQL數據庫中,我有動物(大象)的跟蹤數據。 目前的設計如下:

timestamp(INT) | individualID(INT) | longitude(DECIMAL) | latitude(DECIMAL)

現在我想向數據庫提幾個問題

  1. 在時間t,最接近的個體是什么?
  2. 在時間t,哪些人在周圍(周長50公里)?
  3. 在時間t,預訂中有哪些人? (預定由多邊形給出)

是否有一些可用於MySQL的內置功能? 我應該選擇不同的數據庫嗎?

有一個基於OGC SFS (簡單功能規范)實現GEOMETRYMySQL Spatial Extension 它是許多數據庫引擎的SPATIAL數據實現的基本標准。

對於客戶端,有OpenLayers ,HTML5 SVG, Google Maps 看看GIS.StackExchange.com


從我的經驗來看(如果它可能需要計算,就像2年前一樣),MySQL實現空間數據就足夠了,但不是最好的。 它在Oracle和MS SQL Server(IMHO)中實現得更好。 如果你不打算構建非常復雜的地圖 - MySQL功能就足夠了。 對於復雜的功能,我建議使用不同的數據庫引擎。


在SO上有類似的問題: 找到兩個緯度/長點之間距離的最快方法 ,其中接受的答案使用MySQL Spatial Extension。 如果您要進行更多研究,可以在其他問題上找到答案。


我也可以嘗試提供查詢依據:

我使用以下代碼克服了我的PHP應用程序中的前兩個問題http://www.geodatasource.com/developers/php那里還有一個SQL版本的解決方案。

基本上,您需要使用三角法計算地球表面上弧的長度,以獲得2個網格點之間的距離。

然后,您可以比較多個人與基地位置的距離,並消除距離超過50公里的所有人,以便讓您的動物群在周界內。

你的問題的第3部分需要一些更復雜的代數,這不是我所解決的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM