2016-06-29 3 views
2

В этом случае я пытаюсь решить проблему.Расчет расстояния в Cloudant

Клиент отправляет свое текущее местоположение, которое приходит через API, управляемый приложением Node.js. База данных Cloudant хранит список координат (несколько тысяч).

Что бы оптимальный способ получить а) список всех координат и б) расстояние от каждого из этих координат от расположения клиента КОТОРЫХ с) попадет в X километрового радиуса расположения клиента

Геопространственный индекс уже создан для этих сохраненных координат.

Скорость и эффективность являются ключевыми, но иногда они могут быть противоположными качествами. Если возможно, я бы предпочел использовать собственные функции в Cloudant вместо пользовательского кода.

ответ

1

Глядя на сайте, похоже, есть уже некоторые заранее строить геопространственной материал в Cloudant: https://docs.cloudant.com/geo.html#geospatial-indexing

Когда-то в прошлом, я сделал это немного по-другому. Я сделал это с индексом поиска: https://docs.cloudant.com/search.html Этот указатель выведет лат & lng. Затем, чтобы найти любые документы, которые находились в пределах 25 миль от некоторой точки поиска, вы можете написать запрос lucene, который ограничивает лат от [search_lat-25miles, search_lat + 25miles] и lng от [search_lng-25miles, search_lat + 25miles]. Используя этот подход, я смог сделать это с помощью raw lat & lng. Похоже, что у облачности есть некоторые новые функции, чтобы сделать геопространственные поиски немного более простыми.

+0

Cloudant Search - это путь, если вы хотите, чтобы расстояния от данной точки были возвращены. [Cloudant Geo] (https://docs.cloudant.com/geo.html) является более гибким индексом, поскольку он позволяет запрашивать нерегулярный многоугольник, но db не может добавить эту информацию относительного расстояния в ответ. Вот учебник https://examples.cloudant.com/simplegeo_places/_design/geo/search.html – Raj

Смежные вопросы