W tym ćwiczeniu używając funkcji AreaOnAreaOverlayer stworzymy połączenie między nakładającymi się poligonami. Funkcji AreaOnAreaOverlayer używa się zazwyczaj do znalezienia części wspólnych, różnic między poligonami, porównania kilku zestawów danych, lub obliczeń powierzchni na podstawie pokrywania się zestawów.
Dane
Będziemy pracować na dwóch zestawach danych w formacie shapefile. Jeden z osiedlami, który można pobrać ze strony Systemu Informacji Przestrzennej Wrocławia. Drugi z budynkami pochodzi z Open Street Map i jego członków.
Wykonanie
Włączmy FME Workbench i otwórzmy nowy skrypt
- 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 budynkami 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 je odczyta 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.
- W kolejnym kroku dodajmy funkcję AreaOnAreaOverlayer, która wykonuje operację nałożenia się obszarów. Przecinany jest każdy obszar z każdym. Wynikowe wspólne obszary zawierają wszystkie atrybuty z obiektów oryginalnych, oraz atrybut _overlaps, który liczy z iloma obiektami nałożył się ten obszar. Najmniejsza wartość atrybutu to 1, ponieważ z założenia każdy obszar przecina sam siebie.
- 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ł.
- Użyjemy funkcji Tester, aby przefiltrować obiekty i wybrać tylko to, które są potencjalnymi budynkami leżącymi wewnątrz osiedli Wrocławia.
- Dodajmy funkcję Tester i wejdźmy w jej ustawienia. Ustawmy, że atrybut NAZWAOSIEDLI (pochodzący z danych o osiedlach) i fclass (atrybut budynków) mają wartość. Kryterium ustawmy na AND. Dzięki temu będziemy mieli pewność, że znalezione obiekty to budynki pokrywające się z którymś z osiedli.
- Po funkcji Tester dodajmy wyjścia na Przeglądarkę, nadajmy im nazwy.
Wejście danych
Wyjście danych
- Reprojector – Wykonuje transformację miedzyukładową geometrii obiektów.
- AreaOnAreaOverlayer – Wykonuje operację nałożenia się obszarów. Przecinany jest obszar każdy z każdym. Wynikowe wspólne obszary zawierają wszystkie atrybuty z obiektów oryginalnych
- Tester – Wykonuje jedno lub kilka wyrażeń logicznych na atrybutach obiektów.