Hydrografia-pilottiprojekti - Skeemamuunnos GeoServer-ohjelmistolla Lassi Lehto Eero Hietanen lassi.lehto@fgi.fi, eero.hietanen@fgi.fi 1.4.2014
HY-ID -projektiorganisaatio Yhteistyössä Geodeettinen laitos, Maanmittauslaitos ja SYKE Rahoittajana myös MMM Eero Hietanen projektityöntekijänä Lassi Lehto projektipäällikkönä Muut osallistujat MML: Veijo Pätynen SYKE: Riitta Teiniranta, Jaakko Suikkanen 1.4.2014 2
Projektin aiheet Ehdotus INSPIRE HY-palvelujen toteuttamisesta Suomessa Raportti ja demonstraatio, 31.12.2013 Aineistojen synkronointi MML:n ja SYKE:n välillä INSPIRE-yhteensopivan HydroId järjestelmän toteuttaminen Yksilölliset kohdetunnisteet Suomen paikkatietoinfrastruktuurissa Periaatteet, organisointi, hyödyt Edelliseen liittyvä JHS-työ Pilotointikohteena HY-sisällöt ja palvelut 1.4.2014 3
Sisältö 1. Pilottitoteutuksessa käytettävät paikkatietoaineistot 2. HY-Palvelun perustaminen ja toimintaperiaate 3. GeoServerin asetusten määrittäminen 4. Palvelun taso 1.4.2014 4
Hydro Physical Waters Kartoitustarkoituksiin DrainageBasin RiverBasin LandWaterBoundary Shore Wetland HydroPointOfInterest FluvialPoint Falls Rapids SurfaceWater StandingWater Watercourse ManMadeObject Crossing DamOrWeir Embankment Ford Lock ShorelineConstruction Sluice Hydro Base HydroObject Hydro Network HydroNode Mallinnus- ja analysointitarkoituksiin WatercourseLink WatercourseLinkSequence WatercourseSeparatedCrossing 1.4.2014 5
Pilottitoteutuksen kohdetyypit SYKE: Ranta 10 Hydro - Network Uoma10 Solmupiste10 Jokiviiva10 Jokialue10 Järvi10 SYKE: Valuma-aluejako Pääjako WatercourseLink HydroNode Hydro - Physical Waters Watercourse StandingWater RiverBasin MML: Maastotietokanta Koski Pato Aallonmurtaja Rapids DamOrWeir ShorelineConstruction 1.4.2014 6
Palvelun ohjelmistot Linux Gentoo -palvelin Apache Tomcat 7 sovelluspalvelin GeoServer 2.4, Java-pohjainen avoimen lähdekoodin karttapalvelinohjelmisto OGC standardien mukaiseen paikkatiedon jakamiseen PostgreSQL 9, avoimen lähdekoodin tietokantaohjelmisto, jossa spatiaalista dataa ymmärtävä PostGIS laajennos 1.4.2014 7
Testitoteutuksen vaiheita 1. Palvelun perustaminen 2. SYKEn ja MML:n aineistojen lataus tietokantaan 3. Taulujen muokkaus, avaimet ja indeksoinnit 4. GeoServerin asetusten määrittäminen 5. GeoServer AppSchema-moduulin määrittelytiedostojen luominen INSPIRE skeeman mukaisesti 6. SLD-tyylitiedostojen ja tiilitysten luominen 1.4.2014 8
Data SYKE Ranta10 aineisto Esri shapefile muodossa: Jarvi10.shp, JokiAlue10.shp, JokiViiva10.shp, Uoma10.shp, SolmuPiste10.shp, uomajarvitaulu.txt sekä paajako.shp MML PostGIS ja GeoServer arkkitehtuuriin perustuva WFSpalvelu kohteet aallonmurtaja, koski, pato Java-sovelluksen avulla tietokantaan 1.4.2014 9
Hydro - tietokanta Maastotietokannan Pato-luokka pato-taulu ( hy-p:damorweir) lähde mml wfs - pato "pato." + gid alkupvm geometria tietokanta pato gmlid (character varying 20) alkupvm geom INSPIRE DamOrWeir gml:id, inspireid, geometry-id BeginLifeSpanVersion geometry 1.4.2014 10
Hydro - tietokanta SYKEn Uoma10 uoma-taulu ( hy-n:watercourselink) lähde tietokanta INSPIRE syke uoma10 uoma WatercourseLink "uoma10." + uomanro muutospvm geometria gmlid (character varying 30) muutospvm geom gml:id, localid, geometry-id BeginLifeSpanVersion geometry uomaluokka pituus_m uomajarvitaulu jarvi10/nimi fictitious (boolean) pituus_m jarvinro nimi fictitious length RelatedHydroObject GeographicalName 1.4.2014 11
Asiakas WMTS Kysely Karttakuva WMS Kysely Karttakuva WFS Kysely WFS Vastaus (GML) GeoWebCache AppSchema-moduuli GeoServer SQL Kysely PostGIS Hydrotietokanta
GeoServerin asetusten määrittäminen Perustoiminnot web-käyttöliittymän kautta WFS asetukset (1.1.0, 2.0.0) WMS asetukset (1.1.1, 1.3.0) GridSets - asetukset tiilitystä varten EPSG:3067 lisätään JHS 180, liite 1 suosituksen mukaan SLD Styled layer descriptor Tuki SLD versiolle 1.0 INSPIRE-määritykset (SLD 1.1) eivät sellaisenaan sovi, mutta sovellettavissa INSPIRE Plugin ExtendedCapabilities, esim. linkki metatietopalveluun (XSLT lisäosa) 1.4.2014 13
AppSchema-moduuli Skeemamuunnos tietokannasta INSPIRE Skeemaan simple types complex types Skeemamuunnos määritellään xml-tiedostoina GeoServerin data-hakemistoon Sisältää Kohdetyypit-kansion, jossa jokaista INSPIREskeemanmukaista kohdetyyppiä edustaa oma kansio ja sen alla kohdetyypin määrittelytiedostot Määrittelytiedostoissa määritellään mm. kohteen skeema, käytettävä tietokanta, sen taulut ja käytettävät sarakkeet sekä kohteiden koordinaatisto ja sen kattavuusalue Esimerkki hy-n:watercourselink tiedostorakenne 1.4.2014 14
workspaces/hy-n Hy-n_WatercourseLink workspace.xml namespace.xml WatercourseLink Hy-n_WatercourseLink.xml datastore.xml Layer.xml Featuretype.xml
Skeemamuunnos-tiedosto (Mapping file) <?xml version="1.0" encoding="utf-8"?> <as:appschemadataaccess xmlns:as="http://www.geotools.org/app-schema" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="http://www.geotools.org/app-schema AppSchemaDataAccess.xsd"> <namespaces>...</namespaces> <includedtypes>...</includedtypes> <sourcedatastores>...</sourcedatastores> <catalog>...</catalog> <targettypes...</targettypes> <typemappings>...</typemappings> </as:appschemadataaccess> 1.4.2014 16
Skeemamuunnos-tiedosto (Mapping file) <?xml version="1.0" encoding="utf-8"?> <as:appschemadataaccess xmlns:as="http://www.geotools.org/app-schema" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="http://www.geotools.org/app-schema AppSchemaDataAccess.xsd"> <namespaces>...</namespaces> <includedtypes>...</includedtypes> <sourcedatastores>...</sourcedatastores> <catalog>...</catalog> <targettypes...</targettypes> <typemappings>...</typemappings> </as:appschemadataaccess> 17
<namespaces> Määrittää kaikki xml-nimiavaruudet, joita tiedostossa käytetään <Namespace> <prefix>hy-n</prefix> <uri>urn:x-inspire:specification:gmlas:hydronetwork:3.0</uri> </Namespace> <Namespace> <prefix>net</prefix> <uri>urn:x-inspire:specification:gmlas:network:3.2</uri> </Namespace> 18
Skeemamuunnos-tiedosto (Mapping file) <?xml version="1.0" encoding="utf-8"?> <as:appschemadataaccess xmlns:as="http://www.geotools.org/app-schema" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="http://www.geotools.org/app-schema AppSchemaDataAccess.xsd"> <namespaces>...</namespaces> <includedtypes>...</includedtypes> <sourcedatastores>...</sourcedatastores> <catalog>...</catalog> <targettypes...</targettypes> <typemappings>...</typemappings> </as:appschemadataaccess> 19
Skeemamuunnos-tiedosto (Mapping file) <?xml version="1.0" encoding="utf-8"?> <as:appschemadataaccess xmlns:as="http://www.geotools.org/app-schema" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="http://www.geotools.org/app-schema AppSchemaDataAccess.xsd"> <namespaces>...</namespaces> <includedtypes>...</includedtypes> <sourcedatastores>...</sourcedatastores> <catalog>...</catalog> <targettypes...</targettypes> <typemappings>...</typemappings> </as:appschemadataaccess> 20
<sourcedatastores> Määrittää käytettävät tietolähteet <DataStore> <id>datastore</id> <parameters> <Parameter> <name>dbtype</name> <value>postgisng</value> </Parameter> <Parameter> </Parameter> Parameters: Port, database, user, passwd. <name>host</name> <value>localhost</value> 21
Skeemamuunnos-tiedosto (Mapping file) <?xml version="1.0" encoding="utf-8"?> <as:appschemadataaccess xmlns:as="http://www.geotools.org/app-schema" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="http://www.geotools.org/app-schema AppSchemaDataAccess.xsd"> <namespaces>...</namespaces> <includedtypes>...</includedtypes> <sourcedatastores>...</sourcedatastores> <catalog>...</catalog> <targettypes...</targettypes> <typemappings>...</typemappings> </as:appschemadataaccess> 22
Skeemamuunnos-tiedosto (Mapping file) <?xml version="1.0" encoding="utf-8"?> <as:appschemadataaccess xmlns:as="http://www.geotools.org/app-schema" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="http://www.geotools.org/app-schema AppSchemaDataAccess.xsd"> <namespaces>...</namespaces> <includedtypes>...</includedtypes> <sourcedatastores>...</sourcedatastores> <catalog>...</catalog> <targettypes...</targettypes> <typemappings>...</typemappings> </as:appschemadataaccess> 23
<targettypes> Määrittää kohdetyypin skeematiedoston sijainnin <FeatureType> <schemauri> </schemauri> </FeatureType> http://inspire.ec.europa.eu/schemas/hy-n/3.0/hydronetwork.xsd Skeematiedosto ladataan uudelleen GeoServerin käynnistyessä vain, jos tiedostoa ei löydy GeoServerin data-hakemiston app-schemacachen alta Tiedostoa voidaan siis muokata paikallisesti 24
Skeemamuunnos-tiedosto (Mapping file) <?xml version="1.0" encoding="utf-8"?> <as:appschemadataaccess xmlns:as="http://www.geotools.org/app-schema" xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xsi:schemalocation="http://www.geotools.org/app-schema AppSchemaDataAccess.xsd"> <namespaces>...</namespaces> <includedtypes>...</includedtypes> <sourcedatastores>...</sourcedatastores> <catalog>...</catalog> <targettypes...</targettypes> <typemappings>...</typemappings> </as:appschemadataaccess> 25
<typemappings> Määrittää kohdeskeeman eri elementtien ja attribuuttien käytettävät arvot <FeatureTypeMapping> <sourcedatastore>datastore</sourcedatastore> <sourcetype>uoma</sourcetype> <targetelement>hy-n:watercourselink</targetelement> <isdenormalised>false</isdenormalised> <attributemappings> <AttributeMapping> </AttributeMapping> <AttributeMapping> </AttributeMapping> </attributemappings> </FeatureTypeMapping> 26
<typemappings> <AttributeMapping> <targetattribute>hy-n:watercourselink</targetattribute> <idexpression> </idexpression> </AttributeMapping> <OCQL>gmlid</OCQL> 27
<typemappings> <AttributeMapping> <targetattribute>net:beginlifespanversion</targetattribute> <sourceexpression> <OCQL>muutospvm</OCQL> </sourceexpression> </AttributeMapping> 28
<typemappings> <AttributeMapping> <targetattribute> hy-n:geographicalname/gn:geographicalname/gn:spelling/gn:spellingofname/gn:text </targetattribute> <sourceexpression> <OCQL>nimi</OCQL> </sourceexpression> </AttributeMapping> 29
<typemappings> <AttributeMapping> <targetattribute> hy-n:geographicalname/gn:geographicalname/gn:pronunciation </targetattribute> <ClientProperty> <name>xsi:nil</name> <value>'true'</value> </ClientProperty> <ClientProperty> <name>nilreason</name> <value>'unpopulated'</value> </ClientProperty> </AttributeMapping> 30
<typemappings> <AttributeMapping> <targetattribute> hy-n:relatedhydroobject </targetattribute> <ClientProperty> <name>xlink:href</name> <value> strconcat('http://example.fi/so/standingwater/jarvi10.', jarvinro) </value> </ClientProperty> </AttributeMapping> 31
<typemappings> <AttributeMapping> <targetattribute>feature_link</targetattribute> <sourceexpression> <OCQL>jarvinro</OCQL> </sourceexpression> </AttributeMapping> 32
<typemappings> Hy-p_StandingWater.xml <AttributeMapping> <targetattribute>hy-p:relatedhydroobject</targetattribute> <sourceexpression> <OCQL>jarvinro</OCQL> <linkelement>hy-n:watercourselink</linkelement> <linkfield>feature_link</linkfield> </sourceexpression> <ismultiple>true</ismultiple> <ClientProperty> <name>xlink:href</name> <value> strconcat('http://example.fi/so/watercourselink/', gmlid) </value> </ClientProperty> </AttributeMapping> 33
WFS HTTP GET esimerkkikysely http://example.fi/geoserver/ows? SERVICE=WFS &VERSION=2.0.0 &REQUEST=GetFeature &TYPENAMES=hy-n:WatercourseLink &SRSNAME=EPSG:3067 &RESOURCEID=uoma10.1006012604941 &OUTPUTFORMAT=text/xml;subtype=gml/3.2 34
WMS HTTP GET esimerkkikysely http://example.fi/geoserver/ows? SERVICE=WMS &VERSION=1.3.0 &REQUEST=GetMap &FORMAT=IMAGE/png &LAYERS=HY.Network &CRS=EPSG:3067 &BBOX=420000,6760000,470000,6810000 &WIDTH=1024&HEIGHT=1024 38
Kyselypalvelun tilanne WFS 2.0.0 (ja 1.1.0) GET/POST GetCapabilities DescribeFeatureType GetPropertyValue GetFeature: TypeNames, SRSName, Filter, ResourceId ja BBox Koordinaattimuunnokset OpenGIS Filter Encoding 2.0: Minimum Standard Filter, Minimum Spatial Filter, Minimum Temporal Filter ja Minimum XPath luokat Ei toistaiseksi Paging-tukea Ei StoredQuery GetFeatureById -kyselymahdollisuutta 1.4.2014 40
Katselupalvelun tilanne SLD:t määritelty INSPIRE-dokumentoinnin mukaisesti WMS 1.3.0 (ja 1.1.1) GET GetCapabilities GetMap: BBOX, WIDTH/HEIGHT, CRS Koordinaattimuunnokset Jpeg, gif ja png -kuvaformaatit TRANSPARENT ja BGCOLOR -parametrit Suorituskyky pysyy kohtuullisena isoimmilla aineistoilla max 200km * 200km kokoisille alueille GetFeatureInfo WMTS 1.0.0 ETRS-TM35FIN (EPSG:3067) koordinaatisto Jpeg ja png -kuvaformaatit Suorituskyky hyvä 1.4.2014 41
Yhteenveto Toteutettu avoimen lähdekoodin ohjelmistoilla INSPIREn vaatimuksia vastaavat lataus- ja katselupalvelu WFS, WMS, WMTS WFS palauttaa INSPIRE skeema-validia GML-dataa Suorituskyky (Performance) riittävä AppSchema-moduulin säätäminen tarkkuutta vaativaa GeoServeriä kehitetään aktiivisesti, uusin versio 2.5 AppSchema-moduulia kehitetään erikseen 1.4.2014 42