Systemy Informacji Przestrzennej

Adam Inglot
Adiunkt w Katedrze Geodezji
Wydział Inżynierii Lądowej i Środowiska, Politechnika Gdańska
adam.inglot@pg.edu.pl

2022-08-23, aktualizacja 2023-10-23

© ainglot.pl, 2022. Udostępnianie i wykorzystanie zgodnie z licencją Creative Commons Attribution 4.0 International license (CC BY 4.0).
Projekt strony zapożyczony za zgodą autora - Paulo Raposo

CC By 4.0

Symbolizacja i etykiety

Symbolizacja, nadawanie obiektom przestrzennym graficznej reprezentacji. Działanie to wykonywane jest wielokrotnie podczas pracy na danych przestrzennych, nie tylko do zwiększenia estetyki lecz również w celach przeglądu zbioru danych. Nadawanie obiektowi przestrzennemu symbolu kartograficznego jest jednym z elementów procesu tworzenia map topograficznych czy cyfrowych opracowań kartograficznych. Saliszczew [1] o znaku kartograficznym pisał tak:

"Znak kartograficzny to język mapy. Przekazują one jej treść, to znaczy zbiór zawartych na mapie wiadomości o rzeczywistości."

Dane które zostały wykorzystane w ćwiczeniach zostały pobrane z baz danych Głównego Urzędu Statystycznego GUS - Powierzchnia i ludność w przekroju terytorialnym w 2018.

image

Przygotowanie danych polega na dopasowaniu do odpowiedniej formy, tj. brak pustych rekordów, pierwszy rekord powinien zawierać nazwy kolumn. Dane które są pobrane z GUS mają inną formę, niedostępną wprost do zaimplementowania w ArcGIS Pro tak żeby można było korzystać w oprogramowainu GIS.

image

Przygotowanie danych

Łączenie danych w ArcGIS

1. Przygotowane dane udostępnione są na eNauczaniu - dane GUS i powiaty. Pobierz dane, rozpakuj i umieść w projekcie.

2. Dodaj dane powiatyPomorskie do projektu.

image

3. W oknie Catalog rozwiń plik excela DaneGUS.xlsx i przenieś dane do projektu.

image

4. Sprawdź jak wygląda tabela zawartości dane$, PPM na i wybierz Open.

image

Dane powinny wczytać się tak jak na rysunku poniżej, najważniejsze dla nas kolumny to: ID_Pow, Ludnosc i wynagrodze.

image

Przejdziemy teraz do połączenia danych nieprzestrzennych z danymi przestrzennymi - wykonamy złączenia tabel za pomocą wspólnego pola - kolumny.

5. Przyłącz dane z pliku excela do warstwy powiatyPomorskie. PPM na warstwie powiatyPomorskie, następnie Joins and Relates/Add Join.

image

6. Wskaż odpowiednie pola i zatwierdź OK.

image

Dane po przyłączeniu znajdują się w tabeli atrybutowej warstwy powiatyPomorskie.

image

Łączenie danych w QGIS

W tej części zapoznamy się z łączeniem danych w QGIS. Przeprowadzimy działanie na danych dla powiatów (wszystkie powiaty) województwa dolnośląskiego. Z GUS dla przykładu pobrałem dane dotyczące ludności oraz średnich zarobków na rok 2020.

image

7. Pobierz dane z eNauczania - dane dolnoslaskie. Dodaj dane do projektu.

8. Przejdź teraz do łączenia tabel - 2LPM na warstwę, po lewej stronie wybierz Złączenie, na samym dole okna wybierz czerwony "+" i zaznacz odpowiednie pola, tak jak na rysunku. Zatwierdź OK.

image

9. Sprawdź czy dane złączyły się poprawnie.

image

10. Zapisz warstwę z przyłączonymi danymi.

Metody i narzędzia symbolizacji

Symbolizacja w ArcGIS

11. W Contents wskaż LPM warstwę Powiaty. W głównym menu wybierz Appearance, następnie rozwiń Symbology, wybierz Unique Values.

