2016-01-11 107 views
0

例如,如果我想要一個查詢,說:「給我50公里內所有的房子在這裏,責令從最接近最遠」,這些都是問題和擔憂,我有:GeoDjango內置和PostGIS的距離查詢效率的擔憂

  1. 假設我們使用EC2(具有GeoDjango的應用程序服務器)和RDS(具有PostGIS的數據庫服務器),似乎該查詢將在RDS上執行。這是一個問題,不是嗎?不僅RDS針對IOPS進行了優化,而且我們只有一個RDS實例服務於所有EC2實例。如果這個距離查詢只比讀取所有的緯度和經度稍微貴一點,那將是值得的。

  2. GeoDjango或PostGIS是否足夠聰明,能夠僅在距離合理距離的房屋上運行精確的距離計算,跳過所有距離太遠的房屋?例如,它可以計算給定半徑的最大邊界,並且只計算這些邊界內的房屋的距離。

  3. 在GeoDjango/PostGIS中是否存在不太精確的計算距離的方法,所以我們可以犧牲速度的精度?如果不是,那麼推出我們自己的解決方案會更好嗎?

回答

0

嗯,這實際上是十個問題。

1)如果這個距離查詢只比讀取所有緯度和經度稍微昂貴一些,它將是值得的。

與讀取所有行相比,距離查詢並不昂貴。

2)GeoDjango或PostGIS足夠智能 Postgis一定會足夠聰明。 GeoDjango只構建查詢,查詢由postgis執行。 http://postgis.net/docs/ST_DWithin.html

3)在GeoDjango/PostGIS中是否存在不太精確的計算距離的方法,所以我們可以犧牲速度的準確性?否則,

沒有必要犧牲速度的準確性。 ST_Dwithin速度非常快。

3.1)推出我們自己的解決方案會更好嗎? 地獄不!它會受到bug的困擾。