哪个FOSS RDBMS用于地理空间数据?

时间:2011-10-24 20:56:09

标签: mysql postgresql google-maps-api-3 geolocation geocoding

我正在使用Google Maps API开发应用程序。目标是对某些位置进行地理编码,然后允许用户根据最接近用户的位置搜索这些位置(例如“Thing x距离您20英里”)。

在MySQL中,我可以存储地理坐标并使用hasrsine公式来进行距离计算。有人建议我考虑Postgres,因为它“更好地支持地理数据。”

所以,问题是:使用MySQL或Postgres有什么优缺点?

3 个答案:

答案 0 :(得分:2)

PostgreSQL支持您在船上谈论的内容。但是对于更多功能(以及您提到的“某人”可能正在考虑的内容)转向 PostGIS

请参阅home pagedocumentation,或从优秀的Wikipedia开始了解概述。

在评论中编辑问题:

请特别参阅function support matrix,了解PostGIS可以为您做些什么 计算两点之间的距离是标准功能。您可以将其用于各种数据类型。使用哪种数据类型?请参阅此question in the FAQ,并在那里进一步链接。

答案 1 :(得分:2)

如果只是积分,MySQL就没问题了。如果您有更复杂的几何图形,如传递路径或单元格接收区域等,则需要PostGIS,因为它支持更复杂的几何数据索引(r-trees)。 MyISAM实际上比空间数据BTW更好于InnoDB,因为它也支持r-tree空间索引(但不像PostGIS那样强大的查询。)如果你只需要点,InnoDB或MyISAM b-trees就足够了。如果边界框足够(即,您需要围绕某个点的矩形平面内的所有内容),那么基于geohash的索引就可以了。更多关于here的所有背景信息。熟悉PostGIS和Postgres是非常值得的,它们都是非常好的项目,到目前为止我的首选关系数据库,但只是查找点并不需要它们。

答案 2 :(得分:0)

您还可以查看MonogDB,它支持地理空间索引,让您非常有效地查询最近的对象!这就是Foursquare的人们用来寻找最近的场所......