image

12. Przejdź do okna Symbology w polu Field 1 wybierz JPT_NAZWA_.

image

13. Każdy powiat ma indywidualną nazwę i przez to w Contents mamy podany każdy z 20 powiatów dla województwa pomorskiego. Paleta kolorów ma ograniczoną liczbę symboli, niektóre mogą się powtarzać, można zmienić ręcznie. W poniższym przykładzie powiat pucki i lęborski maja ten sam symbol. Dla powielonych symboli zmień ręcznie kolor wypełnienia.

14. W Contents wybierz powiat który ma powielony symbol i wskaż LPM na symbol.

image

15. Przejdź do Symbology, następnie Properties rozwiń paletę kolorów i wybierz unikalny kolor.

image

16. Efekt zmian widać poniżej.

image

17. Przejdź ponownie do symbolizacji warstwy wskazując w Contents warstwę Powiaty.

18. W oknie Symbology, w polu Field 1 wybierz WERSJA_OD.

19. Zwróć uwagę że mamy więcej powiatów niż unikalnych wartości dla dat. Data 21.03.2019 dotyczy trzech powiatów i te powiaty mają taki sam symbol.

image

W ArcGIS mamy dostępnych 7 metod podziału klasowego. Metoda Natural Breaks (Jenks) - polega na iteracyjnym przeprowadzeniu podziału klasowego tak aby wariancje w klasach były najbardziej zbliżone. Inaczej opisując, przedziały między klasami są tak dopasowane aby odchyłki pomiędzy wartościami w danej klasie, a środkiem klasy były jak najmniejsze, przy jednoczesnym warunku jak największej różnicy pomiędzy środkami klas [2, 3]. Jest to metoda często stosowana w wizualizacji kartograficznej metodą kartogramów.

image

image image

Quantile - jest to metoda podziału klasowego biorąca pod uwagę liczbę obserwacji. W przypadku tej metody, gdy liczba obserwacji nie dzieli się bez reszty przez liczbę klas, liczba obserwacji w przedziałach zliczana jest kumulacyjnie do uzyskania całkowitej liczby obserwacji.
Equal Interval - metoda ta polega na wyznaczeniu równych klas o długości C, dzieląc zakres na liczbę klas. W tej metodzie często dochodzić do sytuacji w której klasa jest pusta. $$C = \frac{z_n - z_1}{k}$$ Defined Interval - użytkownik sam definiuje rozpiętość przedziałów. Klasy są obliczane względem podanej wartości.

image

Manual Interval - użytkownik sam definiuje przedziały klasowe.
Geometric Interval - rozpiętość klas rośnie w mniejszym tempie niż w ciągu arytmetycznym. $$C = 10^\frac{|\log z_n| + |\log z_1|}{k}$$
Standard Deviation - przedziały klasowe tworzone są z równymi zakresami wartości, które stanowią część odchylenia standardowego.

20. Program automatycznie wykorzystuje wartość długości granicy obiektów i klasyfikuje metodą Natural Breaks (Jenks).

image

21. Wykorzystaj pole Ludnosc z użyciem metody Natural Breaks (Jenks).

image

22. Wykorzystaj pole Ludnosc z użyciem metody Equal Interval.

image

Symbolizacja dwóch parametrów jednocześnie może być wykonana za pomocą Bivariate colors. Wskazujemy dwa pola numeryczne których wartości mają większą różnorodność niż Grid Size, kolor jest dopasowywany względem osiągniętej klasy dla obu pól równocześnie.

23. Na podstawie powyższych przykładów pobierz i przyłącz dane GUS dla powiatów województwa pomorskiego z informacjami o wysokości przeciętnego miesięcznego wynagrodzenia brutto 2018. (dodać tabele do zadania) sss.

image image image

24. Sprawdź jak będzie prezentowała się symbolizacja gdy zamiast klasyfikacji użyjemy palety kolorów. Wybierz symbolizacje za pomocą Unclassed Colors, Graduated Symbols, Proportional Symbols i Dot Density.

