繁体   English   中英

搜索地理坐标的数据库设计

[英]Database design for search of geocoordinates

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

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

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

  1. 在时间t,最接近的个体是什么?
  2. 在时间t,哪些人在周围(周长50公里)?
  3. 在时间t,预订中有哪些人? (预定由多边形给出)

是否有一些可用于MySQL的内置功能? 我应该选择不同的数据库吗?

有一个基于OGC SFS (简单功能规范)实现GEOMETRYMySQL Spatial Extension 它是许多数据库引擎的SPATIAL数据实现的基本标准。

对于客户端,有OpenLayers ,HTML5 SVG, Google Maps 看看GIS.StackExchange.com


从我的经验来看(如果它可能需要计算,就像2年前一样),MySQL实现空间数据就足够了,但不是最好的。 它在Oracle和MS SQL Server(IMHO)中实现得更好。 如果你不打算构建非常复杂的地图 - MySQL功能就足够了。 对于复杂的功能,我建议使用不同的数据库引擎。


在SO上有类似的问题: 找到两个纬度/长点之间距离的最快方法 ,其中接受的答案使用MySQL Spatial Extension。 如果您要进行更多研究,可以在其他问题上找到答案。


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

我使用以下代码克服了我的PHP应用程序中的前两个问题http://www.geodatasource.com/developers/php那里还有一个SQL版本的解决方案。

基本上,您需要使用三角法计算地球表面上弧的长度,以获得2个网格点之间的距离。

然后,您可以比较多个人与基地位置的距离,并消除距离超过50公里的所有人,以便让您的动物群在周界内。

你的问题的第3部分需要一些更复杂的代数,这不是我所解决的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM