Skip to main content

Użycie buforów do analiz przestrzennych

By 9 września, 201920 maja, 2020Jak to działa w FME? / Tips & Tricks FME
analiza przestrzenna fme

Podczas wykonywania analiz przestrzennych częstym etapem jest ustalenie czy jeden obiekt znajduje się w określonej odległości od drugiego, na przykład czy straż pożarna jest w odpowiedniej odległości od budynków przemysłowych. W tej sytuacji najłatwiejszym rozwiązaniem jest stworzenie bufora o żądanym promieniu i sprawdzenie, które obiekty leżą w nim, a które poza nim. W tym ćwiczeniu sprawdzimy ile punktów opisujących infrastrukturę transportową miasta Wrocław leży w promieniu 10 metrów od dróg i właśnie użyjemy do tego buforów.

Dane

  • Będziemy pracować na dwóch zestawach danych w formacie SHAPE, jeden z poliliniami opisującymi sieć dróg, a drugi z punktami opisującymi infrastrukturę transportową miasta.
  • Dane dotyczą Warszawy i pochodzą z Open Street Map i jego członków. Przy analizach przestrzennych trzeba pilnować, aby dane były w jednym układzie współrzędnych. W innym przypadku najczęściej wyjdą złe wyniki.
  • W tym ćwiczeniu dane pochodzą z jednego źródła i są w tym samym układzie współrzędnych, więc nie trzeba ich transformować.

Wykonanie

  • Uruchomienie FME Workbench i stworzenie skryptu
  • Włączmy FME Workbench i stwórzmy nowy skrypt
Dodanie danych wejściowych

Dodajmy dane wejściowe, jako format wybierzmy Esri Shapefile i wskażmy położenie danych na dysku.

Dodanie pierwszej funkcji Tester

  • Obiekty reprezentujące drogi mają atrybut, który dzieli drogi na kategorię, na przykład podstawowa, główna. Użyjmy funkcji Tester, aby odrzucić niektóre kategorie (takie jak ścieżka rowerowa, piesza i inne)
Dodanie funkcji Bufferer

  • W następnym kroku dodajmy funkcję Bufferer i wejdźmy w jej ustawienia. Ustawmy promień bufora (Buffer Amount) na 10 i zaakceptujmy. Jednostki są zawsze takie jak jednostki układu współrzędnych, czyli w tej sytuacji są to metry.
Dodanie funkcji SpatialFilter

  • Teraz dodajmy funkcję SpatialFilter, dzięki której znajdziemy punkty znajdujące się w buforze. Ma ona dwa porty wejściowe – Candidate i Filter. Każdy obiekt filtrowany (Candidate) jest geometrycznie analizowany względem obiektów filtrujących (Filter). Do portu wejściowego Candidate podłączmy wejście danych z punktami reprezentującymi transport, a do portu Filter obiekty reprezentujące drogi, które przeszły pozytywnie przez funkcję Tester.
  • Ustawienia funkcji zostawmy domyślnie, możemy nawet ich nie otwierać. Do portu Passed funkcji SpatialFilter, oraz Buffered funkcji Buffer dodajmy wyjścia na przeglądarkę.
Uruchomienie skryptu

Wejście danych:

Wyjście danych:

Jako wynik uzyskaliśmy punkty opisujące infrastrukturę transportową, które znajdują się w odległości 10 metrów i mniejszej od sieci dróg. Analizy takie jak te mogą być bardzo przydatne przy wyszukiwaniu zależności przestrzennych.

Dla przypomnienia, przytoczymy ponownie wszystkie użyte funkcje, potrzebne do wykoania zadania

  • Tester – Wykonuje jedno lub kilka wyrażeń logicznych na atrybutach obiektów.
  • Bufferer – Zastępuje geometrię obiektów obszarem bufora, gdzie każdy punkt na jego obwodzie znajduje się w zadanej odległości od geometrii oryginalnej.
  • SpatialFilter – Filtruje obiekty w oparciu o relacje przestrzenne. Każdy filtrowany obiekt Candidate jest geometrycznie analizowany względem obiektów filtrujących Filter i zadanego predykatu przestrzennej relacji.

Opisywana funkcja ma swoje zastosowanie w architekturze, ale nie tylko. Chcesz pozać gdzie jeszcze może ona zostać wykorzystana?

Napisz do nas