Jak wczytać powiązania Xlink zawarte w danych XML/GML BDOT10k i BDOO w Qgis

Pisząc poprzedni post w którym udostępniłem połączone dane BDOO dla całej Polski poruszyłem temat problemów związanych z xlinkiem czyli połączeniem danych zawartych w xml z innymi danymi np danymi słownika. Wobec dość dużego odzewu, w części krytykującego samo stosowanie w danych gml odnośników xlink:href czuję się w obowiązku kilka rzeczy wyjaśnić:

1. Co to jest xlink:href ?

Xlink:href to połączenie między danymi tworzone na zasadzie relacji. Specyfikację dla tego elementu znajdziecie tutaj http://www.w3.org/TR/xlink/#link-locators

Przykładowy xlink zawarty w pliku OT_PTWP_A.xml wygląda następująco:

<ot:x_uzytkownik xlink:href=”Uzytkownik30.xml”/> – wskazuje na plik Uzytkownik30.xml w tym samym katalogu

<ot:zbiornikWodny1 xlink:href=”PL.PZGIK.201.30__OT_ZbiornikWodny.xml#ZBIORNIKWODNY_54ecd525-50cb-4c31-9721-9dea0d6d85b4″/> – odwołanie do obiektu o gml:id ZBIORNIKWODNY_54ecd525-50cb-4c31-9721-9dea0d6d85b4 w pliku PL.PZGIK.201.30__OT_ZbiornikWodny.xml w tym samym katalogu.

2. Jak wczytać dane do Qgis bez zmiany struktury ?

Trochę na przekór niektórym informacjom w tym na innych blogach GISowych napiszę że xlink:href bez problemu da się wczytać do QGIS – tak jak każdy inny atrybut w pliku xml.  Wystarczy umieścić w pliku gfs  o którym więcej napisałem tutaj  klucz w ElementPath odwołujący się do atrybutu – nazwa_znacznika@nazwa_atrybutu  o i ukryte stanie się jawne.

Przykładowy zapis odwołania xlink w pliku xml ADMS_P:

<ot:adja_a3 xlink:href="PL.PZGIK.201.22__OT_ADJA_A.xml#ADJAA_ce4637cf-b6f4-4ed4-86bc-9217ee658bc9"/>

można odczytać w QGIS dodając w pliku <nazwa_xml>.gfs zapis:

<PropertyDefn><Name>adja_a3</Name><ElementPath>adja_a3@href</ElementPath><Type>String</Type><Width>254</Width></PropertyDefn>

Dodam że nie jest to jedyna metoda wczytywania danych ale najprostsza. Do pobrania przygotowałem przykładowy plik gfs dla plików OT_ADMS_P.xml wczytujący wartość adja_a3 do QGIS. Należy skopiować go do katalogu z xml z województwa, zmienić nazwę na identyczną z plikiem xml z końcówką ADMS_P i otworzyć plik xml za pomocą QGIS.

3. Dlaczego zmieniłem strukturę danych.

Zmieniłem strukturę ponieważ stosuję się do zasad, które opisałem tutaj. Uznałem, że ręczna modyfikacja danych przez nawet średnio zaawansowanego użytkownika opisana w punkcie 2 jest zbyt pracochłonna, a część użytkowników chciałaby mieć dane, które może bez żadnych problemów wczytać do Qgis. Jeśli ktoś chce być ortodoksyjny w zachowaniu schematu danych może wczytać dowolne województwo do Qgis i zmodyfikować wytworzone automatycznie pliki gfs w sposób jaki opisałem w punkcie 2 uzyskując wartości widoczne w QGIS. Niestety należy wówczas rozdzielić wartości rozróżnione # żeby mieć możliwość podłączenia. Co wymaga dodatkowej pracy, dodatkowej wiedzy i dodatkowego czasu.

Jeśli chcecie wiedzieć więcej o przetwarzaniu danych gml w tym w Qgis zapraszam do zapoznania się z ofertą szkoleń.