Domiary na mapie w QGIS

Domiary na mapie w QGIS

Czasem musimy zmierzyć się z zadaniem pokazania domiarów odległościowych ilustrujących detale obiektów wizualizowanych w GIS. Co prawda w QGIS istnieje narzędzie o nazwie „linijka”, ale takiego pomiaru nie można wydrukować. Dziś krok po kroku jak rozwiązać ten problem.

Założenia

Musi powstać obiekt prezentujący domiar liniowy, który jest widoczny także w wydruku. Ma mieć postać strzałki z obustronnymi grotami oraz etykietę prezentującą długość linii (wszystko w tym samym, różowym, kolorze). Dodatkowo długość ma się aktualizować automatycznie zarówno podczas rysowania nowego obiektu jak i jego edycji geometrycznej. Rozwiązanie ma bazować na pliku typu ESRI Shapefile.

Tworzenie nowej warstwy

Tworzymy nową warstwę korzystając z menu Warstwa -> Twórz Warstwę -> Nowa warstwa Shapefile. W oknie które się otworzy wybieramy kolejno Nazwę pliku, Kodowanie (domyślnie UTF-8), Typ geometrii: Linia, oraz układ współrzędnych (w moim przypadku 2000 strefa 8; EPSG: 2179, ale może być dowolny).

Następnie dodajemy nowe pola:
1. uuid (identyfikator unikalny, typ: Tekstowy, długość 38)
2. dlugosc (długość domiaru, typ: Liczby dziesiętne, długość 10, dokładność:2)
oraz usuwamy zbędne pole id – nie będzie nam potrzebne.

Tak utworzona warstwa pojawi się w liście warstw aplikacji.

Automatyczne wypełnianie pól

Zgodnie z założeniami tworzona linia powinna się wymiarować automatycznie. W tym celu klikamy prawym klawiszem na właściwości warstwy i przechodzimy do zakładki: Formularz atrybutów.

W środkowym oknie widzimy atrybuty utworzone w pierwszym kroku (uuid, dlugosc), klikamy pierwszy z nich i uzupełniamy: Alias (Identyfikator) oraz Domyślne -> Wartość domyślna: uuid() oraz zaznaczamy opcję Zastosuj wartość domyślną podczas aktualizacji.

W ten sposób realizujemy funkcjonalność polegająca na automatycznym nadaniu identyfikatora tworzonego obiektu. Następnie klikamy na atrybut dlugosc i wypełnimy odpowiednio: Alias (Długość) oraz Domyślne -> Wartość domyślna: round($length, 2) oraz zaznaczamy opcję Zastosuj wartość domyślną podczas aktualizacji.

W ten sposób realizujemy funkcjonalność polegająca na automatycznym obliczeniu długości tworzonego obiektu. W ramach dodatkowego zabezpieczenia użyto funkcji zaokrąglania wyniku do dwóch miejsc po przecinku. Klikamy Zastosuj.

Tworzymy styl strzałki

Pozostając w otwartym oknie przechodzimy do zakładki Styl i ustawiamy kolejno: Typ symbolu: Strzałka, Typ grotu: podwójna, Rodzaj strzałki: zwykła, Szerokość strzałki: 0,20, Długość grotu: 2,10, Grubość grotu: 0,70. Odznaczamy opcję: Zakrzywione strzałki.

Przechodzimy w tym samym oknie do opcji Proste wypełnienie definiując kolejno Kolor wypełnienia: różowy, Styl obrysu: bez linii. Następnie klikamy Zastosuj.

Definiujemy etykietę

Pozostając w otwartym oknie przechodzimy do zakładki Etykiety i ustawiamy kolejno: Proste etykiety, Etykietuj z dlugosc, Rozmiar: 8,00, kolor: różowy i klikamy Zastosuj

Opcjonalnie możemy dodać otoczkę wokół obiektu. Klikamy menu: Otoczka, Zaznaczamy opcję: Rysuj otoczkę, podajemy rozmiar: 0,80 i kolor: biały. Klikamy Zastosuj

Zapisujemy styl

Aby móc korzystać ze wszystkich elementów zdefiniowanych powyżej w kilku projektach należy zapisać styl. Na dole otwartego okna klikamy Styl-> Zapisz styl. Otworzy się okno dialogowe, w którym należy podać miejsce zapisania stylu oraz opcji eksportu. Styl zapisujemy w katalogu z warstwą używając nazwy warstw. To ważne, bo dzięki temu dodanie warstwy w przyszłości automatycznie doda do projektu reguły stylu, etykietowania opcji automatycznego wypełniania wartości wiele innych elementów.

Testujemy naszą warstwę

Po zdefiniowaniu wartości domyślnych i zapisaniu stylu przetestujemy naszą nową warstwę. Przełączamy warstwę w tryb edycji i wybierając narzędzie Rysuj linię kreślimy ją na mapie. Po jej narysowaniu klikamy prawym przyciskiem myszy (w celu zakończenia edycji) co spowoduje wyświetlenie okna Atrybuty obiektu. Jak widzisz zawiera ono nazwy atrybutów zdefiniowane w polu Alias oraz wypełnione domyślnymi wartościami pola formularza (wygenerowany jednorazowy identyfikator oraz długość wykreślonej linii).

Po zatwierdzeniu przyciskiem OK. Otrzymujemy nowy obiekt w zdefiniowanym kształcie i kolorze wraz z etykietą prezentującą długość narysowanego obiektu.

Podsumowanie i ograniczenia

Otworzony obiekt pomocniczy ma wszystkie zdefiniowane na wstępie style i właściwości i możemy go bez przeszkód wydrukować (jest widoczny w edytorze wydruków).

W tym miejscu należy wspomnieć o istotnym ograniczeniu. Aby strzałka wyświetlała się prawidłowo,  może ona mieć wyłącznie pojedynczy segment – w przeciwnym razie każdy segment stanie się oddzielną strzałką, a etykieta z długością dotyczyć będzie całego obiektu.

Zachęcam więc do eksperymentów. Dla miłośników odkrytych światów zamieszczam gotowy przykład do pobrania, a resztę zachęcam do eksperymentów i komentowania.