Pokrywanie się punktów z poligonami

By Lipiec 23, 2019 Blog
fme_poligony

W tym ćwiczeniu używając funkcji PointOnAreaOverlayer stworzymy połączenie przestrzenne między nakładającymi się punktami i poligonami. Funkcji PointOnAreaOverlayer można użyć do sprawdzenia ile punktów jest w danym poligonie, lub znalezienia w którym poligonie leży dany punkt.

Dane

Będziemy pracować na dwóch zestawach danych w formacie shapefile. Jeden z osiedlami Wrocławia, który można pobrać ze strony Systemu Informacji Przestrzennej Wrocławia. Drugi pochodzi z Open Street Map i jego członków i zawiera dane punktowe o transporcie.

Wykonanie

1 ) Uruchomienie FME Workbench i stworzenie skryptu

  • Włączmy FME Workbench i stwórzmy nowy skrypt
pokrywanie się punktów z poligonami

2) Dodanie danych wejściowych

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

pokrywanie się punktów z poligonami 2
Pokrywanie się punktów z poligonami 3

3) Zmiana układu współrzędnych

  • Dane pochodzą z dwóch różnych źródeł i mają różne układy współrzędnych. Zmienimy układ współrzędnych warstwy z transportem z globalnego układu WGS-84 na Polski układ lokalny 2000 pas 6.
  • 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 6 wpisując na przykład identyfikujący go jednoznacznie kod EPSG – 2177.

4) Analiza przestrzenna

  • W kolejnym kroku dodajmy funkcję PointOnAreaOverlayer, która Wykonuje operację nałożenia punktów na obszary. Przecinany jest każdy obszar z każdym punktem.
    Wynikowe obiekty zawierają wszystkie atrybuty z obiektów oryginalnych, oraz atrybut _overlaps, który liczy z iloma obiektami się przecięły.
  • Wejdźmy w ustawienia funkcji i zmieńmy tryb akumulacji atrybutów (Attribute Accumulation -> Accumulation Mode) na łączenie przychodzących atrybutów (Merge Incoming Attributes). Dzięki temu każdy obiekt będzie miał dopisane atrybuty wszystkich obiektów, z którymi się przecinał.

5) Selekcja punktów

  • Użyjemy funkcji Tester, aby przefiltrować obiekty i wybrać tylko te, które są punktami leżącymi wewnątrz osiedli Wrocławia.
  • Dodajmy funkcję Tester i podłączmy ją do portu wyjściowego z punktami (Point) funkcji Wejdźmy w jej ustawienia i ustawmy, że atrybut _overlaps musi się równać 1. Dzięki temu wyselekcjonujemy tylko te punkty, które pokryły się z którymś z osiedli Wrocławia. Do portu wyjściowego z obiektami, które pozytywnie przeszły test (Passed) dodajmy wyjście na przeglądarkę i zmieńmy jej nazwę.

6) Uruchomienie skryptu

pokrywanie się punktów z poligonami 4

Wejście Danych

pokrywanie się punktów z poligonami 5

Wyjście Danych

Użyte funkcje:

  • Reprojector – Wykonuje transformację miedzyukładową geometrii obiektów.
  • PointOnAreaOverlayer – Wykonuje operację nałożenia punktów na obszary.
  • Tester – Wykonuje jedno lub kilka wyrażeń logicznych na atrybutach obiektów.