Mam kilka obiektów, które są geolokalizowane (mam dla każdego obiektu szerokość + długość geograficzna). Moja aplikacja musi wyświetlać obiekty w odległości 3 kilometrów od pozycji GPS urządzenia przenośnego. Mam kilka tysięcy obiektów i są one zlokalizowane na dużym obszarze (na przykład kilka stanów USA, kilka małych krajów), co oznacza, że na mojej liście obiektów mogę znajdować się w Nowym Jorku, a inne w Miami, ale mogę też mieć obiekty, które są bardzo blisko (kilka metrów).sortowanie danych geograficznych do szybkiego wyszukiwania
Obecnie moja aplikacja wykonuje wyszukiwanie iteracyjne. Dla każdego obiektu obliczam odległość z położeniem GPS, a jeśli odległość wynosi < = 3KM, to zatrzymuję obiekt, który go zignorowałam. Ten algorytm nie jest bardzo wydajny i szukam algorytmu, który zapewni lepszą wydajność.
Przypuszczam, że istnieje sposób sortowania obiektów za pomocą funkcji geo coord, a następnie szybsze znajdowanie obiektów znajdujących się w pobliżu pozycji GPS.
Mój obecny pomysł polega na obliczeniu prostokąta z "skrajnymi punktami", Północ/Południe/Wschód/Zachód (z 3 km od pozycji GPS), aby ograniczyć strefę wyszukiwania. Następnie obliczę odległość tylko dla obiektów znajdujących się w tym polu. myślę, że coś można zrobić lepiej, ale ja nie mam pojęcia ...
Każda propozycja zostanie doceniona ;-) Dzięki,
SEB.
Myślę, że quadtree bezpośrednio w lat/lon działa dla prawie wszystkich scenariuszy. Jeśli długość geograficzna wynosi 0-360, to zmieniam ją tak, aby "szew" w danych był na linii daty, a nie na zera (więc wszystkie problemy byłyby tylko na biegunie północnym, biegunie południowym i na Pacyfiku) . –
Naprawdę dziękuję, będę studiować Octree i kd-tree. Jeśli nie jest zbyt skomplikowany dla mojego małego mózgu, prawdopodobnie może coś z tym zrobić! – sebastien