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
Dodajmy dane wejściowe, jako format wybierzmy Esri Shapefile i wskażmy położenie danych na dysku.
- 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)
- 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.
- 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ę.
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.
- 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.