2015-06-10 68 views
0

我已經存儲在多個MySQL表GPS信息的結構如下所示:
點在多邊形功能爲MySQL

event_number,時間(運行MySQL服務器43年5月5日Ubuntu服務器14.04.1的版本),緯度,經度
1,12時52分50秒,40.5401,-86.5715
1,12點52分51秒,40.5404,-86.5707
1,12點52分52秒,40.5406,-86.5699
1,12 :52:53,40.5409,-86.5691
1,12:52:54,40.5411, - 86.5683
1,12時52分55秒,40.5414,-86.5676
2,13時22分35秒,40.9723,-85.1755
2,13點22分36秒,40.9726,-85.1759
2,13點22分:37,40.9728,-85.1762
2,十三點22分38秒,40.9731,-85.1766
2,13點22分39秒,40.9734,-85.1770
2,13點22分四十秒,40.9737,-85.1773

每個表格代表一個單獨的車輛,每個表格中有數百個單獨的「行程」。

目標是通過測試每小時有多少車輛到達邊界框來查找泊松分佈的lambda。雖然有幾種算法可以確定點是否在多邊形內,但我只關心車輛進入邊界區域的初始時間。

我願意接受任何建議。理想情況下,我想在MySQL中創建一個函數,該函數可以計算每小時進入邊界區域的車輛數量。

+0

車輛可以退出箱子並重新進入嗎?如果是這樣,這又算了嗎? –

+0

您是否使用MyISAM,並且該表是否有'SPATIAL'索引? –

回答

0

第一次車輛是在多邊形

SELECT MIN(time) 
    FROM tbl 
    WHERE IsInPoly(latitude, longitude); 

(其中IsInPoly是什麼功能的工作原理如果你有一個SPATIAL指數,那麼功能可在MySQL的;我沒有具體副手)

如果你需要「第一時間爲每年event_number當車輛處於多邊形」:

SELECT MIN(time) 
    FROM tbl 
    WHERE IsInPoly(latitude, longitude) 
    GROUP BY event_number; 

這些查詢PR可以接受桌面掃描,所以他們不會很快。

+0

感謝里克,不幸的是我沒有SPATIAL索引。我使用InnoDB,我知道它支持空間數據,但不支持索引。我開始認爲PHP可能是一個更可行的解決方案... – mi7c514