在MySQL数据库中,我有动物(大象)的跟踪数据。目前的设计如下:
timestamp(INT) | individualID(INT) | longitude(DECIMAL) | latitude(DECIMAL)
现在我想向数据库提出几个问题
是否有一些可用于MySQL的内置功能?我应该选择不同的数据库吗?
答案 0 :(得分:2)
根据MySQL Spatial Extension GEOMETRY
(简单功能规范),有OGC实现SFS。它是许多数据库引擎的SPATIAL数据实现的基本标准。
对于客户端,有OpenLayers,HTML5 SVG,Google Maps。请看GIS.StackExchange.com。
从我的经验来看(如果它可能需要计算,就像2年前那样),MySQL实现空间数据就足够了,但不是最好的。它在Oracle和MS SQL Server(IMHO)中实现得更好。如果你不打算构建非常复杂的地图 - MySQL功能就足够了。对于复杂的功能,我建议使用不同的数据库引擎。
在SO上有类似的问题:Fastest Way to Find Distance Between Two Lat/Long Points,其中接受的答案使用MySQL Spatial Extension。如果您要进行更多研究,可以在其他问题上找到答案。
我也可以尝试提供查询依据:
MIN()
+ GLength()
+ LineString
+ Point
涉及)。Contains()
+ Polygon
+ Point
涉及)。Contains()
+ Polygon
+ Point
涉及)。答案 1 :(得分:0)
我使用以下代码http://www.geodatasource.com/developers/php克服了我的PHP应用程序中的前两个问题,那里还有一个SQL版本的解决方案。
基本上你需要计算地球表面弧线的长度,用三角法计算2个网格点之间的距离。
然后,您可以比较多个人与基地位置的距离,并消除距离超过50公里的所有人,以便让您的动物群在周边。
你的问题的第3部分需要一些更复杂的代数,这不是我所解决的问题。