2016-06-29 146 views
2

以下是我正在嘗試解決的問題。Cloudant中的距離計算

客戶端通過由Node.js應用程序管理的API發送其當前位置。 Cloudant數據庫存儲座標列表(幾千)。

什麼是最佳的方式來獲得 一)所有的座標和 B)分別從客戶端的位置的座標的距離的列表,它 三)屬於客戶端的位置

的X公里半徑範圍內

已經爲這些存儲的座標創建了地理空間索引。

速度和效率是關鍵,但有時這些可能是相反的品質。如果可能,我更願意使用Cloudant中的本地函數而不是自定義代碼。

回答

1

尋找在網站上,它看起來像已經存在cloudant一些預構建的地理空間的東西: https://docs.cloudant.com/geo.html#geospatial-indexing

有時在過去,我這樣做有點不同。我做了一個搜索索引: https://docs.cloudant.com/search.html 這個索引將放棄lat & lng。然後,要查找距離某個搜索點25英里範圍內的任何文檔,可以編寫一個lucene查詢,將[search_lat-25miles,search_lat + 25miles]和lng from [search_lng-25miles,search_lat + 25miles]中的緯度範圍限定爲。 使用這種方法,我能夠用原始經緯度做到這一點。它看起來像cloudant有一些新的功能,使地理空間搜索更簡單一點。

+0

如果您想要返回給定點的距離,Cloudant Search就是要走的路。 [Cloudant Geo](https://docs.cloudant.com/geo.html)是一個更靈活的索引,它允許您使用不規則多邊形進行查詢,但數據庫無法將相對距離信息添加到響應中。這裏有一個教程https://examples.cloudant.com/simplegeo_places/_design/geo/search.html – Raj