在 MySQL 数据库中,我有动物(大象)的跟踪数据。目前设计如下:
timestamp(INT) | individualID(INT) | longitude(DECIMAL) | latitude(DECIMAL)
现在我想向数据库提出几个问题
- 时间 t 最接近的个体是什么?
- 在时间 t 周围(周边 50 公里)有哪些人?
- 哪些人在时间 t 出现在预订中? (预订由多边形给出)
是否有一些可用于 MySQL 的内置功能?我应该选择不同的数据库吗?
最佳答案
有一个MySQL Spatial Extension , 实现 GEOMETRY
, 基于 OGC SFS (简单的特征规范)。它是许多数据库引擎实现 SPATIAL 数据的基本标准。
客户端有OpenLayers , HTML5 SVG, Google Maps .看GIS.StackExchange.com .
根据我的经验(如果可以考虑的话,就像 2 年前一样),空间数据的 MySQL 实现就足够了,但不是最好的。它在 Oracle 和 MS SQL Server (IMHO) 中实现得更好。如果您不打算构建非常复杂的 map - MySQL 功能就足够了。对于复杂的功能,我建议使用不同的数据库引擎。
SO 上也有类似的问题:Fastest Way to Find Distance Between Two Lat/Long Points ,其中接受的答案使用了 MySQL Spatial Extension。如果您进行更多研究,您可能会找到其他问题的答案。
我也可以尝试提供查询依据:
- 问题 #1:选择 2 个不同的人之间的短线
(涉及
MIN()
+GLength()
+LineString
+Point
s)。 - 问题 #2:选择给定个体周围区域内的所有个体
(涉及
Contains()
+Polygon
+Point
s)。 - 问题 #3:选择指定多边形中的所有个体
(涉及
Contains()
+Polygon
+Point
s)。
关于mysql - 用于搜索地理坐标的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20827309/