Nie, nie chodzi mi o te przyjemne procenty w plenerze :P Dzisiaj chcę Ci pomóc przejść bez problemów przez liczenie udziału procentowego obiektów na danym terenie (po tym przyjdzie czas na przyjemne procenty). Po pierwsze ustalmy, na czym pracujemy. Dziś będziemy korzystać z wolnego oprogramowania geoinformacyjnego, które zna każdy, choćby najmniej zainteresowany tą dziedziną nauki a mianowicie - z QGISa.
Ok, no to zaczynamy! Po pierwsze - musisz mieć wyznaczony obszar, który Cię interesuje. Następnie należy podzielić ten teren na mniejsze części, używając siatki heksagonalnej. "Czeeeego? :/ " No tak... Musisz mieć siatkę złożoną z heksagonów. To najbardziej optymalny kształt segmentów siatki do analiz przestrzennych. Ok, więc sprecyzujmy. Do projektu załączamy siatkę heksagonalną o wybranych przez Ciebie parametrach oraz warstwa wektorowa z obiektami, których udział w terenie chcesz poznać. U mnie będą to budynki.
Pierwszym działaniem na warstwach będzie obliczenie powierzchni budynków. Do tego użyję wbudowanego narzędzia, a mianowicie kalkulatora pól. Znajduje się on na jednym z toolbarów w górnej części programu, zaraz obok tabeli atrybutów.
W kalkulatorze tworzę nowe pole, nazywam je pow (od powierzchni) i ustawiam typ pola wejściowego na liczby dziesiętne (real), długość na 10 a dokładność na 2. Następnie z bocznego paska wybieram kolejno: funkcje Geometrii ---> $area i wybieram przycisk ok. W tabeli atrybutów utworzy się nowe pole, w którym zapisane będą obliczone powierzchnie obiektów.
PS. Rada do całego projektu. Jeżeli po wykonaniu jakiejś operacji okienko zostanie nadal otwarte, to zamiast klikać w kółko ok (co będzie nadpisywać) wybieramy zamknij.
Następnie chcemy przypisać dany obiekt do wybranego heksagonu. "Ale ręcznieeee?!" Nie, nie, spokojnie - na wszystko jest wygodny sposób :) Musimy skorzystać z narzędzia, które nie jest dane automatycznie w programie. Wybieramy z górnego paska Wtyczki --> Zarządzaj wtyczkami --> Wszystkie --> realcentroid --> Zainstaluj wtyczkę. Po wykonaniu się instalacji zamykamy okno, a w górnych paskach narzędzi powinien pojawić się nowy skrót, do tejże właśnie wtyczki. Włączamy ją i wybieramy warstwę buildings, zapisujemy ją w wybranym miejscu w komputerze i zaznaczamy Add to map canvas a następnie klikamy ok.
"Ale co to jest? Po co my to robimy?" Tak myślałam... Stworzyliśmy punkty, które są odzwierciedleniem każdego budynku. Żaden z nich nie znajduje się na kilku heksagonach, zatem to idealny punkt wyjścia do przypisania budynków do heksagonów.
No więc do dzieła! Będziemy potrzebowali kolejnej wtyczki, jej nazwa to Processing. Instalujemy ją podobnie jak tę wcześniejszą. Tym razem nie pojawiła się nowa ikonka? Ale pojawiła się nowa karta w górnym pasku, nazywa się Geoprocessing. Wybieramy kolejno Geoprocessing --> Narzędzia. Z prawej strony powinno pojawić się nowe okienko. Musimy w nim ustawić zaawansowany interfejs, W dolnej części okienka wybieramy Advanced interface. Następnie w pasku wyszukiwania (w górnej części okienka) wpisujemy Intersection. Wybieramy to narzędzie i wpisujemy kolejno, warstwa wejściowa: warstwa punktowa, warstwa do iloczynu: heksagony. Zapisujemy to do pliku, który nazywamy inter. Naciskamy przycisk Run.
Utworzyła się warstwa, która do punktów ma przypisane wartości heksagonów na których się znajdują. Teraz czas połączyć te punkty z budynkami, by nadać im UniqueID danego heksagonu, przypisując je do siebie.
W okienku processingu wpisujemy w wyszukiwarce join attributes by location (lub w starszej wersji wtyczki join by location) i klikamy dwukrotnie na narzędzie. W warstwa wektorowa wybieramy budynki, zaś w złącz z warstwą wektorową wybieramy inter (w widoku mapy zapisuje się zazwyczaj jako "iloczyn"). Zaznaczamy opcję przecina się (intersects). Przewijamy w dół i zapisujemy to w pliku join. Klikamy Run.
Pojawiła się nowa warstwa, wyglądająca całkiem jak budynki, jednak w jej tabeli atrybutów każdy obiekt przypisany jest do wybranego heksagonu. Zróbmy teraz małe porządki w tabeli atrybutów i usuńmy niepotrzebne rekordy, zostawiając jedynie kolumny: pow, uniqueID i hexArea.

