GML w wolnym oprogramowaniu



Podobne dokumenty
Wykorzystanie wolnego oprogramowania do modelowania informacji geograficznej

serwisy W*S ERDAS APOLLO 2009

Implementacja standardu GML w oprogramowaniu ESRI i GISPartner na przykładzie Geoportalu2

Wykorzystanie standardów serii ISO oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

Fazy i typy modernizacji zbiorów w w IIP. Uniwersytet im. Adama Mickiewicza Wydział Nauk Geograficznych i Geologicznych Poznań:: r.

Jak stworzyć Geoportal

GML w praktyce geodezyjnej

Przykłady zastosowao rozwiązao typu mapserver w Jednostkach Samorządu Terytorialnego

Portal internetowy Europejskiej Sieci Ekologicznej Natura 2000 w Polsce.

Format KML w oprogramowaniu GIS

1. Wymagania prawne. Europejskie uwarunkowania prawne:

WYKORZYSTANIE I ROZWÓJ WOLNEGO OPROGRAMOWANIA W WOJEWÓDZKIM WĘŹLE INFRASTRUKTURY INFORMACJI PRZESTRZENNEJ

Komunikacja systemów informatycznych przy pomocy usług sieciowych

Wymagania systemowe. Autodesk AutoCAD 2020 wraz ze specjalistycznymi zestawami narzędzi. Obsługiwane systemy operacyjne. Przeglądarka. Procesor.

Zarządzanie danymi przestrzennymi

Dane opatrzone informacją o położeniu obiektów w świecie rzeczywistym. Współrzędne geograficzne. Geokodowanie

Praktyczne wykorzystanie programów gvsig i Quantum GIS w opracowaniach geodezyjnych i instytucjach publicznych

Koncepcja węzła IIP na przykładzie planów zagospodarowania przestrzennego

Metody dostępu do danych

Page 1. Architektura systemów GIS. Architektura klient-serwer. Geoinformaacyjne usługi sieciowe DESKTOP. dr inż. Adam Iwaniak

WMS Thematic Standard do publikacji opracowań kartograficznych. Serena Coetzee, Adam Iwaniak, Paweł Netzel

Shapefile, GeoPackage czy PostGIS. Marta Woławczyk (QGIS Polska)

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

ETL darmowe narzędzia

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

danych przestrzennych

The Binder Consulting

Konferencja: Warszawa, Hotel Courtyard 24 listopada 2011 r. Janusz Michalak Uniwersytet Warszawski / Polskie Towarzystwo Informacji Przestrzennej

SAX i DOM wykorzystanie XML-a we własnych aplikacjach. Simple API for XML Parsing Document Object Model

Implementacja standardu GML w oprogramowaniu firmy INTERGRAPH

1. Wymagania dla lokalnej szyny ESB

Zastosowania technologii WMS w prowadzeniu PZGiK

Podstawowe wykorzystanie Hibernate

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Który problem najważniejszy?

ZŁOŻONOŚĆ schematów aplikacyjnych UML i GML

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

USŁUGI SIECIOWE I PUBLIKACJA DANYCH W RAMACH INSPIRE (POZIOM ŚREDNIOZAAWANSOWANY)

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

XML w.net. Dominik Baś nr alb Wrocław, 29 maja 2007

Komunikacja i wymiana danych

Zaawansowany kurs języka Python

Rola języka XML narzędziem

ArcGIS for INSPIRE wsparcie dla budowy europejskiej infrastruktury informacji przestrzennej

Architektura TERYT GUS. EMUiA. EGiB. Pozostałe systemy ZSIN SZYNA USŁUG. EMUiA

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Szczyrk, 11 czerwca Systemy Informacji Przestrzennej. Anatomia geoportalu. Michał Mackiewicz

akademia androida Składowanie danych część VI

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Opracowywanie map w ArcGIS Online i MS Office. Urszula Kwiecień Esri Polska

Przestrzenne bazy danych. Definicja i cechy przestrzennych baz danych

Instalacja SQL Server Konfiguracja SQL Server Logowanie - opcje SQL Server Management Studio. Microsoft Access Oracle Sybase DB2 MySQL

Przegląd oprogramowania GIS do tworzenia map tematycznych. Jacek Jania

Multi-projekt z przedmiotów Inżynieria oprogramowania, Współczesne bazy danych i Programowanie w języku Java

Zaawansowane aplikacje WWW - laboratorium

DYREKTYWA INSPIRE (POZIOM ZAAWANSOWANY) Sławomir Bury Wrocławski Instytut Zastosowań Informacji Przestrzennej i Sztucznej Inteligencji

dlibra 3.0 Marcin Heliński

Analiza przydatności darmowego oprogramowania geo-serwerowego z punktu widzenia wymagań INSPIRE