image

image

image

image

25. Powróć do symbolizacji Single Symbol. Zmień kolor granicy obiektu na czarny i grubość 1 pt.

26. W Properties wybierz Layers zmień Solid fill na Hatched fill.

image

27. Następnie w Pattern zmień Angle i Separation zgodnie z rysunkiem.

image

28. Wyłącz z wyświetlania warstwę Powiaty.

Dodajmy teraz warstwę podziału administracyjnego dla miast Gdańsk. Warstwa znajduje się w danych BDOT10k pobranych podczas ćwiczenia 1 - 'Wprowadzenie' - PL.PZGiK.336.2261__OT_ADMS_A. Jak dodać te dane? Oczywiście, można skopiować w oknach katalogu Windows, jednak wiąże się to z powielaniem danych na dysku. Drugi sposób to jest podpięcie już istniejącego folderu w oknie Catalog.

29. Przejdź do Catalog, kliknij PPM na Folders i wybierz Add Folder Connection.

image

30. W oknie folderów wyszukaj i wskaż folder danePG.

image

31. Połączenie do folderu danePG widoczne jest w oknie Catalog.

image

32. Dodaj do projektu warstwę 'PL.PZGiK.336.2261__OT_ADMS_A', 2LPM na nazwę warstwy w oknie Contents przejdziesz do właściwości warstwy i w General zmień nazwę na ADJA_A. (Dane z Geoportalu powiatu Gdańsk).

image

33. Przejdź do właściwości symbolu warstwy, LPM na symbol koloru wypełnienia a następnie wybierz Color Properties \..

image

34. W oknie Transparency wprowadź 50%. Zatwierdź OK.

image

35. Wynik widoczny poniżej.

image

Zastosowanie parametru transparentności dla symbolu obiektu poligonowego (a nie dla całej warstwy które można ustawić w menu głównym), pozwala na wyświetlenie obiektów nakładających się w warstwie.

Symbolizacja w QGIS

36. Wykorzystaj pozyskaną wcześniej warstwę z danymi GUS (wybrane przez Ciebie dane).

37. Przejdź do właściwości warstwy (2LPM na warstwę) w oknie Warstwy.

image

38. W liście po lewej stronie wybierz Styl. Następnie z rozwijalnej listy wybierz Wartości unikalne.

image

39. Dla pola Wartości wybierz JPT_NAZWA_, następnie dodaj wszystkie wartości poprzez przycisk Klasyfikuj i zatwierdź OK.

image

image

40. Przedstaw wybrane wartości z GUS za pomocą kartogramu, użyj do tego funkcji Symbol stopniowy.

image

image

41. Na tych samych danych wypróbuj funkcję Scalone obiekty.

image

image

42. Sprawdź również na co pozwala funkcję Dopełnienie poligonów.

image

image

Zastanów się, dlaczego na rysunku powyżej znajduje się wypełniony jeden obiekt?

43. Wróć do danych ludności (wykorzystaj pomorskie lub dodaj do wybranego województwa dane ludności). Wybierz symbolizację 2.5 D i wprowadź dane, może być konieczne przemnożenie przez 0.1 wartości z tabel.

image

image

Wyświetlanie etykiety w oprogramowaniu GIS

Etykiety w ArcGIS

44. Włącz wyświetlanie warstwy Powiaty oraz wskaż ją w Contents.

image

Wskazanie warstwy - część narzędzi dostępnych w menu głównym lub w oknach dodatkowych odnosi się do wskazanej, podświetlonej warstwy w Contents. Tak, jak w tym przykładzie gdzie chcemy wyświetlić etykiety dla warstwy powiaty, należy ją wskazać a następnie przejść do menu głównego.

45. W menu głównym przejdź do Labeling w Label Class w Field wybierz Nazwa i włącz przycisk Label pierwszy z lewej strony.

image

image

