ponieważ można używać tylko zapytania obwiedni z Couchbase widoków przestrzennych, trzeba będzie podzielić zapytanie na odległość do dwóch etapach:
- Zapytanie Couchbase dla współrzędnych, które mieszczą się w obrębie obwiedni, który pasuje do Twojego promień .
- Przefiltruj współrzędne zwracane przez # 1, które są większe niż określony promień.
Na pierwszym etapie, trzeba napisać widok przestrzenny, co następuje:
function(doc, meta)
{
if (doc.location)
emit(doc.location, [meta.id, doc.location]);
}
Uwaga: jest to Couchbase 3.0 wersja widzenia w Couchbase 4 nie robić musisz wyemitować meta.id i doc.location w wartości już.
Teraz, biorąc pod uwagę punkt wyjścia (szer) i promień r, trzeba obliczyć obwiednię [lat1, lon1, lat2, lon2] do kwerendy widoku na liście dokumenty, których współrzędne potencjalnie mieszczą się w pożądanym promieniu. Zapytanie o ramce ograniczającej w Couchbase określa współrzędne dolnego-lewego i górnego-prawego.
Następnie, we wniosku należy powtórzyć wszystkie wyniki i sprawdzić, czy rzeczywiście mieszczą się one w odległości R od punktu początkowego.
W zależności od wymaganej dokładności, możesz założyć, że Ziemia jest płaska i po prostu wykonać obliczenia na płaszczyźnie 2D, która będzie niedokładna, ale nie strasznie, na odległość 1 mila. Lub alternatywnie, używaj właściwie dokładnych wzorów do obliczenia wszystkiego, jak opisano w tym doskonałym artykule: http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates
Albo jeszcze lepiej, możesz użyć biblioteki geolokalizacyjnej dla wybranego języka, aby obliczyć prostokąt ograniczający i odległości. Oto jeden dla C# i jeden dla Java.
Czy chcesz rozwiązać następujący problem: podać dwie pary współrzędnych (szerokości i długości geograficznej), obliczyć odległość?czy rozumiem cię źle – supinf
Chcę napisać geoSpatialview, który zwraca raporty w odległości 1 mil od odległości – rash
Aby uzyskać odniesienie zobacz dokumentację Pythona na temat korzystania z interfejsu API geoprzestrzennego: http://pythonhosted.org/couchbase/api/views.html # widoki geoprzestrzenne –