Teoretycznie każda gmina w Polsce prowadzi Ewidencję Miejscowości Ulic i Adresów zwaną EMUiA. Każda z gmin prowadzi ją w dowolnie wybranym przez siebie systemie (i dobrze), który powinien wydawać takie same dane GML w schemacie danych opisanym w rozporządzeniu. W idealnym teoretycznym modelu prawnym powinniśmy więc otrzymać dane z każdej gminy zapisane w jednakowej strukturze.
Ze względu na to że firma Geo-System opublikowała dostęp do danych EMUiA dla gmin prowadzonych w systemie IMPA (duże brawa) postanowiłem zobaczyć jak wyglądają dane w postaci źródłowej i nie przetworzonej do PRG. Analizę tego co z grubsza można znaleźć w PRG jeśli chodzi o jakość wiązań danych punktów adresowych do ulic opublikowałem już wcześniej tutaj.
W celu analiz danych EMUiA od Geo-Systemu użyłem całości danych dostępnych na stronie http://danepubliczne.punktyadresowe.pl/ dostęp 04.02.2017r.
Pierwszą czynnością jaką wykona osoba, która chciałby dane EMUiA w sposób bardziej zaawansowany przetworzyć i np załadować do bazy danych lub użyć w bardziej zaawansowanym systemie jest pozyskanie schematu danych XSD w celu importu danych lub próby automatycznego wytworzenia ze schematu klas programistycznych, którymi będzie można te dane obsłużyć.
Pierwszym źródłem, które powinno dostarczyć taki schemat XSD są dane do których schemat powinien być załączony lub rozporządzenie w postaci cyfrowej z dołączonymi gotowymi do użycia podpisanymi cyfrowo schematami (niestety takiego zwyczaju w Polsce nie ma).
Schemat XSD dołączony do danych Geo-Systemu nie waliduje się ze względu na błędy struktury i brak pliku z PRNG więc jego użycie jest niemożliwe. Na stronie GUGiK można znaleźć schematy XSD z rozporządzeń więc udałem się tam po gotowy schemat z rozporządzenia w sprawie Emuia.
Po pobraniu i rozpakowaniu schematu dla miejscowości i adresów ze strony GUGiK zobaczyłem oprócz modelu EAP dwa pliki xsd, które przy próbie użycia w narzędziach o których mówię tutaj wygenerowały błędy min. w postaci informacji o braku plików – BT_ModelPodstawowy.xsd oraz NG_PRNG.xsd.
Błędy wynikały ze zmiany nazw plików XSD przez pracowników GUGiK oraz pozostawieniu oryginalnych nazw w odwołaniach do plików w treści schematu wskutek czego narzędzia nie mogły połączyć się z plikami których nie było w katalogu.
Ot, taki mały błąd na zniechęcenie potencjalnego ciekawskiego. Poprawa nazw i skopiowanie pliku z PRNG dalej nie poprawiło sytuacji – po raz kolejny zobaczyłem błędy schematu.
Szukając dalej gotowego do użycia schematu dla danych EMUIA na stronie emuia.gugik.gov.pl natknąłem się na niewiele mówiący czarny przycisk „Pobierz wytyczne V 2.0.1”. Kopia lokalna tutaj.
Po otwarciu pliku zip znalazłem min. dokument o nazwie PRG_Wytyczne_akt_danymi_adresowymi_2.01.pdf
Wczytując się w dokument stwierdziłem że wymiana danych EMUiA z systemem PRG opisana jest w sposób, który zniechęciłby każdego potencjalnego śmiertelnika. Ilość warunków, dokumentów, procedur będzie dla normalnego człowieka nie do ogarnięcia a pewne rzeczy na pewno nieco bardziej zaawansowanych rozśmieszą np. Główne Centrum Certyfikacji Geoportal. Autor dokumentu używa notacji Xlink niezgodnie ze specyfikacją, część zaleceń jest mocno dyskusyjna np. brak możliwości użycia elementu gml:featureMember czy automatyczne zdefiniowanie kolejności XY w zależności od typu użytej defnicji układu współrzędnych w GML. Brak jest również prostej strony w której odpowiedzialny za zadanie zasilenia urzędnik mógłby kliknąć załaduj, dodać plik z emuia i dostać raport z zasilenia przynajmniej do czasu wytworzenia interfejsu w jego oprogramowaniu. Ale wróćmy do meritum.
Wczytując się w rozdział 5 tego dokumentu można dowiedzieć się że są używane równocześnie dwa schematy dla danych EMUiA przy imporcie do systemu PRG GUGiK.
Według opisu w dokumencie różnice w wersjach schematu EMUiA są niewielkie i polegają głównie na zamianie obiektów typu datatime (data i godzina) na date (tylko data) oraz zmianie kilku słowników.
Poniżej przykładowa zmiana słowników w pliku AD_Emuia.xsd:
Niestety, zmiany dotyczące nazwy elementu i słowników wprowadzono również do schematu XSD w pliku NG_PRNG.xsd odpowiadającemu za strukturę dla danych PRNG co odbije się na wszystkich systemach i danych korzystających referencyjnie z danych PRNG.
Oczywiście w żadnym znanym mi dokumencie ani na żadnej stronie GUGiK nie ma informacji o takiej zmianie więc wszyscy korzystający z PRNG według starego schematu odczują to dopiero gdy zorientują się że dane nie walidują się do schematu (co w przypadku tego rejestru jest normą), który posiadają lub co gorsza nieświadomi takiej zmiany nie zaimportują części danych ze względu na brak odpowiednich słowników lub tego że ich system rozróżnia wielkie i małe litery. Poniżej przykładowe zmiany w tym schemacie XSD PRNG.
Wracając do EMUiA. Będąc posiadaczem aż dwóch schematów XSD mogłem przystąpić do działania. Najpierw musiałem ustalić według którego z nich wydano dane Geo-Systemu.
Walidacja dowolnego pliku XML za pomocą XSD pokazuje że szczęśliwym zwycięzcą w przypadku danych EMUiA z firmy Geo-System został schemat nr 1.
Mając dane i schematy zgodne z danymi mogłem przystąpić do próby wczytania i analizy danych EMUiA o czym przeczytacie w kolejnym wpisie.
Prośba do Geo-Systemu:
Proszę przedstawicieli firmy Geo-System o zamianę schematów w publikowanych plikach na ten określony przez GUGiK jako wersja 1 i umieszczenie odpowiedniego odwołania w nagłówku pliku XML. W razie pytań co zmienić proszę o maila.
Prośba do GUGiKu:
Bardzo proszę o uporządkowanie schematów na stronie gugik.gov.pl tak aby miały prawidłowe nazwy i były aktualne w stosunku do serwowanych danych. Pełne wersjonowanie schematów to byłby już szczyt moich marzeń. Informowanie o zmianach w schematach i dostarczanie do nich zaktualizowanych EAP powinno być normą.