W tym ćwiczeniu zajmiemy się uproszczeniem obiektów liniowych przez usunięcie niepotrzebnych werteksów. Użyjemy funkcji Generalizer. Tego typu operacje są często określane jako weeding (ang. plewić, wyrywać chwasty).
Dane
- Będziemy pracować na danych w formacie SHAPE, które opisują sieć rzeczną w województwie mazowieckim i pochodzą z Open Street Map i jego członków. Dla ułatwienia można w Data Inspector wybrać kilka obiektów i je wyeksportować, aby nie pracować na danych z całego województwa. Ja wybrałam dane z okolic Radzymina. Jak wyeksportować dane z Data Inspectora można przeczytać w jednym z naszych artykułów
Wykonanie
- Uruchomienie FME Workbench i stworzenie skryptu
- Włączmy FME Workbench i stwórzmy nowy skrypt
- Dodajmy dane wejściowe, jako format wybierzmy Esri Shapefile i wskażmy położenie danych na dysku.
3) Zmiana układu współrzędnych
W funkcji Generalizer będziemy musieli podać wartość tolerancji generalizowania (Generalization Tolerance) w jednostkach mapy. W tym momencie dane są w globalnym układzie WGS-84, którego miarą są stopnie, więc właśnie w stopniach musielibyśmy podać wartość tolerancji. Jest to mało intuicyjne, więc dokonajmy transformacji do układu polskiego 2000 w pasie 7, którego jednostką miary są metry.
Dodajmy funkcję Reprojector i wejdźmy w jej ustawienia. Pole ze źródłowym układem współrzędnych (Source Coordinate System) możemy zostawić puste – FME sam odczyta układ z danych.
W polu z wynikowym układem współrzędnych (Destination Coordinate System) wejdźmy w więcej układów współrzędnych (More Coord Systems…) i wyszukajmy układ 2000 pas 7 wpisując na przykład identyfikujący go jednoznacznie kod EPSG – 2178.
4) Dodanie funkcji Generalizer
Funkcja Generalizer upraszcza geometrię obiektów korzystając z wybranego algorytmu. Nam potrzebny jest jeden z kilku algorytmów do generalizacji. Zmniejszają one gęstość współrzędnych usuwając werteksy. Można przetestować algorytmy w celu dobrania najlepszego do naszych celów.
W tym ćwiczeniu użyjmy algorytmu Deveau, ponieważ jest on najlepszy w zachowywaniu oryginalnego kształtu. Usuwa on werteksy, które nie mają większego wkładu w ogólny kształt obiektu, oraz może dodać nowe werteksy w lokalizacjach, gdzie oryginalnie ich nie było.
Dodajmy funkcję Generalizer i wejdźmy w jej ustawienia. Algorytm ustawmy na Deveau, a tolerancję na 20 metrów. Resztę parametrów zostawmy domyślnie.
Uruchomienie skryptu
Wejście danych:
Wyjście danych:
Widać, że kształt obiektu został w miarę zachowany. Obiekt stracił wprawdzie płynność, kształt zrobił się bardziej kanciasty, ale liczba werteksów jest aż 3 razy mniejsza. Takie zmniejszenie rozmiaru, nawet kosztem dokładności danych może być w niektórych rozwiązaniach bardzo pożądane.
Użyte funkcje:
- Reprojector – Wykonuje transformację miedzyukładową geometrii obiektów.
- Generalizer – Narzędzie do generalizacji wykorzystujące różne algorytmy upraszczania geometrii.