GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... ·...

32
GML w wolnym oprogramowaniu Tomasz Kubik Politechnika Wroclawska Warszawa, 12 kwietnia 2012

Transcript of GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... ·...

Page 1: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

GML w wolnym oprogramowaniu

Tomasz Kubik

Politechnika Wrocławska

Warszawa, 12 kwietnia 2012

Page 2: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 2/32

Plan prezentacji

• Narzędzia do transformacji UML/XMI do XSD

• Programowe przetwarzanie dokumentów XSD/XML

• Biblioteki i narzędzia wspierające XSD/XML/GML

• Przykład: WFS (GML) + PostGIS

Page 3: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 3/32

Transformacja UML-XSD

Page 4: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 4/32

HollowWorld

• Szablon UML, w którym uwględniono standardy związane z geoinformacją– Główne komponenty ISO 19100 pochodzą z ISO/TC 211 "Harmonized Model"

(http://www.isotc211.org/hmmg/HTML/root.html), rozszerzone o UML-owąreprezentacją komponentów GML (z ISO 19136, których nie ma w modelu zharmonizowanym) oraz kilka drobnych rozszerzeń modelu Coverages (wg OGC 06-188r1), wspiera komponenty SWE

• Umożliwia definiowanie własnych szablonów oraz wspierane formaty– EAP (projektu Enterprise Architect)– XMI 1.1 z rozszerzeniami ED (import pakietów do modeli EA) + XML plik dla

profilu aplikacyjnego GML (do konfiguracji EA)– XMI 1.0 – bez diagramów (do importu pakietów do innych narzędzi UML)

• Posiada profil UML dla EA zawierający standardowe stereotypy oraz otagowane wartości z SO 19136

• Możliwa weryfikacja zgodności z profilem UML ISO 19136 w środowisku FullMoon (https://www.seegrid.csiro.au/wiki/bin/view/AppSchemas/FullMoon)

• Więcej informacji o szablonie schematu aplikacyjnego GML:– https://www.seegrid.csiro.au/wiki/AppSchemas/HollowWorld

• Źródła do pobrania:– https://www.seegrid.csiro.au/subversion/HollowWorld/trunk/

Page 5: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 5/32

ShapeChange

• Wymaga/wspiera profil UML– Schemat aplikacji powinien być zgodny z ISO 19109:2005, oraz GML 3.2 (ISO

19136) Annex E, GML 3.3 oraz ISO/TS 19139.– Obsługuje zdefiniowane w specyfikacji UML oraz standardach ISO serii 19100

(ISO/TS 19103:2005, ISO 19109:2005 oraz GML 3.2/ISO 19136:2007).• Format wejścia

– Pliki projektów Enterprise Architect, dokumenty XMI 1.0, GSIP Microsoft Access Database

• Format wyjścia (XML Schema)– GML 3.2 Encoding Rule, GML 3.3 Encoding Rule, ISO/TS 19139 Encoding Rule– Wspiera generowanie reguł schematrnu z ograniczeń OCL– SWE Common Data Model 2.0 Encoding Rule (w przygotowaniu)– Inne: GSIP, INSPIRE, CityGML ADEs, ISO 19115 metadata profiles, OKSTRA

• Uruchamiany z linii komend:

http://shapechange.net/

java -jar ShapeChange-2.0.0-SNAPSHOT.jar -Dfile.encoding=UTF-8 -c http://shapechange.net/resources/test/testXMI.xml

Page 6: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 6/32

UML/INTERLIS-Editor orazINTERLIS-compiler

• Eksport diagramów (JPEG, WMF, SVG), import modeli (w tym XMI)• GUI dla większości elementów ze składnią INTERLIS• Odczyt/zapis w składni INTERLIS 2

– (bieżąca wersja to 2.3, standard szwajcarski SN612031)• Odczyt w składni INTERLIS 1

– Standard szwajcarski SN612030• Wielojęzykowy interfejs (de,en,fr)• Wbudowany weryfikator modelu• Zapis schematów GML 3.2• Zapis katalogów cech w HTML i XML• API do budowania rozszerzeń (Java, LGPL)

http://www.umleditor.org/

Page 7: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 7/32

Schematy i pliki GML

• Schemat GML zapisany jako XSD

• Dane GML zapisane jako XML

• Model danych wewnątrz aplikacji

Page 8: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 8/32

Metody programowego przetwarzania dokumentów XML• DOM – Document Object Model

– Ładowanie do pamięci– Duże koszty (czas i zasoby)– Pełny dostęp (dostęp do całego drzewa)– Odczyt/zapis

• SAX – Simple API for XML– Przetwarzanie wsadowe– Duża wydajność (czas i zasoby)– Sekwencyjność, selektywność (dostęp do wybranych elementów)– Tylko odczyt

• XML data binding – wiązanie XML-a– Reprezentowanie danych zawartych w dokumentach XML jako obiektów w

pamięci komputera– Intuicyjność interfejsu, ale ograniczenie możliwości modyfikacji struktury i

wartości (dotyczy dokumentów o tym samym schemacie XSD)– Mniejsze koszty niż przy DOM

• Pull parsing – przetwarzanie strumieniowe– Aplikacja kontroluje przetwarzanie, „wyciągając” zdarzenia z parsera– Działanie parsera podobne do iteratora, kursora lub strumienia danych– duża wydajność, alternatywa do SAX

Page 9: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 9/32

DOM i SAX

Page 10: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 10/32

Standardy i implementacje Java

• Java API for XML Processing (JAXP)– JSR 63 (JAXP 1.1 and 1.2)– JSR 5 (JAXP 1.0)– W3C Recomendation: Document Object

Model (DOM) Level 2 Core Specification

• Java Architecture for XML Binding (JAXB) – Java SE 7: JAXB 2.2.3 (JSR 222,

maintenance release 2) – Java SE 6: JAXB 2.0 (JSR 222)

Page 11: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 11/32

Działanie parsera DOM

http://docs.oracle.com/cd/B19306_01/appdev.102/b14252/adx_j_parser.htm

Page 12: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 12/32

Działanie pasera SAX

http://docs.oracle.com/cd/B19306_01/appdev.102/b14252/adx_j_parser.htm

Page 13: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 13/32

Parsowanie XML z JAXP

http://docs.oracle.com/cd/B19306_01/appdev.102/b14252/adx_j_parser.htm

Page 14: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 14/32

XML data binding: korzystanie z JAXB

Page 15: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 15/32

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="KontaktType">

<xs:sequence>

<xs:element name="Imie" type="xs:string"></xs:element>

<xs:element name="Email" type="xs:string"></xs:element>

</xs:sequence>

</xs:complexType>

<xs:element name="Kontakt"type="KontaktType"></xs:element>

</xs:schema>

Korzystanie z JAXB

JAXBContext jc = JAXBContext.newInstance("generated" );

Unmarshaller u = jc.createUnmarshaller();

FileInputStream f = new FileInputStream("mojeDane.xml");

JAXBElement<generated.KontaktType> k =

(JAXBElement<generated.KontaktType>) u.unmarshal(f);

System.out.println(k.getValue().getImie());

System.out.println(k.getEmail ().getEmail());

> xjc dane.xsd

<?xml version="1.0" encoding="UTF-8"?> <Kontakt> <Imie>Jan</Imie> <Email>[email protected]</Email> </Kontakt>

Page 16: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 16/32

CodeSynthesis XSD

• Kompilator schematów XML do C++, open-source, cross-platform • Generuje klasy C++ pozwalające na parsowanie plików XML oraz

serializowanie danych do plików XML (file-per-schema, file-per-type)• Nazwy występujące w wygenerowanych automatycznie klasach

odzwierciedlają nazwy ze schematu • Używa statycznego typowania, co pozwala wychwytywać błędy na

etapie kompilacji• Bazuje na bibliotece Xerces-C++• Wspiera dwa mapowania:

– in-memory C++/Tree (podobnie do DOM)– stream-oriented C++/Parser (podobnie do SAX)

http://www.codesynthesis.com/products/xsd/

auto_ptr<Kontakt> k = Kontakt ("c.xml");

cout << k->imie () << ", "

<< k->email () << endl;

<?xml version="1.0" encoding="UTF-8"?> <Kontakt> <Imie>Jan</Imie> <Email>[email protected]</Email> </Kontakt>

Page 17: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 17/32

CodeSynthesis XSD - różnice w przetwarzaniu XML

// XML Binding: C++/Tree

Kontakt k = ...

cout << k.imie () << ", "

<< k.email () << endl;

// DOM

DOMElement* k = ...

DOMNodeList* l;

l = k->getElementsByTagName ("Imie");

DOMNode* imie = l->item (0);

l = c->getElementsByTagName ("Email");

DOMNode* email = l->item (0);

cout << name->getTextContent () << ", „

<< email->getTextContent () << endl;

<?xml version="1.0" encoding="UTF-8"?> <Kontakt> <Imie>Jan</Imie> <Email>[email protected]</Email> </Kontakt>

Page 18: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 18/32

CodeSynthesis XSD - różnice w przetwarzaniu XML

// XML Binding: C++/Parser

class KontaktParser: ... {

virtual void imie (const string& n){

cout << n << ", "; }

virtual void email (const string& e){

cout << e << endl; }

};

// SAX

class KontaktParser: ... {

virtual void endElement (const string& name) {

if (name == "Imie")

cout << ", " else

if (name == "Email")

cout << endl; }

virtual void characters (const string& s) {

cout << s; }

};

<?xml version="1.0" encoding="UTF-8"?> <Kontakt> <Imie>Jan</Imie> <Email>[email protected]</Email> </Kontakt>

Page 19: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 19/32

CodeSynthesis XSD- wspierane standardy i schematy

• RSS 2.0• XML Metadata Interchange (XMI)• Dimensional Markup Language (DML)• Deployment and Configuration (DnC)• XML Schema Standard Type Library (XSSTL)• XML-Signature Syntax and Processing (XMLDSIG)• Open Vulnerability and Assessment Language (OVAL)• Financial products Markup Language (FpML)• ACORD Insurance Standard• CoT (Cursor On Target)• COLLADA (COLLAborative Design Activity)• FpML (Financial products Markup Language)• NIST-ITL (Interchange of Fingerprint, Facial, & Other Biometric Information)• RailML (Data exchange format for railway applications)• SMIL (Synchronized Multimedia Integration Language)• UDDI (Universal Description, Discovery & Integration)• X3D (Integrated 3D graphics and multimedia framework)• 3D XML (3D data sharing)

Page 20: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 20/32

CodeSynthesis XSD- GML

• GML (Geography Markup Language)– 3.1.1 (C++/Tree mapping, file-per-schema)

• rozwiązano problem zapętlenia zależności smil20.xsd and smil20-language.xsd

– 3.2.0 (C++/Tree mapping, file-per-type)• pliki w jednym katalogu lub podkatalogach

– http://wiki.codesynthesis.com/Schemas/GML

• CityGML (Virtual 3D city and landscape models)– CityGML 1.0.0 (C++/Tree mapping)

• Problem z wykorzystaniem grup podstawień

– http://wiki.codesynthesis.com/Schemas/CityGML

Page 21: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 21/32

FDO - Feature Data Object

• API do manipulowania, definiowania i analizowania informacji przestrzennej o różnym pochodzeniu

• Korzysta z modelu bazującego na „dostawcach”

• (C++/.NET, LGPL)• Pakiet

OSGeo::FDO::Xml

FDO 3.5 wspiera GML 2.1.2

FDO 3.6 wspiera GML 3.0

http://fdo.osgeo.org/

Page 22: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 22/32

GeoTools• Dostarcza metod do przetwarzania danych przestrzennych

– Obsługuje geometrię poprzez Java Topology Suite (JTS)– Wspiera obsługę atrybutów i filtrów przestrzennych zgodnie z OGC Filter

Encoding• Umożliwia dostęp transakcyjny i wielowątkowych• Obsługuje

– bazy danych (db2, h2, mysql, oracle, postgis, spatialite, sqlserver)– pliki różnych formatów

• Rastry (arcsde, arcgrid, geotiff, grassraster, gtopo30, image (JPEG, TIFF, GIF, PNG), imageio-ext-gdal, imagemoasaic, imagepyramid, JP2K, matlab)

• Wektory (app-schema, arcsde, csv, dxf, edigeo, excel, geojson, org, property, shapefile, wfs)

• Biblioteka Java (LGPL)

http://www.osgeo.org/geotools

Page 23: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 23/32

GeoTools

• Wspiera różne układy współrzędnych i transformacje• Obsługuje różne projekcje• Pozwala filtrować atrybuty przestrzenne i nieprzestrzenne• Pozwala parsować dokumenty XML z wykorzystaniem schematów

– Dostarcza dowiązania do GML, FE, KML, SLD, and SE.• Pozwala na tworzenie i wykorzystanie rozszerzeńOGC Style Layer Descriptor

/ Symbology Encoding data structures and rendering engine• Wspiera standardy:

– OGC General Feature Model oraz Simple Feature – OGC Grid Coverage– OGC Filter and Common Constraint Language (CQL)– Stronę klientów WFS, WMS, WPS (eksperymentalnie)– ISO 19107 Geometry

Page 24: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 24/32

GeoTools – wykorzystywane parsery

Schema assisted parsing backed by Eclipse XSD to represent schema.

Easier to trace through but still not straight forward

Allows streaming for large GIS data volumnes.

Filter GML SLD WMS WFS1.0 WFS1.1 WPS XSD

xmldomsaxGTXML

Proof of concept of schema assisted parsing allowing streaming into Java Objects. Code is fast and well tested but is hard to trace through

Filter GML SLD WMS WFS1.0 XSD

xmldomsaxXDO

Should combine the ease of DOM with the streaming performance of XDO and GTXML

n/adomsaxPull

Fast but not suitable for dynamic data, precomplied

n/axmldomsaxJABX

Easy to trace through and debug, difficult to configure for specific data

Filter GML2 SLDxmlTransform

Forgiving and easy to trace through and debug, memory limitation for GIS data

Filter GLM SLDdomDOM

Hard to trace through, parse not easily extended

Filter GML SLDdomsaxSAX

NotesSupportEncodeDOMSAXTechnology

Page 25: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 25/32

GML Parser for Java

• Lekki parser GML– Plik GML do geometrii JTS– Geometrie JTS do pliku GML

• Wspiera GML 3.1.1• Distrybucja z repozytorium Maven

http://confluence.highsource.org/display/OGCS/Home

JAXBContext context = JAXBContext.newInstance("org.jvnet.ogc.gml.v_3_1_1.jts");

WKTWriter wktWriter = new WKTWriter(); Unmarshaller unmarshaller = context.createUnmarshaller(); Geometry geometry = (Geometry) unmarshaller.unmarshal(resource);System.out.println(wktWriter.write(geometry));

Page 26: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 26/32

GDAL

• biblioteka służąca do odczytu i zapisu rastrowych danych geoprzestrzennych, korzystająca z Xerces lub Expat

• GDAL używa OGR do odczytu i zapisu wektorowych danych

• OGR posiada sterownik GML– http://www.gdal.org/ogr/drv_gml.html

http://www.gdal.org

GML 2.1.2GML2 i ograniczony GML3OGR < 1.8.0

GML 2.1.2 lub GML 3 SF-0(GML 3.1.1 Compliance level SF-0)

GML2 i GML3 które mogą byćprzetłumaczone na model SF

OGR >= 1.8.0

ZapisOdczytWersja

Page 27: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 27/32

Narzędzia wspierające GML (odczyt/zapis)

• Każdy serwis WFS musi umieć zapisać GML, przy czym serwis transakcyjny musi czytać GML

• Klienci serwisów WFS powinny wspierać obsługę plikówGML (przynajmniej częściowo)

• Listę narzędzi wspierających GML i WFS można znaleźćpod adresem:– http://www.opengeospatial.org/resource/products/byspec

Page 28: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 28/32

Narzędzia wspierające GML• Carbon Tools GAIA – platforma zbudowana na bazie CarbonTools PRO pozwalająca na

dostęp i przeglądanie wielu źródeł naych przestrzennych (usługi OGC: WMS, WMTS, WCS, WFS, obsługa FE; inne usługi: Microsoft Bing Maps, Yahoo! Maps, OSM; pliki w formacie SHP, KML/KMZ, DXF, MIF, GML oraz GML Simple Features) (Microsoft .NET >= 2.0)

• Snowflake GML Viewer - pozwala m.in. odczytać i zobrazować dane o schemacie GML2 lub GML3, posiada predefiniowane style dla OS MasterMap (Wielka Brytania), IMRO2006 (Holandia), TOP10NL (Holandia) and AAA-NAS (Niemcy)

• gvSIG 1.1 – aplikacja, która obsługuje m.in. WFS 1.1 oraz pozwala na odczyt/zapis plików GML 3.1.1. (Java, GPL).

• QGIS (Quantum GIS) – aplikacja wspierająca obsługę GML (odczyt/zapis) za pośrednictwem biblioteki OGR (C++/Python; GPL)

• uDig (User-friendly Desktop Internet GIS) - aplikacja pozwalająca obsługiwać różne źródła danych przestrzennych (usługi WMS, WFS; pliki w różnych formatach) (Java, EPL orazBSD)

• OpenLayers (wersje 2.12 – stabilna, 3 – rozwojowa) – biblioteka pozwalająca na wyświetlanie map w przeglądarkach internetowycha (strona klienta). Obsługuje profil GML simple feature przy zapisie i odczycie (JavaScript, FreeBSD)

uDig 1.4: GML files in udig can currently only be supported if they meet two very strict restrictions:filename.xsd - an xml schema document defining the “data product” being loadedfilename.gml - an xml document defined against the schema provided aboveWe only support GML2 based schemas with simple content at this time. There is improved GML support for WFS 1.1 access; this has not been packaged for offline use at this time.

Page 29: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 29/32

PostgreSQL + PostGIS

• System zarządzania relacyjno-obiektową bazą danych z rozszerzenie pozwalającym na zapisywanie danych geograficznych wprost do bazy danych zgodnie ze specyfikacją OpenGIS Simple Features dla profilu SQL

• Wspiera: – GML 3.2.1 Namespace– GML 3.1.1 Simple Features profile SF-2 (with GML 3.1.0 and 3.0.0

backward compatibility)– GML 2.1.2geometry ST_GeomFromGML(text geomgml);

geometry ST_GeomFromGML(text geomgml, integer srid);

text ST_AsGML(geometry g1);

text ST_AsGML(geometry g1, integer precision);

text ST_AsGML(integer version, geometry g1);

text ST_AsGML(integer version, geometry g1, integer precision);

text ST_AsGML(integer version, geometry g1,

integer precision, integer options);

Page 30: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 30/32

Przykład zastosowania PostGIS

• Utworzenie bazy danych przestrzennych# createdb -U postgres -h localhost -W -T postgistemplate

mojaBD

• Zapytanie do PRNG wybierające wszystkie nazwy zaczynające się na A:

http://sdi.geoportal.gov.pl/wfsg_prng/wfservice.aspx?service=WFS&request=GetFeature&version=1.1.0&typename=gmgml:Polska&namespace=xmlns(gmgml=http://www.intergraph.com/geomedia/gml)&filter=<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" xmlns:gmgml="http://www.intergraph.com/geomedia/gml"><ogc:PropertyIsLike wildCard="*" singleChar="."escapeChar="!"><ogc:PropertyName>NAZWA</ogc:PropertyName><ogc:Literal>A*</ogc:Literal></ogc:PropertyIsLike></ogc:Filter>

Page 31: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 31/32

Pobieranie danych z serwisów WFS

• Powyższe produkuje GML, w którym należy odwrócićwspółrzędne (ze względu na różnice pomiędzy wersjami GML-a)# export FORMAT=GML3# export GML3_LONGSRS=YES# export GML_INVERT_AXIS_ORDER_IF_LAT_LONG=YES

# ogr2ogr -nlt POINT -f "GML" Aout.gml A.gml

• Załadowanie pliku GML do bazy danychogr2ogr -f "PostgreSQL" PG:"dbname=mojaBD host=localhost port=5432 user=postgres password=******" Aout.gml

Page 32: GML w wolnym oprogramowaniu - Kon-Dorkonferencjagml.kon-dor.pl/prezentacje/10_Kubik_GML... · T.Kubik: GML w wolnym oprogramowani 4/32 HollowWorld • Szablon UML, w którym uwgl

T.Kubik: GML w wolnym oprogramowani 32/32

Koniec

• Dziękuję za uwagę