Mamy teraz wiele obiektów z tym samym UniqueID. Każdy z nich ma swoją powierzchnię, jednak od tego momentu chcemy ją zsumować dla każdego heksagonu. Jak to zrobimy? Otóż odpowiedź jest banalnie prosta - zagregujemy tę warstwę.
Wektor --> Narzędzia geoprocessingu --> Agreguj
Tam wybieramy warstwę inter, która w widoku mapy zapisana jest jako warstwa wyjściowa. Jako pole agregacji wybieramy UniqueID. zapisujemy to w pliku bud_ager. Klikamy ok.
Jeśli zajrzymy teraz do tabeli atrybutów nowopowstałej warstwy, to zauważymy, że obiektów jest tyle, na ilu heksagonach znajdowały się budynki. "Ale z tymi powierzchniami coś jest nie tak..." Dobre spostrzeżenie! Otóż, powierzchnia nie przeliczyła się na nowo. Trzeba to zrobić ponownie, dla nowych, większych multiobiektów. Wchodzimy zatem w kalkulator pól tej warstwy i wybieramy aktualizuj istniejące pole, tam zaznaczamy pow. Następnie kolejno wybieramy z okienka Funkcje:
Geometrii --> $area i klikamy ok.
Po wykonaniu tego tabela atrybutów zmieniła się, rekordy zostały zaktualizowane. W tym momencie koniecznie zapisz edycję tej warstwy :)
Czyli, teraz mamy warstwę, w której budynki są pogrupowane w nowe obiekty, w zależności, do którego heksagonu należą, a w tabeli atrybutów jest to wyraźnie zapisane, prawda? Możemy przejść do połączenia tabeli budynków z warstwą heksagonów, by miały one przypisaną powierzchnię budynków, które się znajdują na każdym z nich.
"Będziemy łączyć warstwy?" No cóż, moglibyśmy, ale tak na prawdę interesuje nas tylko tabela warstwy z budynkami, nie jej geometria. "Hmmm... Czyli połączymy tabele?" Precyzując, nie połączymy ich, a dołączymy jedną do innej warstwy. Aby to wykonać musimy kliknąc ppm na nazwę warstwy z heksagonami w okienku z lewej strony, by wybrać właściwości. Tam wybieramy zakładkę złączenia, klikamy zielony plus i wyskakuje nam nowe okienko. W nim wybieramy tabela: bud_agreg, pole tabeli i pole złączenia UniqueID. Następnie wybieramy ok.
"Czyli to koniec?" Cierpliwości, to już prawie koniec. Najpierw wyłączmy z wyświetlania wszystkie warstwy oprócz ostatnio utworzonej. Teraz wejdźmy w tabelę atrybutów warstwy, usuńmy zbędny rekord (który jest powieleniem wartości powierzchni heksagonów) i otwórzmy kalkulator pól. Tam utwórzmy nowe pole, nazywając je proc, typ liczby dziesiętne (real) (10; 2). Najpierw otwieramy nawias. Z funkcji wybieramy: Pola i wartości --> pole z powierzchnią obiektów --> / --> pole z powierzchnią heksagonów --> zamykamy nawias --> *100 Następnie klikamy ok. W tabeli pojawiły się wartości NULL. Musimy je zamienić ręcznie na 0. Zapisujemy edycję.
Na koniec wyświetlmy, jaki udział procentowy mają obiekty w danych heksagonach. Wchodzimy we właściwości warstwy, najpierw wybierając zakładkę styl. Tam ustalamy na samej górze symbol stopniowy, wybieramy gradient którego chcemy użyć, ustawiamy dobraną przez nas liczbę klas i dokładność, ja ustawię liczbę 15 i dokładność 2. Na końcu naciskamy klasyfikuj.
Na koniec, zanim wybierzemy ok, wejdźmy jeszcze w zakładkę etykiety. Tam wybierzmy etykietuj tę warstwę z... proc. Teraz naciśnijmy ok.
Efekt końcowy wygląda jak poniżej :) To już koniec, możemy stworzyć w miarę chęci wydruk, ale o tym w innym poście.
Brak komentarzy:
Prześlij komentarz