Usuwanie niepotrzebnych współrzędnych

By Sierpień 12, 2019 Blog
fme_usuwanie_bledow

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
Wybieranie danych za pomocą maski1
Dodanie danych wejściowych

  • Dodajmy dane wejściowe, jako format wybierzmy Esri Shapefile i wskażmy położenie danych na dysku.
Usuwanie niepotrzebnych współrzędnych2

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.

Usuwanie niepotrzebnych współrzędnych3

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

Usuwanie niepotrzebnych współrzędnych5

Wejście danych: 

Usuwanie niepotrzebnych współrzędnych6

Wyjście danych:

Usuwanie niepotrzebnych współrzędnych7
Usuwanie niepotrzebnych współrzędnych7

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.