我正在開發一個基於地理位置的個人項目,我想根據用戶的緯度&獲取供應商的經度值。而且這筆交易是供應商具有可變的供應半徑,很少有供應商只在其半徑5公里範圍內供應,而有些供應商可能供應整個城市。將城市拆分成區域,這是個好主意嗎?
一般的做法是爲每個供應商計算供應商&用戶之間的距離。如果它小於或等於供應半徑,則在結果中顯示該供應商。
但是,這可能會很慢,所以我想我的城市分成四個區(接從谷歌地圖,有四種緯度經度&值,東北西部南部)&每當添加一個供應商,我會做數學&分配它們可以在數據庫中提供的區域。現在,無論何時我獲得用戶的緯度&經度,我都會確定區域&獲取可供應給該區域的供應商,然後將距離計算&過濾掉。通過這種方式,我可以根據供應商數量而不是整個列表進行計算。
但這是一個好主意還是我可以做得更好?
您使用的數據庫是?這是空間索引擅長的,因爲它們是二維的(使用R-Trees),並且可以在距離類型查詢中包含,包含,相交。 –
我打算使用postgres –
在這種情況下,只需使用空間索引,然後使用ST_DWithin(geom1,geom2,distance)類型的查詢,請參閱http://postgis.net/docs/ST_DWithin.html –