46. Usuń w wyświetlaniu etykiet powtarzający się we wszystkich nazwach początek Powiat. W menu głównym obok pola Field wciśnij przycisk Expression.

image

Zmiana atrybutu przypisanego do obiektu przestrzennego może nastąpić poprzez zmianę w tabeli atrybutowej - jest to najczęściej wybierana forma. W tym przypadku chcemy usunąć stałą część tekstu z atrybutów i można to wykonać z zastosowaniem własnej funkcji w Expression. Budowanie własnej funkcji zaczynamy od def, następnie podajemy nazwę, ArcGIS podpowiada FindLabel - możemy ją zostawić. Do zdefiniowanej funkcji wprowadzamy parametry w okrągłym nawiasie, w tym przypadku będzie to Powiaty.JPT_NAZWA_, linia kończy się dwukropkiem.

W następnej linii przypisujemy do zmiennej Nazwa wartość atrybutów. Kolejnym krokiem jest wybranie tej części tekstu który nas interesuje. W każdym atrybucie powiela się część - powiat. W Python tekst jest to ciąg znaków których pozycje liczymy od 0 do ostatniego znaku lub od końca, czyli od -1 do pierwszego znaku. Weźmy dla przykładu powiat kartuski. Tekst powiat + spacja kończy się na 6 pozycji, to znaczy że interesująca nas część dla wszystkich atrybutów będzie zaczynała się od litery na 7 pozycji. Z tego wynika zapis w 3 linii Nazwa = Nazwa[7:]. Ostatnia linia zwraca wartość wyselekcjonowanej części nazwy.

image

47. W oknie Label Class zmień Language na Python. Następnie zaznacz Advanced i zmień Expression zgodnie z rysunkiem poniżej.

image

image

48. W menu głównym w polu Field wybierz Shape Area. Wyświetlane wartości są w stopniach, należy zmienić na ㎢. Korzystając z zdobytej wiedzy przedstaw dane w odpowiednim systemie współrzędnych.

49. PPM na warstwę Powiat następnie Data/Export Features, uzupełnij nazwę nowego pliku .

image

50. przejdź do ustawień środowiskowych Environments. Następnie wybierz odpowiedni system współrzędnych.

image

image

Posługując się zaawansowanymi ustawieniami dla etykiet zmienimy sposób wyświetlania liczby. Domyślnie wyświetlana jest pełna liczba - część całkowita i część dziesiętna. Chcąc przedstawić powierzchnię w ㎢ z dokładnością do 2 miejsc po przecinku należy wykorzystać funkcję round dostępną w oknie Expression.

51. Przejdź do Expression w Label Class.

image

52. Podziel powierzchnię w metrach kwadratowych przez 1 000 000, a następnie wykorzystaj funkcję Round.

Funkcja round jest dwuargumentowa, oznacza to że należy wprowadzić dwa parametry, w tym przypadku liczbowe. Posłużmy się przykładem: round(123.45678, 3), w tym przykładzie chcemy zaokrąglić liczbę 123.45678 do trzech miejsc po przecinku zgodnie z zasadami zaokrąglania. Czwarta liczba na prawo od separatora '.' to 7, co oznacza że zaokrąglamy w górę. Wynikiem działania funkcji round będzie liczba 123.457. Więcej przykładów:

image

53. Wprowadź w Expression poniższe wyrażenie Round($feature.Shape_Area/1000000, 2) zgodnie z rysunkiem poniżej. $feature.Shape_Area nie wpisujemy ręcznie a wybieramy pole Shape_Area z okna Fields.

image

image

Ponownie wykorzystamy budowanie własnej funkcji w Expression do łączenia atrybutów w jedną etykietę. Początek już znamy, musimy rozpocząć pierwszą linię od def a następnie nazwę funkcji. Niech funkcja przyjmie nazwę dualLabel. W tym przypadku musimy wprowadzić do funkcji dwa argumenty: powierzchnia obiektu Powiaty.Shape_Area oraz nazwa przypisana do obiektu Powiaty.JPT_NAZWA_. Pierwszą linię kończymy dwukropkiem.

