r-tree, mapa, duża ilość współrzędnych GPS

0

Cześć
Mam taki problem.

Posiadam dane punktów GPS. Wszystkie punkty są w tej samej odległości od siebie tworząc kwadraty. 4 punkty GPS tworzą najmniejszy kwadrat. Mam takich punktów 25k. Tworzą one duży kwadrat na mapie 5k * 5k.

Dla podanego losowego adresu GPS muszę zlokalizować w którym najmniejszym kwadracie (2*2) się on znajduje i zwrócić te 4 punkty GPS.

Z tego co wyczytałem, najlepszym rozwiązaniem jest użycie R-Tree. W moim przypadku jestem zmuszony do korzystania db SQLite który posiada moduł R-Tree.

Dane GPS mam w pliku tekstowym, punkty są podane po kolei poziomo. Dla wyjaśnienia, zakładając, ze pierwszy pkt. ma dane (0,0), dalej są podane pkt. do (4999,0), następnie (0, 1) do (4999, 1) itd.

Do opisania obiektów wielowymiarowych wykorzystywane są minimalne regiony pokrywające (ang. MBR - minimal bounding rectangle), z tego co rozumiem każdy rekord potrzebuje 2 wartości GPS. minX, maxX, minY, maxY. Niestety ja jestem w stanie określić jedynie sąsiada po lewej i po prawej przy wrzucaniu danych do tabeli (zakładając, ze 25k to przykład, a może być np. 10k*20k pkt GPS).

CREATE VIRTUAL TABLE demo_index USING rtree(
   id,              -- Integer primary key
   minX, maxX,      -- Minimum and maximum X coordinate
   minY, maxY       -- Minimum and maximum Y coordinate
);

Czy ja coś, źle zrozumiałem, czy mojego problemu nie da się rozwiązać przy użyciu R-TREE?

0

Jeżeli punkty tworzą regularną siatkę, to po co w ogóle jakikolwiek indeks?
Przecież wystarczy zwykła arytmetyka, aby wyznaczyć odpowieni "kwadrat".

1 użytkowników online, w tym zalogowanych: 0, gości: 1