Projekt inżynierski Przestrzenna baza danych

Normy ISO serii 19100

SAS Access to Hadoop, SAS Data Loader for Hadoop Integracja środowisk SAS i Hadoop. Piotr Borowik

Charakterystyka przestrzennych typów danych. do tworzenia raportów. Using spatial data types in reports.

ROZPORZĄDZENIE RADY MINISTRÓW. z dnia 11 października 2005 r. (Dz. U. z dnia 28 października 2005 r.)

Wykorzystanie otwartych standardów i wolnego oprogramowania przy udostępnianiu polskich zasobów geoinformacyjnych

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Programowanie obiektowe

Funkcjonalność systemów zarządzania bazami danych przestrzennych w kartografii internetowej (PosrtgreSQL/PostGIS) Krzysztof Kuśnierek

Uruchamianie bazy PostgreSQL

Dlaczego GML? Gdańsk r. Karol Stachura

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Model semistrukturalny

Hurtownie danych - przegląd technologii

Network Services for Spatial Data in European Geo-Portals and their Compliance with ISO and OGC Standards

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Dane hydrogeologiczne, systemy wspomagania decyzji i Dyrektywa INSPIRE

Tom 6 Opis oprogramowania

Programowanie obiektowe zastosowanie języka Java SE

GIS w środowisku sieciowym

DEMONSTRACJA DZIAŁANIA ELEMENTÓW INFRASTRUKTURY INFORMACJI PRZESTRZENNEJ (WYKŁAD)

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Sposoby i zasady udostępniania TBD

ROZPORZĄDZENIE RADY MINISTRÓW. z dnia 11 października 2005 r. w sprawie minimalnych wymagań dla systemów teleinformatycznych

Wybrane działy Informatyki Stosowanej

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.

Środowisko NetBeans. Paweł Boguszewski

Przestrzenne bazy danych. Wstęp do przestrzennych baz danych

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Podsumowanie prac związanych z dostawą sprzętu i oprogramowania oraz szkoleń.

Wprowadzenie do systemów GIS

Usługi WWW. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

Wersjonowanie baz danych podczas developmentu. Liquibase. Piotr Pelczar.

Co nowego w FME 2018?

BUDOWA INFRASTRUKTURY INFORMACJI PRZESTRZENNEJ JAKO REALIZACJA DYREKTYWY INSPIRE NA PRZYKŁADZIE GMINY ZABIERZÓW

ERDAS TITAN środowisko 3D udostępniania danych przestrzennych

GML 3.0 JAKO STANDARD ZAPISU INFORMACJI GEOGRAFICZNEJ GML 3.0 AS THE STANDARD FOR GEOGRAPHIC INFORMATION ENCODING

Podstawy przetwarzania danych pochodzących z lotniczego skanowania laserowego w oprogramowaniu LP360 firmy QCoherent

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

IDERioja: Rządowa Infrastruktura Danych Przestrzennych w La Rioja (Hiszpania)

Transkrypt:

GML w wolnym oprogramowaniu Tomasz Kubik Politechnika Wrocławska Warszawa, 12 kwietnia 2012

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 T.Kubik: GML w wolnym oprogramowani 2/32

Transformacja UML-XSD T.Kubik: GML w wolnym oprogramowani 3/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/ T.Kubik: GML w wolnym oprogramowani 4/32

ShapeChange http://shapechange.net/ 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: java -jar ShapeChange-2.0.0-SNAPSHOT.jar -Dfile.encoding=UTF-8 -c http://shapechange.net/resources/test/testxmi.xml T.Kubik: GML w wolnym oprogramowani 5/32

UML/INTERLIS-Editor oraz INTERLIS-compiler http://www.umleditor.org/ 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) T.Kubik: GML w wolnym oprogramowani 6/32

Schematy i pliki GML Schemat GML zapisany jako XSD Dane GML zapisane jako XML Model danych wewnątrz aplikacji T.Kubik: GML w wolnym oprogramowani 7/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 T.Kubik: GML w wolnym oprogramowani 8/32

DOM i SAX T.Kubik: GML w wolnym oprogramowani 9/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) T.Kubik: GML w wolnym oprogramowani 10/32

Działanie parsera DOM http://docs.oracle.com/cd/b19306_01/appdev.102/b14252/adx_j_parser.htm T.Kubik: GML w wolnym oprogramowani 11/32

Działanie pasera SAX http://docs.oracle.com/cd/b19306_01/appdev.102/b14252/adx_j_parser.htm T.Kubik: GML w wolnym oprogramowani 12/32

Parsowanie XML z JAXP http://docs.oracle.com/cd/b19306_01/appdev.102/b14252/adx_j_parser.htm T.Kubik: GML w wolnym oprogramowani 13/32

