Mam warstwę wielokąta z dołączoną wartością atrybutu reprezentującą liczbę osób wewnątrz wielokąta. Używam QGIS 3.0.
Muszę wizualizować liczby jako siatkę punktów wewnątrz wielokąta (tj. 1 punkt = 100 żab, pokolorowanych według gatunku). Punkty niekoniecznie muszą zajmować cały wielokąt, a najlepiej są narysowane wokół środka ciężkości z wcześniej zdefiniowanym odstępem (tj. 300 m), aby mogły reprezentować czystą siatkę przy określonej rozdzielczości.
Obecne obejście, które znalazłem, to użycie „Punktów regularnych” z parametrem counts, aby utworzyć siatki wewnątrz zasięgu narysowanego na mapie, a następnie usunąć dodatkowe punkty utworzone przez algorytm (algorytm zaokrągla do siatki i możesz otrzymać 20 punktów zamiast 17 w Wejście). Daje to pożądany wynik, ale wymaga narysowania obszaru dla regularnych punktów dla każdego wielokąta, a także ręcznego wprowadzania atrybutów i czyszczenia utworzonych punktów. Ponadto, ponieważ uruchamiam „Punkty regularne” z określoną liczbą, zamiast odstępów, każdy wielokąt otrzymuje punkty o różnych odstępach.
W skrócie: Regularne punkty (zdefiniowana liczba punktów, wyciągnięty zasięg) dla każdego wielokąta (partia)> Usuń dodatkowe punkty> przypisz wartości atrybutów do # punktów
Alternatywne (pozwala uniknąć nieregularnych odstępów, ale wymaga jeszcze więcej manipulacji):
Regularne punkty (zdefiniowane odstępy, tj. 300 m) w zasięgu całej warstwy> Przytnij do zasięgu wielokątów> Usuń dodatkowe punkty w każdym wielokącie, aż uzyskasz pożądaną liczbę punktów> przypisz wartości atrybutów do punktów.
Głównym problemem z moimi obejściami jest przetwarzanie wielokąta po wielokącie, co utrudnia aktualizację danych i pracę z większą liczbą wielokątów.
Analogiczne pytanie zostało zadane jako Tworzenie regularnie rozmieszczonych, zdefiniowanych # punktów w wielokącie w QGIS , ale specyfika jest inna.
źródło
Odpowiedzi:
QGIS 3 jest wyposażony w nową metodę przemieszczania w module renderującym klastra o nazwie grid. Wygląda na to, że to właściwie to, czego potrzebujesz. Po prostu stwórz liczbę pożądanych punktów na środku twojego wielokąta.
Nie znam metody generowania punktów tylko za pomocą narzędzia GUI, ale powinien to zrobić stosunkowo prosty skrypt w języku Python.
Jeśli chcesz oszaleć, zawiń to w niestandardowym algorytmie przetwarzania.
źródło
Odpowiedź może być inna inspirująca odpowiedzią Saratha SRK:
Będziesz jednak miał coś takiego
Za pomocą modelera graficznego utwórz nowe pole za pomocą polecenia „@row_number”
Wykonaj model z iteracją na warstwie buforowej
Scal całą nową warstwę
Usuń cały punkt z polem ID_pt większym niż suma twojego pola („Żaby” + „Koty” + „Diplodocs”)
źródło
Możesz do tego użyć generatorów geometrii.
źródło
Jednym z rozwiązań może być utworzenie warstwy punktowej z punktami w środku każdego wielokąta. Na przykład masz centroid Edmonton 25 nałożonego punktu: 5 z atrybutem żaby, 20 punktów z kotem i 0 z dyplomem.
Następnie za pomocą renderera przesunięcia punktowego z metodą umieszczania ustawioną jako siatka powinieneś być w stanie uzyskać efekt.
Trudność polega na utworzeniu warstwy punktowej ....
źródło
Bardzo prostą alternatywą może być użycie wykresu kołowego dostępnego we właściwościach warstwy? Atrybuty i rozmiary mogą być podyktowane wyrażeniem.
źródło
Możesz wygenerować punkty na ścieżce spiralnej, zaczynając od środka ciężkości wielokąta. Poniższy wpis Przepełnienie stosu zawiera kod w języku Python do tworzenia punktów w równej odległości, ale nie mogę go obecnie przetestować, biorąc pod uwagę mój brak wolnego czasu.
źródło
W Twoim przypadku,
źródło