mysql - 用于搜索地理坐标的数据库设计

标签 mysql database database-design geolocation

在 MySQL 数据库中,我有动物(大象)的跟踪数据。目前设计如下:

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

现在我想向数据库提出几个问题

  1. 时间 t 最接近的个体是什么?
  2. 在时间 t 周围(周边 50 公里)有哪些人?
  3. 哪些人在时间 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。如果您进行更多研究,您可能会找到其他问题的答案。


我也可以尝试提供查询依据:

关于mysql - 用于搜索地理坐标的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20827309/

相关文章:

python - MySQL from_unixtime() 和 Python time.ctime() 不一致

mysql - 需要一个 MySQL 查询来从存储键值对的表中进行选择

database - Hibernate 批处理操作未按预期工作

mysql - 在 MySQL 中对 ID 进行分组时获取整行

mysql - 单个 MySQL 表内的复杂比较和排除

php - 查询更新不起作用

mysql - 选择两个时间范围之间的时间

SharePoint 网站集 : relation with DB WSS_Content

mysql - 在这种复杂的情况下如何在mysql中建立表之间的关系?

database - 限制 sqlite 表的最大行数