XML data binding: korzystanie z JAXB T.Kubik: GML w wolnym oprogramowani 14/32

Korzystanie z JAXB <?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> <?xml version="1.0" encoding="utf-8"?> <Kontakt> <Imie>Jan</Imie> <Email>jan@ex.com</Email> </Kontakt> > xjc dane.xsd 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()); T.Kubik: GML w wolnym oprogramowani 15/32

CodeSynthesis XSD http://www.codesynthesis.com/products/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) <?xml version="1.0" encoding="utf-8"?> <Kontakt> <Imie>Jan</Imie> <Email>jan@ex.com</Email> </Kontakt> auto_ptr<kontakt> k = Kontakt ("c.xml"); cout << k->imie () << ", " << k->email () << endl; T.Kubik: GML w wolnym oprogramowani 16/32

CodeSynthesis XSD - różnice w przetwarzaniu XML <?xml version="1.0" encoding="utf-8"?> <Kontakt> <Imie>Jan</Imie> <Email>jan@ex.com</Email> </Kontakt> // 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 Binding: C++/Tree Kontakt k =... cout << k.imie () << ", " << k.email () << endl; T.Kubik: GML w wolnym oprogramowani 17/32

CodeSynthesis XSD - różnice w przetwarzaniu XML <?xml version="1.0" encoding="utf-8"?> <Kontakt> <Imie>Jan</Imie> <Email>jan@ex.com</Email> </Kontakt> // 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 Binding: C++/Parser class KontaktParser:... { virtual void imie (const string& n){ cout << n << ", "; } virtual void email (const string& e){ cout << e << endl; } }; T.Kubik: GML w wolnym oprogramowani 18/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) T.Kubik: GML w wolnym oprogramowani 19/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 T.Kubik: GML w wolnym oprogramowani 20/32

FDO - Feature Data Object http://fdo.osgeo.org/ 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 T.Kubik: GML w wolnym oprogramowani 21/32

GeoTools http://www.osgeo.org/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) T.Kubik: GML w wolnym oprogramowani 22/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 T.Kubik: GML w wolnym oprogramowani 23/32

GeoTools wykorzystywane parsery Technology SAX DOM Encode Support Notes SAX sax dom Filter GML SLD Hard to trace through, parse not easily extended DOM dom Filter GLM SLD Forgiving and easy to trace through and debug, memory limitation for GIS data Transform xml Filter GML2 SLD Easy to trace through and debug, difficult to configure for specific data JABX sax dom xml n/a Fast but not suitable for dynamic data, precomplied Pull sax dom n/a Should combine the ease of DOM with the streaming performance of XDO and GTXML XDO sax dom xml Filter GML SLD WMS WFS1.0 XSD Proof of concept of schema assisted parsing allowing streaming into Java Objects. Code is fast and well tested but is hard to trace through GTXML sax dom xml Filter GML SLD WMS WFS1.0 WFS1.1 WPS XSD 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. T.Kubik: GML w wolnym oprogramowani 24/32

GML Parser for Java http://confluence.highsource.org/display/ogcs/home Lekki parser GML Plik GML do geometrii JTS Geometrie JTS do pliku GML Wspiera GML 3.1.1 Distrybucja z repozytorium Maven 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)); T.Kubik: GML w wolnym oprogramowani 25/32

GDAL http://www.gdal.org 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 Wersja OGR >= 1.8.0 OGR < 1.8.0 Odczyt GML2 i GML3 które mogą być przetłumaczone na model SF GML2 i ograniczony GML3 GML 2.1.2 lub GML 3 SF-0 (GML 3.1.1 Compliance level SF-0) GML 2.1.2 Zapis T.Kubik: GML w wolnym oprogramowani 26/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ów GML (przynajmniej częściowo) Listę narzędzi wspierających GML i WFS można znaleźć pod adresem: http://www.opengeospatial.org/resource/products/byspec T.Kubik: GML w wolnym oprogramowani 27/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 oraz BSD) 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 loaded filename.gml - an xml document defined against the schema provided above We 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. T.Kubik: GML w wolnym oprogramowani 28/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.2 geometry 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); T.Kubik: GML w wolnym oprogramowani 29/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.as px?service=wfs&request=getfeature&version=1.1.0&typena me=gmgml:polska&namespace=xmlns(gmgml=http://www.inter graph.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:pr opertyislike></ogc:filter> T.Kubik: GML w wolnym oprogramowani 30/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 danych ogr2ogr -f "PostgreSQL" PG:"dbname=mojaBD host=localhost port=5432 user=postgres password=******" Aout.gml T.Kubik: GML w wolnym oprogramowani 31/32

Koniec Dziękuję za uwagę T.Kubik: GML w wolnym oprogramowani 32/32