420 likes | 599 Views
Podstawy metodyczne i technologiczne infrastruktur geoinformacyjnych Cz. 4: Język GML (Geography Markup Language). Warsztaty naukowe w ramach XIII Konferencji PTIP „Systemy informacji przestrzennej” Warszawa, 8.10.2003. Janusz Michalak Uniwersytet Warszawski.
E N D
Podstawy metodyczne i technologiczneinfrastruktur geoinformacyjnychCz. 4: Język GML (Geography Markup Language) Warsztaty naukowe w ramach XIII Konferencji PTIP „Systemy informacji przestrzennej” Warszawa, 8.10.2003 Janusz Michalak Uniwersytet Warszawski
Język GML został opracowany i jest rozwijany przez zespół utworzony przy OGC – obecnie liderami tego zespołu są:Ron Lake (Galdos Sustems) i Simon Cox (CSIRO) [Źródło: http://www.gmlcentral.org]
<jakiśElement>Wnętrze_jakiegośElementu</jakiśElement> znacznik początku znacznik końca Znacznik początku może zawierać atrybuty, na przykład nazwę: <jakiśElement nazwa="NazwaJakegośElementu"> Element złożony zawiera w sobie inne elementy – proste lub również złożone: <elementZłożony><elementProsty>"coś"</elementProsty>...</elementZłożony> Bardziej czytelna forma zapisu – z wcięciami: <elementZłożony> <elementProsty> "coś" </elementProsty> <innyElementProsty> "coś innego" </innyElementProsty> </elementZłożony>. „abc” języka XML
Przykład prostego schematu definiującego element złożony: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="OkresCzasu"> <xs:annotation> <xs:documentation> Prosty przykład schematu </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="Nazwa"/> <xs:element name="Początek"/> <xs:element name="Koniec"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> sposób zapisu schematu (XML Scheme) podlega tym samym prawom co dokumentu
Odpowiadający mu zapis (dokument) w XML: <?xml version="1.0" encoding="UTF-8"?> <OkresCzasu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:geol="http://netgis.geo.uw.edu.pl/schemas/czas.xsd"> <Nazwa>Jakiś okres czasu</Nazwa> <Początek>1.1.1996</Początek> <Koniec>31.12.2003</Koniec> </OkresCzasu> <!-- ... -->
Okno informacyjne programu narzędziowego XML-Spy – jest to najpopularniejszy edytor i procesor dla opracowywania i przetwarzania plików XML – w tym także GML
Tabelaryczne przedstawienie deklaracji i definicji elementów geoprzestrzennych zawartych w pliku feature.xsd należącym do specyfikacji GML 3.0
Objaśnienia diagramów generowanych przez edytor XML_Spy
Diagram XML wygenerowany przez program XML-Spy struktury elementu typu: osgb:AbstractLineStringPropertyType – większość elementów składowych tworzących tą strukturę należy do przestrzeni nazw gml:
abstrakcyjne i składniki nieobowiązkowe [Źródło: archiwum OGC] Diagram UML przedstawiający hierarchę podstawowych elementów języka GML 3. * Nazwy pisane pismem pochyłym dotyczą elementów abstrakcyjnych Geometria (abstrakcyjny element _Geometry) nie jest obowiązkowym składnikiem elementu _Feature. * * - wielokrotne dziedziczenie <element name="_Object" abstract="true">
Poprawiony model UML dla elementów typu Choice Nazwy pisane pismem pochyłym dotyczą elementów abstrakcyjnych Geometria (abstrakcyjny element _Geometry) nie jest obowiązkowym składnikiem elementu _Feature. Taki model elementu Choice jest zgodny z regułami określonymi w „Profilu UML dla XML” (D. Carlson, 2001)
Najbardziej podstawowym (bazowym) elementem abstrakcyjnym w GLM 3 jest _Object. Wszystkie inne elementy są pochodnymi od niego. Zarówno geoprzestrzenne jak i niegeoprzestrzenne. Z tego elementu są wyprowadzone dwa inne elementy abstrakcyjne: _GML dla innych rzeczywistych elementów związanych z informacją geoprzestrzenną i _MetaData dla opisu danych. W aplikacjach tego języka elementy dotyczące informacji niegeoprzestrzennej powinny być pochodnymi od abstrakcyjnego elementu _Object. Dotyczy to takich elementów jak opis właściciela nieruchomości lub dokumentu określającego własność. niezdefiniowany typ prosty
Składniki abstrakcyjnego elementu złożonego _Feature. FeatureCollection jest elementem pochodnym od _Feature Element _Feature jest elementem pochodnym od abstrakcyjnego elementu _Object – za pośrednictwem elementu _GML (tłumaczenie obu tych terminów na język polski jako objekt prowadzi do niejednoznaczności i nieporozumień). Wszystkie składniki elementu _Feature są nieobowiązkowe i jest on przeznaczony do wyprowadzania tylko rzeczywistych elementów tosiadających atrybuty geoprzestrzenne (tylko do wyróżnień).
Brytyjski projekt MasterMap realizowany przez Ordnance Survey jest najbardziej zaawansowaną aplikacją języka GML [Źródło: http://www.ordnancesurvey.co.uk]
Przeglądarkamapzapisanychw GML firmySnowflakeprzeznaczonado aplikacjiMasrerMap [Źródło: http://www.snowflakesoft.co.uk]
Zwiększenie skali mapy pozwala zobaczyć tysiące wyróżnień (wszystkie elementy graficzne i symbole są zapisane wektorowa w XML) [Źródło: http://www.ordnancesurvey.co.uk]
Każde wyróżnienie ma określonych szereg atrybutów nie-geoprzestrzennych (tabelka pokazuje wartości tych atrybutów dla budynku zaznaczonego kolorem brązowym) [Źródło: http://www.ordnancesurvey.co.uk/ ]
W schematach przestrzeni nazw osgb nie stosuje się kodów i słowników, tylko enumeratory zawierające pełne określenia atrybutów wyliczeniowych [Źródło: http://www.ordnancesurvey.co.uk/ ]
W dalszej kolejności projekt MasterMap przewiduje, że dokumenty GML zawierające dane dla poszczególnych obszarów („mapy” wektorowe) będą uzupełnione ortoobrazami w dużej skali i o wysokiej rozdzielczości [Źródło: http://www.ordnancesurvey.co.uk]
Wielokrotne powiększenie ortoobrazu pozwala zobaczyć jego wysoką rozdzielczość [Źródło: http://www.ordnancesurvey.co.uk]
Fragment nagłówkowy jednego ze schematów XML projektu MasterMap [Źródło: http://www.ordnancesurvey.co.uk]
GML Fragment pliku zapisu MasterMap – aplikacji GML W dokumencie tym obok własnej przestrzeni nazw osgb występuje przestrzeń nazw gml w elementach będących składnikami elementów własnych [Źródło: http://www.ordnancesurvey.co.uk]
Część nagłówkowa dokumentu MasterMap – aplikacji GML Plik zawiera zbiór wyróżnień (osgb:FeatureCollection) ograniczony wielobokiem (gml:Poligon) w formie liniowego pierścienia (gml:LinearRing) [Źródło: http://www.ordnancesurvey.co.uk]
Fragment pliku OSDNFFeatures.xsd definiujący typ „punkt topograficzny” [Źródło: http://www.ordnancesurvey.co.uk]
Lista systemów programowych implementujących GML: Objaśnienia: nazwa firmy,nazwa systemu, S – server, K – klient, E – encoder (GML/XML) • implementacje GML 2.0: • Cogent Logic Corp. :XchainJ (S&K) • CubeWerx Inc. :CubeXPLOR (K), CubeServ Web Map Server (S), CubeServ – Web Feature Server (S), CubeServ – Cascading Web Map Server (S) • Pacific GeoTech Systems Ltd. : shp2gml GeoBroker (S&K) • implementacje GML 2.1: • Cadcorp Ltd. :Cadcorp SIS (K) • ESRI : Arc Explorer (K), ArcIMS (S) • Galdos Systems Inc. : Geographic Data Server (GDS) (S), GML Schema Parse (E), FreeStyler (S) • INT Inc. : JCarnacGIS (S&K) • Intergraph Corp. :GeoMedia GML Data Server (K) • Lat-Lon: deegree (S&K) • MapInfo Corp. : MapXtreme Java Ed. (S&K), MapInfo Prof. (E), MapXtend (E), MapMaker J Server (S&K), MapRouting J Server (S&K) • Snowflake Software : GO Loader (K) • Social Change Online Pty Ltd.: MapBroker (K), WebMap Composer (K), WFS-Lite (S) • implementacje GML 3.0: • Compusult Ltd. : Web Enterprise Suit (S&K), Map Manager (S&K) • Galdos Systems Inc.:GDS (Geographic Data Server) (S) Stan na dzień: 28.08.03 [Źródło: Archiwum OGC]
Przykład zapisu w XML symbolu kartograficznego „drzewo liściaste” i grupy symboli „drzewa liściaste i iglaste” [Źródło: http://www.ordnancesurvey.co.uk]
Przykład zastosowania symboli kartograficznych zapisanych w XML [Źródło: http://www.ordnancesurvey.co.uk]
Przykład zastosowania symboli kartograficznych zapisanych w XML - II [Źródło: http://www.ordnancesurvey.co.uk]
Mercury (ObjectStore) MAIA (Oracle) Aktualizacje z terenu Wyniki wyszukiwania zwracane w GML Aktualizacje w XML Systemyobsługi MasterMap(Ordnance Survey) • MasterMap przechowuje i aktualizuje dane geoprzestrzenne z obszaru Wielkiej Brytanii w skali 1:1250 • MAIA zbiera i przechowuje aktualizacje danych z pomiarów w terenie • Aktualizacje są przesyłane w języku XML do systemu Mercury i przechowywane tam jako obiekty C++ (pod OSZBD ObjectStore) • Mercury udostępnia dane na żądanie klientów w językuserves GML widownia za kulisami scena [Źródło: http://www.ordnancesurvey.co.uk]
Logical Model GML Physical Model Create Tables Routing Create Partitions Setup Translator Oracle 9iASMap Viewer Load Data GIS Apply Updates Index Data Updates Your App Maintain Archive Schemat przedstawiający funkcje realizowane przez GO-Loader firmy Snowflake za kulisami [Źródło: http://www.snowflakesoft.co.uk]
Oprogramowanie GO-Loader firmy Snowflake przeznaczone do konwersji danych MasterMap (pozwala ono dane zapisane w GML załadować do bazy Oracle) [Źródło: http://www.snowflakesoft.co.uk]
Aplikacja C++ Trwałe obiekty Nietrwałe obiekty Co to jest ObjectStore? ObjectStore jest ‘czystą’ obiektową bazą danych (OSBD – obiektowy system zarządzania bazą danych) • Daje możliwość trwałego składowania obiektów C++ • Obiekty są składowane w takiej samej postaci jak nietrwałe obiekty C++ • Obiekty nietrwałe są przechowywane na stosie lub stercie (w RAM) i przestają istnieć po zakończeniu działania aplikacji C++ • Obiekty trwałe (w bazie danych) są dostępne i mogą być używane w taki sam sposób jak zwykłe obiekty C++
Projektowanie struktury obiektowej bazy danych w systemie ObjectStore odbywa się przy pomocy programu Designer w języku UML. Przykład dotyczy próby zastosowania nowej Polskiej Normy w odniesieniu do punktu i krzywej
-X -X -X WFS WFS WFS FR EuroRoads Ontology DE EuroRoads Ontology UK EuroRoads Ontology DE Road GML DE Road XSD UK Road GML UK Road XSD FR Road GML FR Road XSD Euro Roads GMLEuro Roads XSD Euro Roads GMLEuro Roads XSD Euro Roads GMLEuro Roads XSD DE Client UK Client FR Client EU EuroRoads Clients Rozszerzenie standardu OGC dla WFS o funkcje ontologiczne i semantyczne – pozwala ono na semantyczną translację geoinformacji pomiędzy różnymi NSDI WFS-X jest realizowany przez współpracujące ze sobą systemy GO-Loader i GO-Publisher firmy Snowflake. [Źródło: http://www.snowflakesoft.co.uk]
przez dziedziczenie – „extension”(element x:d jest pochodny od elementu x:c) przez zawieraniez odwołaniem - ”ref=” (element x:b jest składnikiem elementu x:a) przez użycie odsyłacza – „Xlink:href” (element x:f odwołuje się w dokumencie do elementu x:e) Łączenie w aplikacjach schematów GML z innymi schematami XML Objaśnienia: x:a x:b x:c x:d x:e x:f Dwie oddzielne, niepowiązane struktury w różnych schematach: Hierarchiczna struktura elementów innego schematu XML (NG – non-GML) Hierarchiczna struktura elementów schematu GML ng:base gml:base gml:a ng:c ng:a gml:c ng:b gml:b ng:e gml:e ng:d gml:f gml:d Czy przenosić ontologię GML do danej dziedziny, czy nie? ng:g ng:f gml:g
gml:base gml:a ng:base gml:c gml:b ng:c ng:a ng:b gml:e gml:d gml:f ng:e ng:d gml:g ng:g ng:f Łączenie schematów GML z NG przez zawieranie z odwołaniem – ”ref=” Schemat GML Schemat NG (non-GML) Rozszerzenie schematu NG: nowe elementy zawierają elementy schematu GML, np. : <element ref=„gml:x”...> ng:g1 ng:d1 ref=˝ ˝ ref=˝ ˝ ref=˝ ˝ gml:e gml:f gml:g w UML: kompozycje
gml:base gml:a gml:c gml:b gml:e gml:d gml:f gml:g Łączenie schematów GML z NG przez dziedziczenie – „extension” Schemat GML Schemat NG (non-GML) ng:base ng:c ng:a ng:b ng:e ng:d ng:g ng:f ng:gml-f1 ng:gml-g1 Rozszerzenie schematu NG: nowe elementy są rozszerzeniami elementów schematu GML ng:g gml:e ng:d w UML: dziedziczenie
ng:base ng:c ng:a ng:b ng:e ng:d ng:g ng:f Łączenie schematów GML z NG przez odsyłace – ”xlink:href=” Dokument GML Dokument NG (non-GML) gml:base gml:a gml:c gml:b gml:e gml:d gml:f gmlid2” gmlid3” gml:g gmlid1” Rozszerzenie schematu NG: nowe elementy zawierają odsyłacze do innego dokumentu ng:d1 ng:g1 xlink:href=„doc1.gml#gmlid2” xlink:href=„doc1.gml#gmlid1” xlink:href=„doc1.gml#gmlid3” w UML: asocjacje
Trzy podstawowe konstrukcje GML 3 pozwalające na używanie w aplikacjach odsyłaczy przy pomocy xlink <attributeGroupname="AssociationAttributeGroup"> <attributeGroupref="xlink:simpleLink"/> <attributeref="gml:remoteSchema"use="optional"/> </attributeGroup> <element name="_reference"type="gml:ReferenceType"abstract="true"/> <complexTypename="ReferenceType"> <sequence/> <attributeGroupref="gml:AssociationAttributeGroup"/> </complexType> <complexTypename="StringOrRefType"> <simpleContent> <extensionbase="string"> <attributeGroupref="gml:AssociationAttributeGroup"/> </extension> </simpleContent> </complexType>
Dokument XML (w tym przypadku GML) może być przy pomocy procesora XSLT przetransformowany na różne dokumenty HTML (lub XML) na podstawie różnych arkuszy styli (CSS) Zastosowanie procesora XSLT pozwala aby geoinformacja zapisana w GML mogła być zobrazowana na wiele różnych sposobów (XSLT – eXtensible Stylesheet Language for Transformation)
Ionic:konwersjaGML do SVG [Źródło: http://www.ionicsoft.com]
GML 3 pozwala na zapis geoinformacji w 3D, lecz zobrazowanie graficzne takiej informacji nastręcza wiele problemów. Przykład: zobrazowanie pokrycia rastrowego (macierzowego) z uwzględnieniem trzeciego wymiaru w systemie GRASS