|2020-07-15|
Geodezja, GIS, Software
Otwarte dane PZGiK w FME - case study
Nowelizacja Prawa geodezyjnego i kartograficznego oraz wejście w życie ustawy „Tarcza Antykryzysowa 4.0” sprawiły, że mamy obecnie do dyspozycji więcej otwartych danych przestrzennych. Jak z nich w efektywnie korzystać, pokażą specjaliści z firmy Globema na przykładzie oprogramowania FME.
Na co dzień często korzystamy z różnych danych statystycznych, geograficznych itd. Pochodzą one z wielu źródeł i są zapisane w różnych formatach, obsługiwanych jedynie przez wybrane systemy. Korzystanie z nich nastręcza niekiedy problemów – czasami konieczne jest złożenie wniosku o ich udostępnienie. Bywa, że nie obejdzie się bez opłaty dla odpowiedniej instytucji. Są to zazwyczaj dane specjalistyczne wykorzystywane do analiz geoprzestrzennych lub opracowywania produktów GIS-owych. Na szczęście spora część danych udostępniana jest na otwartych darmowych licencjach.
Skąd pobierać otwarte dane?
W Polsce część danych od dawna jest udostępniana bezpłatnie. Pochodzą one m.in. od samorządów (województw, powiatów, gmin), z Bazy Danych Obiektów Ogólnogeograficznych (BDOO) czy Głównego Urzędu Statystycznego. Ilościowy przyrost otwartych danych zawdzięczamy wspomnianej już wyżej nowelizacji prawa, służącemu m.in. przeciwdziałaniu i zwalczaniu COVID-19, innych chorób zakaźnych oraz wywołanych nimi sytuacji kryzysowych. Dzięki m.in. Tarczy Antykryzysowej nieodpłatnie udostępniane są ortofotomapy oraz punkty podstawowej osnowy geodezyjnej. W najbliższym czasie uwolnione zostaną również:
- dane topograficzne z Bazy Danych Obiektów Topograficznych (BDOT10k),
- dane pomiarowe LIDAR,
- numeryczny model terenu,
- podstawowe dane o działkach i budynkach.
W jaki sposób pobierać otwarte dane?
Większość serwisów z otwartymi danymi umożliwia ich pobranie w sposób klasyczny – jako wybór zbioru danych oraz obszaru zainteresowania, a następnie pobranie paczki, gdzie dane mogą być zapisane w różnych formatach. Jednak coraz częściej wykorzystuje się API tych serwisów.
Oba podejścia mają swoje wady i zalety. Z pierwszej metody warto skorzystać, jeżeli dane pobierane są jednorazowo i dla określonego obszaru, a także jeśli mamy możliwość ich archiwizowania. Podejście wykorzystujące API jest bardziej uniwersalne – w jednym zapytaniu możemy pobrać dane dla kilku różnych obszarów, bez konieczności ich trwałego zapisywania na naszych komputerach.
Jakie programy umożliwiają pracę z otwartymi danymi?
Nie ma znaczenia, z którego serwisu otwartych danych skorzystamy, w jaki sposób je pobierzemy, w jakim formacie są one zapisane. Dzięki wykorzystaniu platformy FME możliwe jest zarówno wczytanie danych zapisanych lokalnie, w dowolnym formacie, jak również bezpośrednie pobieranie danych z serwisów, właśnie w oparciu o udostępniane API. W dalszej części artykułu przedstawimy, w jaki sposób wykorzystać FME do bezpośredniego pobierania otwartych danych – ortofotomap oraz danych ewidencyjnych.
Ortofotomapa – jak pobrać automatycznie większą partię danych
24 czerwca Główny Urząd Geodezji i Kartografii poinformował, że wszyscy zainteresowani mogą nieodpłatnie oraz bez limitów pobierać dane z podstawowej osnowy geodezyjnej oraz ortofotomapy.
Skorzystajmy zatem z danych rastrowych. Po wejściu na Geoportal i po wyborze warstw „Dane do pobrania” oraz „Ortofotomapa” mamy dwie możliwości selekcji danych: według kryterium aktualności oraz kryterium rozdzielczości przestrzennej piksela. Zobaczymy wtedy skorowidz w podziale na sekcje map z odpowiednim godłem. Podczas selekcji mamy możliwość obejrzenia wszystkich dostępnych ortofotomap z danego punktu, a w zasadzie „bbox-a” wyszukującego dane:
Każda część danych ma szczegółowy opis techniczny danego zobrazowania oraz najważniejszą funkcjonalność, czyli link do pobrania danych. Składnia jest spójna w ramach schematu:
https://opendata.geoportal.gov.pl/ortofotomapa/72972/72972_844226_M-34-4-B-a-2-1.tif
O ile początek i godło mapy nie powinny stwarzać problemu, o tyle wewnętrzna składnia reszty repozytorium sprawia, że dokładny link do pobrania wyświetla się dopiero po wyselekcjonowaniu poszczególnych zobrazowań. Na szczęście zapytanie, które pozwala na zebranie wszystkich danych w jedno okienko, jest na wyciągnięcie ręki. Przy analizie sekcji „Network” w systemie kontroli źródeł (przycisk F12 w przeglądarce), możemy odnaleźć „zapytanie-request” odnoszące się do GetFeatureInfo serwisu wystawionego na PZGiK. Tutaj znajduje się przykład.
Główny trzon zapytania tkwi w odpowiednim odwołaniu do warstw (skorowidz arkuszy map) oraz zapytania przestrzennego – „bbox-a”. Może nam się wydawać, że przy selekcji arkusza na Geoportalu zaznaczamy punkt, jednak algorytm przerabia go na prostokąt lub kwadrat, względem którego wykonuje zapytanie przestrzenne. W efekcie otrzymujemy okno z drzewkiem odpowiedzi.
Powyższa funkcjonalność może być zaimplementowana do platformy FME. Dzięki temu możemy przyspieszyć automatyczne ściąganie interesujących nas danych Polski według konkretnych parametrów, nie tylko pod względem aktualności i rozdzielczości przestrzennej.
W przygotowanym do tego celu skrypcie zostały przygotowane następujące opcje:
- Wybór własnego „bbox-a”, czyli zapytania przestrzennego, który należy do współrzędnych prostokąta/kwadratu zapytania w układzie 1992 (EPSG:2180) w formacie – „y_min,x_min,y-max,x_max”. Jeśli wartość pozostanie pusta, skrypt odwoła się do danych przykładowych z poniższego opisu.
- Wykorzystanie przykładowej listy zapytań przestrzennych, które zostały wygenerowane z siatki podziału arkuszów NMT/Ortofotomap, a w zasadzie centroid poszczególnych sekcji.
- Skrypt daje jednoczesną możliwość wyboru roku/aktualności ortofotomapy oraz rozdzielczości.
Sercem skryptu są dwa zapytania HTTPCaller, które w pierwszym kroku odwołują się do selekcji imitującej zapytanie w Geoportalu, a w drugim do bezpośredniego pobrania danych, wykorzystując link z repozytorium opendata.geoportal.gov.pl.
Dodatkowym aspektem jest odpowiednie złożenie zapytania z wykorzystaniem StringConcatenatora:
Po otrzymaniu wyniku należy jeszcze odpowiednio wyszukać interesujące nas atrybuty z wykorzystaniem reguł wyrażeń regularnych oraz wyczyszczeniem atrybutów. Do tego celu StringSearcher oraz AttributeCreator z AttributeTrimmer będą najlepsze.
Na koniec wyselekcjonowane ortofotomapy są zapisywane w miejscu pliku FMW w formacie TIFF, wraz z dokładnym opisem atrybutów, możliwych do znalezienia na geoportalu. Dane opisowe zachowywane są w formacie CSV.
Skrypt otwiera sporo możliwości. Po jakimś czasie używania można zauważyć tam na przykład łatwość implementacji dodatkowych parametrów, jak konkretne godło, rodzaj kompozycji barwnej czy dokładny numer zgłoszonej pracy. Równie łatwo można z „boxa” ściągnąć całość archiwalnych, dostępnych danych bez filtracji. Wystarczy usunąć „Tester” odpowiedzialny za parametryzację lub zmodyfikować kod. Polecamy przetestowanie, czy podobny sposób nada się do ściągnięcia innych dostępnych danych z Geoportalu, np. BDOT10k.
Skrypt wraz przykładowymi danymi można pobrać tutaj (FME 2020.0, Build 20252).
Ewidencja Gruntów i Budynków - czy już teraz można automatycznie pobierać dane o działkach ewidencyjnych?
W chwili, kiedy piszemy ten artykuł, nie ma jeszcze w pełni otwartego zbioru danych o ewidencji gruntów i budynków, opartego na podobnych zasadach co pobieranie ortofotomap. Nie oznacza to, że są niedostępne. W tej części artykułu przedstawiamy możliwość integracji FME z:
Wszystkie wymienione serwisy posiadają jakąś otwartą formę udostępniania oraz pobierania danych. Oczywiście mają pewne ograniczenia – w przypadku ULDK tzw. harvesting jest niedozwolony. Po pewnej liczbie wysłanych zapytań z jednego IP usługa zostanie zablokowana na kilkanaście godzin. Ale kilka tysięcy zapytań nie stanowi problemu. Tak samo jest w przypadku funkcji „GetFeatureInfo“ dla KIEG.
KIEG oraz KIUT pozwala m.in. na pobranie „kafelka” danych z ewidencją, gdzie mamy do wyboru kilkanaście warstw:
ULDK to serwis z dokładną lokalizacją działek ewidencyjnych względem kilku kryteriów:
- Dokładny identyfikator działki
- Numer działki oraz obrębu
- Współrzędne
Wynikiem zapytania może być geometria w formacie WKB lub WKT oraz atrybuty opisowe:
Łatwo można użyć takiego zapytania, wykorzystując HTTPCaller-a do pobrania interesujących nas danych.
Na skorzystanie z tych serwisów pozwala także platforma FME. W przygotowanym skrypcie znajduje się scenariusz, gdzie pobieramy z pomocą WMS-u „kafelek” danych z ewidencją gruntów i budynków. Następnie staramy się wyekstrahować geometrie działek z pomocą map algebry. Na koniec centroidy powstałych działek posłużą nam do odpytania serwisu ULDK. Dzięki temu dostaniemy dokładne geometrie działek wraz z atrybutami opisowymi, takimi jak TERYT, numer działki czy dokładna lokalizacja względem podziału administracyjnego.
Badany obszar najpierw jest wyodrębniony z danych Państwowego Rejestru Granic oraz tymczasowo zapisany w miejscu lokalizacji skryptu.
Tego typu dane metodami map algebry można podzielić na budynki oraz działki. Dane nie będą w pełni poprawne, ale mogą być doskonałym wsadem dla serwisu ULDK. Wynik części skryptu „CZY MOŻNA COŚ Z TEGO WYKRZESAĆ – MAPA ALGEBRA” wraz centroidami wygląda następująco:
Ostatecznie współrzędne centroid trafiają do ULDK przy użyciu HTTPCaller-a:
Odpowiedź od strony serwisu należy jeszcze podzielić według deliminatorów oraz wyodrębnić geometrie z atrybutu. W przypadku WKB należy pamiętać o zmianie formatu pola z UTF-8 na format binarny. Wynik odzwierciedla założenie przedstawione wyżej: dokładne geometrie działek wraz z atrybutami opisowymi dla badanego obszaru.
Skrypt FME dostępny jest tutaj. Zapraszamy do pobierania!
Otwarte dane - co przyniesie przyszłość?
Następne nowelizacje prawa dotyczące udostępniania danych są wyłącznie kwestią czasu. To, w jaki sposób zostaną przekazane do wglądu, również nie stanowi problemu. FME daje pewność, że będziemy w stanie wykorzystać praktycznie każde API czy serwis. Nawet, gdy dane są udostępnione tylko częściowo, możemy obejść powierzchowne problemy i cieszyć się efektem, co pokazują powyższe przykłady.
Źródło: Globema
|