Создавайте ссылки между геопозициями 2 документов с помощью CouchDB + GeoCouch

У меня есть CouchDB, где каждый документ представляет собой точку на карте. Кроме того, каждый документ имеет список идентификаторов, и каждый из этих идентификаторов представляет собой цель для ссылки на карте. Интересно, можно ли создать пространственный индекс GeoCouch, где ключи являются представлениями GeoJSON ссылок (например, LineStrings). Ниже я привожу пример.

Предположим, у меня есть эти 2 документа:

{
  _id: "doc1",
  latlng: [52.52, 13.13],     // geoposition of doc1
  links: ["doc2", "doc3"]     // links to doc2 and doc3
}

а также

{
  _id: "doc2",
  latlng: [53.53, 14.14],     // geoposition of doc2
  links: ["doc1"]             // link to doc1
}

Я бы хотел иметь пространственный индекс, в котором я могу запрашивать все ссылки в заданном ограничивающем прямоугольнике. Однако в функции карты CouchDB / GeoCouch, которая запускается для doc1, у меня нет доступа к геопозиции doc2.

Кто-нибудь видит другой способ достижения пространственного индекса для ссылок в вышеуказанной ситуации?


person andrenarchy    schedule 28.04.2013    source источник


Ответы (1)


В Apache CouchDB вы можете выдавать ссылки как _id, запросите его с помощью include_docs=true и используйте функцию _list, чтобы преобразовать его во все, что вы хотите.

К сожалению, GeoCouch не поддерживает параметр include_docs, поэтому он не будет работать там. Для GeoCouch вам нужно будет сделать два запроса. Сначала получите ссылки, а затем получите все эти документы с помощью keys=[the-ids]. При желании вы можете выполнить второй запрос в представлении и использовать функцию _list, чтобы получить из него GeoJSON.

person vmx    schedule 28.04.2013
comment
Спасибо @vmx, сейчас я делаю это в couchmap именно так, как вы предложили. Я отправляю два запроса: один через индекс GeoCouch, чтобы получить все узлы в ограничивающей рамке с соответствующими идентификаторами ссылок. Второй запрос - это простой запрос множественной выборки со всеми идентификаторами из массивов ссылок. Так что, если это лучшее решение, которое я могу реализовать с помощью GeoCouch, я доволен. :) - person andrenarchy; 29.04.2013