Wykorzystanie otwartych standardów i wolnego oprogramowania przy udostępnianiu polskich zasobów geoinformacyjnych Izabela Basista, Jarosław Bydłosz, Piotr Cichociński Wydział Geodezji Górniczej i Inżynierii Środowiska Katedra Geomatyki II Konferencja WOLNE OPROGRAMOWANIE W GEOINFORMATYCE Wrocław, 13-14 maja 2010 r.
INSPIRE przechowywanie, udostępnianie oraz utrzymywanie danych przestrzennych na odpowiednim szczeblu łączenie w jednolity sposób danych przestrzennych pochodzących z różnych źródeł wspólne korzystanie z udostępnianych danych przez wielu użytkowników i wiele aplikacji
Wolne oprogramowanie gvsig OpenJUMP QuantumGIS
Otwarte standardy: WMS, WFS, GML specyfikacje OGC (również normy lub projekty norm ISO EN PN) WMS Web Map Service standard udostępniania map w postaci rastrowej WFS Web Feature Service standard udostępniania danych geograficznych w formacie niezależnym od konkretnego oprogramowania GML Geography Markup Language oparty o XML język znacznikowy umożliwiający zapisywanie danych geograficznych
XML <?xml version= 1.0 encoding= UTF-8?> <adres> <nazwa>jan Kowalski</nazwa> <ulica>mickiewicza 30</ulica> <miasto>kraków</miasto> <kod>30-059</kod> </adres>
XML Schema (1) <elementtype name="adres"> <sequence> <elementtyperef name="nazwa" minoccur="1" maxoccur="1"/> <elementtyperef name="ulica" minoccur="1" maxoccur="2"/> <elementtyperef name="miasto" minoccur="1" maxoccur="1"/> <elementtyperef name="kod" minoccur="1" maxoccur="1"/> <elementtyperef name="państwo" minoccur="0" maxoccur="1"/> </sequence> </elementtype> <elementtype name="nazwa"> <mixed/> </elementtype> (...)
XML Schema (2) <datatype name="kodpocztowy"> <basetype name="string"/> <lexicalrepresentation> <lexical>99-999</lexical> </lexicalrepresentation> </datatype> <elementtype name="kod"> <datatyperef name="kodpocztowy"/> </elementtype>
Baza Danych Topograficznych w GML <Dane> <ADMS_A> <X_KOD_TBD>ADMS02</X_KOD_TBD> <X_AKTUALNOSC_G>2006-02-28</X_AKTUALNOSC_G> <X_AKTUALNOSC_A>2006-02-28</X_AKTUALNOSC_A> ( ) <OBSZAR> <gml:polygon> <gml:outerboundaryis> <gml:linearring> <gml:coord> <gml:x>364025.18</gml:x> <gml:y>507520.82</gml:y> </gml:coord> ( )
Szablon OpenJUMP dla TBD GML <?xml version='1.0' encoding='utf-8'?> <JCSGMLInputTemplate> <CollectionElement>Dane</CollectionElement> <FeatureElement>ADMS_A</FeatureElement> <GeometryElement>OBSZAR</GeometryElement> <ColumnDefinitions> <column> <name>x_kod_tbd</name> <type>string</type> <valueelement elementname="x_kod_tbd"/> <valuelocation position="body"/> </column> (...) </ColumnDefinitions> </JCSGMLInputTemplate>
TBD GML w OpenJUMP
WFS Geoportalu (wersja 1.1.0) Działki http://sdi.geoportal.gov.pl/wfs_dzkat/wfservice.aspx Państwowy Rejestr Granic http://sdi.geoportal.gov.pl/wfs_prg/wfservice.aspx Państwowy Rejestr Nazw Geograficznych http://sdi.geoportal.gov.pl/wfsg_prng/wfservice.aspx
gvsig vs Geoportal
QuantumGIS vs Geoportal
Żądanie GetCapabilities http://sdi.geoportal.gov.pl /wfs_dzkat/wfservice.aspx?request=getcapabilities &service=wfs
Odpowiedź GetCapabilities (1) <?xml version="1.0" encoding="utf-8"?> ( ) <!-- ====================================== --> <!-- SERVICE IDENTIFICATION SECTION --> <!-- ====================================== --> <ows:serviceidentification> <ows:title>wfs - Dane o charakterze katastralnym</ows:title> <!--<ows:fees>none</ows:fees> <ows:accessconstraints>none</ows:accessconstraints>--> <ows:servicetype>wfs</ows:servicetype> <ows:servicetypeversion>1.1.0</ows:servicetypeversion> </ows:serviceidentification>
Odpowiedź GetCapabilities (2) <!-- ==================================== --> <!-- FEATURE TYPE LIST SECTION --> <!-- ==================================== --> <wfs:featuretypelist> <wfs:operations> <wfs:operation>query</wfs:operation> </wfs:operations> <wfs:featuretype> <wfs:name>gmgml:dzialki</wfs:name> <wfs:title>działki</wfs:title> <wfs:defaultsrs>epsg:4326</wfs:defaultsrs> <wfs:othersrs>epsg:2180</wfs:othersrs> <wfs:outputformats> <wfs:format>text/xml; subtype=gml/2.1.2</wfs:format> <wfs:format>text/xml; subtype=gml/3.0.0</wfs:format> <wfs:format>text/xml; subtype=gml/3.1.1</wfs:format> <wfs:format>text/xml; subtype=gml/3.2</wfs:format> </wfs:outputformats> <ows:wgs84boundingbox> <ows:lowercorner>13.864 48.741</ows:LowerCorner> <ows:uppercorner>24.405 55.223</ows:UpperCorner> </ows:wgs84boundingbox> </wfs:featuretype> </wfs:featuretypelist>
Żądanie GetFeature w ukł. WGS84 http://sdi.geoportal.gov.pl /wfs_dzkat/wfservice.aspx?request=getfeature &version=1.1.0 &service=wfs &typename=dzialki &bbox=22.67,50,22.6701,50.0001 &maxfeatures=1
Odpowiedź GetFeature w ukł. WGS84 <?xml version="1.0" encoding="utf-8"?> ( ) <gml:boundedby> <gml:envelope srsname="epsg:4326"> <gml:lowercorner>49.999685 22.669607</gml:lowerCorner> <gml:uppercorner>50.000435 22.670911</gml:upperCorner> </gml:envelope> </gml:boundedby> <gml:featuremember> <gmgml:dzialki gml:id="dzialki.114002058"> <gmgml:id>114002058</gmgml:id> <gmgml:identyfikator>180406_2.0005.25/677</gmgml:identyfikator> <gmgml:powierzchnia>797</gmgml:powierzchnia> <gmgml:egeometria> ( ) </gmgml:egeometria> <gmgml:geometria_deg> <gml:polygon srsname="epsg:4326"> <gml:exterior> <gml:linearring> <gml:poslist srsdimension="2">50.000267 22.669791 50.000076 22.669607
Żądanie GetFeature w ukł. PUWG 1992 http://sdi.geoportal.gov.pl /wfs_dzkat/wfservice.aspx?request=getfeature &version=1.1.0 &service=wfs &typename=dzialki &srsname=epsg:2180 &bbox=762000,244000,762001,244001
Odpowiedź GetFeature w ukł. PUWG 1992 <?xml version="1.0" encoding="utf-8"?> (...) <gml:boundedby> <gml:envelope srsname="epsg:2180"> <gml:lowercorner>50.005994865 22.658331334</gml:lowerCorner> <gml:uppercorner>244110.575266586 762090.740961577</gml:upperCorner> </gml:envelope> </gml:boundedby> <gml:featuremember> <gmgml:dzialki gml:id="dzialki.113964808"> <gmgml:id>113964808</gmgml:id> <gmgml:identyfikator>180406_2.0005.27/307</gmgml:identyfikator> <gmgml:powierzchnia>5234</gmgml:powierzchnia> <gmgml:egeometria> (...) </gmgml:egeometria> <gmgml:geometria_deg> <gml:polygon srsname="epsg:2180"> <gml:exterior> <gml:linearring> <gml:poslist srsdimension="2">244000.211755457 761987.077985728
Państwowy Rejestr Granic w GML <?xml version="1.0" encoding="utf-8"?> ( ) <gml:boundedby> <gml:envelope srsname="epsg:4326"> <gml:lowercorner>20.7757493068129 49.0023866380461</gml:lowerCorner> <gml:uppercorner>23.8089995998258 51.1399600308631</gml:upperCorner> </gml:envelope> </gml:boundedby> <gml:featuremember> <gmgml:gminy gml:id="gminy.697"> <gmgml:nazwa>tomaszów Lubelski</gmgml:NAZWA> <gmgml:obszar>618112</gmgml:obszar> <gmgml:id1>697</gmgml:id1> <gmgml:simplifiedgeometry> <gml:polygon srsname="epsg:4326"> <gml:exterior> <gml:linearring> <gml:poslist srsdimension="2">23.5847181663759 50.5099284983276
gvsig vs Geoserver (WFS 1.1.0)
Wniosek pierwszy W porównaniu do innych de facto standardów zapisu danych przestrzennych (na przykład shapefile), duże możliwości dostosowania struktury danych w formacie GML do konkretnych potrzeb mogą być w niektórych przypadkach bardziej wadą niż zaletą. W szczególności problemem jest rozbicie na dwa elementy: właściwy plik oraz schemat. Ten drugi składnik nie jest w ogóle wykorzystywany przez dostępne wolne oprogramowanie.
Wniosek drugi Uregulowania wymaga współpraca dostępnego wolnego oprogramowania z serwerami WFS w wersji 1.1.0. Część z nich nie obsługuje tego standardu, pozostając przy wersji 1.0.0, natomiast inne, teoretycznie deklarując taką współpracę, w rzeczywistości nie są z nim w pełni zgodne. Szczególnym problemem jest uwzględnianie kolejności osi układów współrzędnych zapisanych w definicjach tych układów (na przykład w bazie EPSG).