【问题标题】:Which FOSS RDBMS to use for geospatial data?哪个 FOSS RDBMS 用于地理空间数据?
【发布时间】:2011-12-14 11:27:52
【问题描述】:

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

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

那么,问题是:使用 MySQL 或 Postgres 的优缺点是什么?

【问题讨论】:

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


    【解决方案1】:

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

    请参阅home pagedocumentation,或从旧的Wikipedia 开始了解概览。

    在评论中的问题后编辑:

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

    【讨论】:

    • 是的,但是每种解决方案的优缺点是什么? MySQL 还不足以满足我的需要吗?
    • 我对 MySQL 的地理能力知之甚少。 PostGIS 肯定是。
    • 我需要做的是能够计算地理坐标之间的距离。我可以在 MySQL 中实现 hasrsine。 PostGIS 在这方面为我做了什么?
    • @StackOverflowNewbie:我修改了答案。
    【解决方案2】:

    如果只是点数,MySQL 就可以了。如果您有更复杂的几何图形,例如交付路线或小区接收区域或其他任何东西,您需要 PostGIS,因为它支持更复杂的几何数据索引(r-trees)。对于空间数据,MyISAM 实际上比 InnoDB 更好,顺便说一句,因为它还支持 r-tree 空间索引(但不如 PostGIS 强大的查询。)但是,如果您只需要点,InnoDB 或 MyISAM b-trees 就足够了。如果边界框足够(即,您需要围绕某个点的矩形平面内的所有内容),那么基于 geohash 的索引就可以了。更多关于 here 的背景知识。熟悉 PostGIS 和 Postgres 是非常值得的,它们都是非常好的项目,也是迄今为止我最喜欢的关系数据库,但仅仅查找点并不需要它们。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 当然,很高兴有另一个选择。但这对我使用 MySQL + hasrsine 有什么好处?
      • 如果您打算在查询时不与其他表进行联接,而在此特定表中添加大量条目,那么 MongoDB 可能是最快的解决方案。
      • 最快,因为它在计算地理坐标之间的距离时比 MySQL 快?你有一些可以参考的基准吗?
      • 很遗憾不是,我认为这很大程度上取决于您的应用程序的初始设置。
      猜你喜欢
      • 2019-06-28
      • 2016-05-12
      • 2015-05-20
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多