在mysql数据库中,我有动物(大象)的跟踪数据。目前设计如下:
timestamp(INT) | individualID(INT) | longitude(DECIMAL) | latitude(DECIMAL)
现在我想问数据库几个问题
时间t最接近的个体是什么?
时间t时(周长50公里)周围有哪些人?
在时间t时,哪些人在预订中?(保留由多边形给出)
mysql有内置的功能吗?我应该选择一个不同的数据库吗?
最佳答案
有一个MySQL Spatial Extension,它基于GEOMETRY
OGC(简单特性规范)实现SFS。它是许多数据库引擎实现空间数据的基本标准。
客户端有OpenLayers、html5 svg、Google Maps。看看GIS.StackExchange.com。
根据我的经验(如果可以算上,就像两年前一样),mysql实现空间数据已经足够了,但不是最好的。它在oracle和ms sql server(imho)中得到了更好的实现。如果您不打算构建非常复杂的map-mysql功能就足够了。对于复杂的功能,我建议使用不同的数据库引擎。
上面也有类似的问题:Fastest Way to Find Distance Between Two Lat/Long Points,接受的答案使用mysql空间扩展。如果你再多研究,你可能会找到其他问题的答案。
我也可以提供查询依据:
问题1:选择两个不同个体之间的短线
(涉及MIN()
+GLength()
+LineString
+Point
s)。
问题2:选择给定个人周围区域内的所有个人
(涉及Contains()
+Polygon
+Point
s)。
问题3:选择指定多边形中的所有个体
(涉及Contains()
+Polygon
+Point
s)。