Dwie następne linie są identyczne jak w przypadku modyfikacji nazwy powiatu:

image

Teraz zajmijmy się dodaniem do etykiety informacji o powierzchni. Przypiszmy do zmiennej Area powierzchnię powiatu Powiaty.Shape_Area a w kolejnej linii zaokrąglimy wartość powierzchni. Przy wykorzystaniu zmiennych w Expression należy konwertować zmienne do postaci liczbowej. Co to znaczy? Zmienna Area jest typu string - zapisana w formie tekstu, żeby korzystać z funkcji przypisanych do liczb należy wykonać konwersje. Powierzchnie chcemy zapisać w formie liczby zmiennoprzecinkowej, wybierzmy metodę konwersji float() i wykorzystajmy już poznaną metodę zaokrąglania liczb.

Ostatnim etapem jest łączenie nazwy z powierzchnią powiatu. W zmiennej Join połącz zmienną Nazwa i zmienną Area, jednak połączenie tych zmiennych wymaga konwersji liczby na zmienną typu string za pomocą metody str(). Dodatkowo pomiędzy zmiennymi umieścimy znak przejścia do nowej linii - \n. Ostatnia linia ma zwracać wartość z funkcji, czyli zmienną Join.

54. Wypełnij Expression zgodnie z rys. 68, Efekt widoczny na rysunku 69.

image

image

55. Zamknij i zapisz ArcGIS Pro.

Etykiety w QGIS

56. Uruchom QGIS i wprowadź dane przygotowane wcześniej, w przykładzie z ćwiczenia dane nazywają się DolnoslaskieGUS.

57. Wyświetl etykiety nazw powiatów, 2LPM na warstwie, następnie w lewym panelu wybierz Etykiety.

image image

58. Zmień etykiety tak żeby słowo "powiat" i nazwa powiatu były w osobnych linijkach tekstu. Przejdź do Etykiety, LPM na epsilon w prawym górnym rogu okna.

image

59. W oknie Wyrażenie rozwiń metody tekstu teks.

image

Do zmiany etykiety w jednej linii na etykietę dwuliniową wykorzystamy dostępną funkcję w QGIS - wordwrap która zawija tekst. Podajemy dwa argumenty, tekst do podziału oraz liczbę po ilu znakach ma być tekst zawinięty, przełamany do drugiej linii.

60. Znajdź metodę wordwrap, użyj ją do nazw powiatu.

image

61. Zwróć uwagę na podgląd w lewym dolnym rogu.

image

62. Zmień wyświetlanie etykiet w taki sposób jak wcześniej wykonywalismy w ArcGIS, aby usunąć część tekstu - "powiat". Wykorzystaj metodę substr, użyj ją do nazw powiatu. Zwróć uwagę na podgląd w lewym dolnym rogu.

image

image

Korzystając z dostępnych funkcji w QGIS wykonamy podobne łączenie nazw powiatów z powierzchnią powiatu. Wykorzystaj funkcję substr, to_string i round. Metoda substr zwraca część ciągu tekstowego, podobne zastosowanie jak w ArcGIS użyliśmy funkcji python do ograniczenia tekstu - Nazwa[7:]. Pozostałe funkcje już były omówione.

63. Wykorzystaj przedstawione metody do ułożenia i wyświetlenia etykiet.

image

image

64. Zakończ pracę w QGIS.

Używane skróty:

[1] Konstantin A Saliszczew. Kartografia ogólna. Wydawnictwo Naukowe PWN, 2003.
[2] P. Mac Carron, K. Kaski, R. Dunbar. Calling Dunbar’s numbers. Social Networks, 47:151–155, oct 2016.
[3] Jian Chen, Shengtian Yang, Hongwei Li, Bin Zhang, Junrong Lv. Research on geographical environment unit division based on the method of natural breaks (Jenks). 40(4W3):47–50, 2013.
Autor: Adam Inglot, mail: adam.inglot@pg.edu.pl