Wykorzystanie otwartych standardów i wolnego oprogramowania
Transkrypt
Wykorzystanie otwartych standardów i wolnego oprogramowania
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).