
Wracamy z naszą serią „Jak to zrobić w FME”. Przedstawiamy tu praktyczne ćwiczenia i przykłady pracy z najpopularniejszymi transformatorami w FME.
Dziś dowiesz się, jak FME radzi sobie z geokodowaniem adresów przy użyciu transformatora Geocoder. FME umożliwia kodowanie w przód, gdzie z adresów generowane są współrzędne geograficzne, albo wstecz – gdzie na podstawie położenia obiektów w terenie pozyskiwana jest informacja o adresie. W ćwiczeniu tym skupimy się na geokodowaniu w przód.
Ćwiczenie
Jako danych wejściowych użyjemy wykazu jednostek organizacyjnych Krakowa w formacie CSV, pobranych ze strony Biuletynu Informacji Publicznej.
W tym scenariuszu wykonamy geokodowanie na podstawie atrybutu adresów szkół w Krakowie. Wszystko po to, aby otrzymać ich współrzędne X i Y w układzie WGS84. Skorzystamy z geokodowania przy użyciu usługi OpenStreetMap.
Wykonanie
- Uruchomienie FME Workbench
Otwórzmy FME Workbench. - Stworzenie nowego obszaru roboczego
W sekcji Create Workspace wybierzmy opcję New
Dodajmy adapter czytający – Reader. Jako format wejściowy ustawmy CSV i wybierzmy pobrany plik z danymi.
Ustawmy tak, aby pierwszy wiersz danych zawierał nazwy kolumn, a konkretne dane zaczynały się od drugiego wiersza:
Przed przystąpieniem do transformacji przejrzyjmy dostępne dane. W tym celu do adaptera czytającego nasze dane źródłowe podłączmy Inspector. Następnie musimy uruchomić przetwarzanie. Zauważmy, że nasze wejściowe dane tabelaryczne składają się z kilku kolumn, tj. nazwa jednostki, kategoria/podkategoria czy adres lub telefon. W realizacji tego zadania najważniejszym atrybutem będzie adres placówki.
5. Selekcja danych wejściowych
Aby ograniczyć nasze wejściowe dane jedynie do adresów szkół, należy przefiltrować je przy użyciu transformatora Tester. Dodajmy zatem funkcję Tester i połączmy go z wejściowym plikiem CSV. Wejdźmy w parametry transformatora i ustawmy, że atrybut Kategoria/Podkategoria ma wartość Edukacja/Szkoły Podstawowe.
Dodajmy transformator Geocoder i połączmy go z portem Passed transformatora Tester. Otwórzmy parametry nowo dodanej funkcji i w sekcji Geocoding Service ustawmy usługę na OpenStreetMap. FME umożliwia geokodowanie na podstawie wielu różnych usług. Można o nich przeczytać w dokumentacji transformatora. My wykonamy to zadanie na OpenStreetMap, ponieważ jest to usługa open source, która nie wymaga zakładania konta lub autoryzacji, jak np. w przypadku Google Maps.
W sekcji Geocoding Parameters ustawmy parametr Mode na Forward oraz Street Address na atrybut zawierający adres naszej placówki:
7. Uporządkowanie atrybutów obiektu
Do portu wyjściowego transformatora Geocoder dodajmy AttributeManager, który pozwoli nam na zarządzanie wszelkimi atrybutami obiektów. Wejdźmy w jego ustawienia i zmieńmy nazwy atrybutów _latitude oraz _longitude _odpowiednio na ‘Szerokość geograficzna’ i ‘Długość geograficzna’. W tym kroku usuwamy również atrybuty Strona BIP oraz E-mail, a także pozostałe, które powstają wskutek geokodowania.
Przed uruchomieniem skryptu należy wprowadzić kilka zmian w parametrach przestrzeni roboczej. W oknie nawigatora, w zakładce dotyczącej transformacji, należy tak zmienić ustawienia, aby transformacja była wykonywana podczas pojawienia się obiektu w porcie Rejected:
Navigator Window >> Translation >> Rejected Feature Handling >> Continue to Translation
Wykonując to ćwiczenie na danych szkół w Krakowie, na wyjściu funkcji Geocodera otrzymamy 37 odrzuconych adresów oraz 51 adresów zakodowanych prawidłowo.
9. Zapisanie wyników do formatu KML i uruchomienie skryptu
Ostatnim etapem transformacji będzie zapisanie poprawnie zakodowanych adresów do formatu KML. Dodajmy więc adapter zapisujący Google KML i ustawmy nazwę oraz folder docelowego pliku, a także Feature Type Definition na Automatic. Połączmy adapter zapisujący z wyjściowym portem transformatora AttributeManager.
Kiedy uruchomimy nasz skrypt, obejrzyjmy wyniki końcowe:
Chcesz dowiedzieć się więcej na temat analizy danych przestrzennych za pomocą FME?
Napisz do nas