例如,如果我想要一个查询“向我展示距离这里50公里范围内的所有房屋,并从最近到最远的地方订购它们”,这些是我所提出的问题和疑虑:
假设我们使用EC2(带有GeoDjango的应用程序服务器)和RDS(带有PostGIS的数据库服务器),似乎此查询将在RDS上执行。这是一个问题,不是吗? RDS不仅针对IOPS进行了优化,而且我们只有一个RDS实例为所有EC2实例提供服务。如果这个距离查询比仅仅读取所有纬度和经度稍微贵一点,那将是值得的。
GeoDjango或PostGIS是否足够聪明,只能在距离合理的房屋内进行精确的距离计算,不会过去所有太远的房屋?例如,它可以计算给定半径可能的最大边界,并且仅计算这些边界内的房屋的距离。
GeoDjango / PostGIS中是否存在计算距离的精确度较低的方法,因此我们可以牺牲速度的准确性?如果没有,推出我们自己的解决方案会更好吗?
答案 0 :(得分:1)
这真的是十个问题。
1)如果这个距离查询比仅仅读取所有纬度和经度稍微贵一点,那将是值得的。
与阅读所有行相比,距离查询根本不贵。
2)GeoDjango或PostGIS是否足够聪明 Postgis肯定会足够聪明。 GeoDjango只构建查询,查询由postgis执行。 http://postgis.net/docs/ST_DWithin.html
3)在GeoDjango / PostGIS中是否存在计算距离的精确度较低的方法,因此我们可以牺牲速度的准确性?如果没有,
没有必要牺牲速度来保证准确性。 ST_Dwithin非常快。
3.1)推出自己的解决方案会更好吗? 一定不行!它会被虫子所困扰。