指向MySQL的Polygon函数

时间:2015-06-10 17:57:05

标签: mysql latitude-longitude point-in-polygon

我将GPS信息存储在多个MySQL表格中,结构如下:
(在Ubuntu Server 14.04.1上运行MySQL Server 5.5.43版)

event_number,时间,纬度,经度
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,13:22:38,40.9731,-85.1766
2,13:22:39,40.9734,-85.1770
2,13:22:40,40.9737,-85.1773

每张桌子代表一个单独的车辆,有数百个单独的旅行"在每张表中。

目标是通过测试每小时有多少车辆到达边界框来找到泊松分布的λ。虽然有几种算法可以确定一个点是否在多边形内,但我只关注车辆进入边界区域的初始时间。

我对任何建议持开放态度。理想情况下,我想在MySQL中创建一个函数,它将计算每小时进入边界区域的车辆数。

1 个答案:

答案 0 :(得分: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;

这些查询可能涉及表扫描,因此它们不会很快。