22 paź 2014

Binning w QGIS

     W ostatnim czasie można zauważyć coraz powszechniej wykorzystywany sposób prezentacji danych na mapie zwany binningiem. Sama technika nie taka nowa, bo sięga lat 80-tych, jednak jej zalety są coraz bardziej doceniane.




     Celem binningu jest uproszczenie przekazu, a także uczytelnienie map, na których ilość przedstawionych informacji często sprawia kłopoty interpretacyjne nawet doświadczonym odbiorcom. Polega on na agregacji obiektów (zazwyczaj punktów) w regularne poligony, w których grupowanie analizowanych danych może odbywać się na podstawie informacji ilościowych, jakościowych, przestrzennych, a także czasowych. W efekcie końcowym otrzymywany jest w przystępnej formie, kartogram przedstawiający rozkład często skomplikowanych zjawisk, które w postaci „surowych” warstw nałożonych na siebie, praktycznie nie kwalifikowałyby się do jakiejkolwiek interpretacji. 
     Samo grupowanie danych można przeprowadzić na wiele sposobów, np. zmieniając kształt i rozmiar pól odniesienia, od których biorą nazwy różne techniki binningu: b. prostokątny, b. heksagonalny itp. 
     Jednak aby zorientować się o co chodzi z binningiem, najlepiej zobaczyć jak to działa na przykładzie. Poniżej postaram się przedstawić za pomocą QGIS i binningu heksagonalnego ilość miejscowości w poszczególnych gminach Dolnego Śląska.
     W poście, jako danych użyłem uwolnionych w ostatnim czasie baz: Państwowego Rejestru Nazw Geograficznych (warstwa – miejscowości) oraz Państwowego Rejestru Granic (warstwa z granicami gmin). Wymienione wyżej warstwy są dość spore (cały kraj), dlatego też zmniejszyłem ich zakres do obszaru województwa dolnośląskiego.


     Jak widać powyżej na rysunku, interpretacja interesującego nas zjawiska jest praktycznie niemożliwa. Trzeba teraz zająć się stworzeniem naszego „binningowego” podkładu, tzn wykonania oczek wg. których będą agregowane obiekty. Do tego celu można wykorzystać wtyczkę MMQGIS, w której znajduje się narzędzie do tworzenia różnego rodzaju siatek. W poście będzie to siatka heksagonalna. Wchodzimy do MMQGISCreateCreate Grid Layer i z menu rozwijalnego wybieramy Hexagon (poligon). Ponadto, jeżeli nie odpowiada nam wielkość oczek możemy je przeskalować do żądanego rozmiaru.

     Domyślnie siatka tworzona jest dla widocznego obszaru roboczego, dlatego też warto przed jej utworzeniem zaznaczyć dla warstwy, którą grupujemy opcję pokaż całą warstwę.


     Na tak przygotowanym podkładzie, za pomocą zapytania przestrzennego wybieramy tylko te oczka, które nachodzą na kształt, w tym przypadku województwa i zapisujemy jako nową warstwę. Najprościej zastosować wektorzapytanie przestrzenne i opcję overlaps.

     Kolejnym krokiem stosując funkcję, znajdującą się w menu WektorNarzędzia analizy Liczba punktów w poligonie obliczamy ile punktów (miejscowości) znajduje się w obrębie każdego oczka siatki. QGIS utworzy nową kolumnę w tabeli atrybutów z ilością punktów dla poszczególnych oczek – w tym przypadku pole będzie nazywać się LICZBA.

     Teraz już postępujemy jak przy tworzeniu zwykłego kartogramu, czyli we właściwościach warstwy siatki zmieniamy style wyświetlania. Tutaj wybrałem dla kolumny z ilością punktów symbol stopniowy z pięcioma klasami i niebieską paletę kolorów. Efekt końcowy widać na rysunku poniżej.


     Porównując wynik binngowania do mapy sprzed, od razu można zauważyć, że odbiorca będzie w stanie z większą łatwością i precyzją zinterpretować dane.
     Ostatnio coraz popularniejsze są kartogramy 3D. W QGIS, wykorzystując wtyczkę qgis2threejs, w wygodny sposób można stworzyć trójwymiarową mapę. Należy jedynie pamiętać, aby w stylach, jako wysokość zaznaczyć pole, które zawiera zgrupowane dane (LICZBA). Bardziej szczegółowy opis działania wtyczki qgis2threejs znajduje się tutaj i tutaj. Jak to działa widać poniżej.


     Pozostaje życzyć udanego binningowania i dobrej zabawy 

2 komentarze:

  1. Witam, mam pytanie :"w stylach, jako wysokość zaznaczyć pole, które zawiera zgrupowane dane (LICZBA)" - gdzie dokładnie wykonać tę czynność?? Mam wrażenie że tylko tego mi brakuje żeby stworzyć model taki jak powyżej na zdjęciu

    OdpowiedzUsuń
  2. Już mam, cofam pytanie

    OdpowiedzUsuń