【问题标题】:GeoDjango and PostGIS distance query efficiency concernsGeoDjango 和 PostGIS 距离查询效率问题
【发布时间】:2016-01-11 01:21:20
【问题描述】:

例如,如果我想要一个查询“向我显示距离此处 50 公里内的所有房屋,并按从最近到最远的顺序排列它们”,我有以下问题和疑虑:

  1. 假设我们使用的是 EC2(带有 GeoDjango 的应用程序服务器)和 RDS(带有 PostGIS 的数据库服务器),这个查询似乎会在 RDS 上执行。这是个问题,不是吗? RDS 不仅针对 IOPS 进行了优化,而且我们只有一个 RDS 实例服务于我们所有的 EC2 实例。如果这个距离查询只比简单地读取所有纬度和经度稍微贵一点,那才值得。

  2. GeoDjango 或 PostGIS 是否足够聪明,可以仅对合理距离内的房屋进行精确的距离计算,而跳过所有距离太远而无关紧要的房屋?例如,它可以计算给定半径可能的最大边界,并且只计算这些边界内房屋的距离。

  3. 在 GeoDjango/PostGIS 中是否存在一种不太精确的计算距离的方法,所以我们可以牺牲精度来换取速度?如果不是,推出我们自己的解决方案会更好吗?

【问题讨论】:

    标签: postgis amazon-rds geodjango haversine


    【解决方案1】:

    嗯,这实际上是十个问题。

    1) 如果这个距离查询只比简单地读取所有纬度和经度稍微贵一点,那才值得。

    与读取所有行相比,距离查询一点也不昂贵。

    2) GeoDjango 或 PostGIS 是否足够聪明 Postgis 肯定会足够聪明。 GeoDjango 只构建查询,查询由 postgis 执行。 http://postgis.net/docs/ST_DWithin.html

    3) 在 GeoDjango/PostGIS 中是否存在一种不太精确的计算距离的方法,所以我们可以牺牲精度来换取速度?如果没有,

    没有必要为了准确性而牺牲速度。 ST_Dwithin 非常快。

    3.1) 推出我们自己的解决方案会更好吗? 一定不行!而且它会被错误所困扰。

    【讨论】:

      猜你喜欢
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多