Mam listę zawierającą ponad 100 000 punktów w formacie lat / long, które zaimportowałem do qgis.
Teraz staram się pogrupować wszystkie te punkty w grupy ramek i przez to zasadniczo mam na myśli, że chcę podzielić mapę na ramki ograniczające.
Moje wymagania są następujące:
- żadna grupa w pudełku nie powinna mieć MNIEJ NIŻ 100 i NIE PONAD 200 PUNKTÓW
- żaden punkt nie powinien znajdować się w więcej niż jednej grupie
- wszystkie punkty powinny opierać się na najbliższym sąsiadu
Jak mogłem to osiągnąć za pomocą qgis?
Zakładam, że można przekazać niestandardowy kod zapytania i zapisać wyniki lub pola utworzone jako plik shapefile, prawda? Czy ktoś mógłby wyjaśnić, jak można to zrobić i jak wyglądałby kod?
Jak wspomniano, moim celem jest wyświetlenie szeregu kwadratowych pól wyświetlanych jako warstwa pliku kształtów, gdzie w każdym polu jest nie mniej niż 100 właściwości i nie więcej niż 200.
Odpowiedzi:
Mogę zapewnić ci część drogi, zakładając, że wymyśliłeś, jak poprosić o (a) najbardziej wysuniętą na wschód połowę zestawu punktów i (b) najbardziej wysuniętą na północ połowę zestawu punktów. Z tych można oczywiście łatwo uzyskać (c) najbardziej wysuniętą na zachód połowę lub (d) najbardziej wysuniętą na południe połowę. (Nie znam QGIS, ale jednym ze sposobów na zrobienie (a) jest w ogóle zapytanie o środkową współrzędną x, a następnie pobranie wszystkich punktów, których współrzędne x przekraczają tę wartość. Rozwiązania dla (b) - (d) są podobne .)
Korzystając z tej możliwości, rozwiązanie uzyskuje się z łatwą rekurencją. Aby to opisać, załóżmy, że istnieje procedura
Half
implementująca poprzednie operacje, która wymaga dwóch argumentów: pierwszy to zbiór punktów, a drugi to kod równy,true
gdy pożądane jest dzielenie wschód-zachód, i równy jestfalse
inny. Zwraca dwa podzbiory danych wejściowych, które dzielą go zgodnie z żądaniem.W tym pseudokodzie R i S partycja P; Pole (R,! I, n) jest podziałem R w kierunku ortogonalnym , Pole (S,! I, n) jest podziałem S w kierunku ortogonalnym, „+” oznacza uformowanie połączenia teoretycznego i {} oznacza zestaw. (Naprzemienny kierunek podziału tworzy ramki zamiast pasków.) Parametr n określa minimalny rozmiar grupy w partycji; maksymalny rozmiar to 2 n .
Tutaj, jako ilustracja, jest zestaw P z 12 891 losowych punktów podzielonych
Box(P,true,100)
na grupy o wielkości od 100 do 200. Algorytm tworzy 128 pól, z których 37 ma 100 punktów, a 91 ma 101 punktów.źródło