Slide 1

Slide 1 text

Nuno Oliveira Andrea Aime GeoSolutions Publishing INSPIRE datasets in GeoServer made easy with Smart Data Loader and Features Templating

Slide 2

Slide 2 text

GeoSolutions Enterprise Support Services Deployment Subscription Professional Training Customized Solutions GeoNode • Offices in Italy & US, Global Clients/Team • 30+ collaborators, 25+ Engineers • Our products • Our Offer

Slide 3

Slide 3 text

Affiliations We strongly support Open Source, it is in our core We participate in OGC testbeds and get funded to advance new open standards We support standards critical to GEOINT

Slide 4

Slide 4 text

Where are we?

Slide 5

Slide 5 text

INSPIRE support in GeoServer ● INSPIRE Compliance we have (capabilities) full internationalization! ● Available specific INSPIRE extension ● Free and Open Source ● New GUI Sections on services ● Inject new elements in GetCapabilities ● Download Services ● OGC WFS 2.0 and GML 3.2.1 ● OGC WCS 2.0.1 Enhancements in progress ● OGC API - Features GeoJSON (and GML) ● View Services ● OGC WMS 1.1.1, 1.3 ● OGC WMTS 1.0.0 ● Transformation Service ● OGC WPS 1.0.0, gs:Reproject process

Slide 6

Slide 6 text

GeoServer App-Schema ● Official extension, part of releases ● PostgreSQL, Oracle, Solr and MongoDB ● Support for complex features: 1 2 3 4 5

Slide 7

Slide 7 text

GeoServer App-Schema ● No special schema requirement on the data sources! App-Schema produces the expected GML output by transforming data on the fly!

Slide 8

Slide 8 text

HALE App-Schema plugin ● Available at (compatible with HALE 3.5.x): ● http://hale-geoserver.geo-solutions.it/index.html ● Open Source visual editor for schema mappings! ● Main features: ● Import source schema(s) and data ● Shapefile, databases, XSD / XML, etc… ● Import target schema(s) ● XSD, databases, INSPIRE schemas ● Transformations are: ● Graphically designed ● Interactively executed ● Interactively viewed

Slide 9

Slide 9 text

HALE App-Schema plugin Create GeoServer App-Schema mapping from it

Slide 10

Slide 10 text

New mappings approaches

Slide 11

Slide 11 text

Our use case WARNING: Simple Didactical Example!

Slide 12

Slide 12 text

What are the moving parts? Data Model Data Storage Relational database … and more Complex UML model or equivalent XML schema

Slide 13

Slide 13 text

What are the moving parts? Data Model Data Storage Publishing Complex GML or complex GeoJSON

Slide 14

Slide 14 text

Welcome to app-schema Data Model Data Storage Data Mapping Querying Building Publishing The app-schema plugin does all this, maps the data storage onto complex features, and eventually GML, to match a given target XML schema

Slide 15

Slide 15 text

The app-schema mapping file

Slide 16

Slide 16 text

GML schemas lead the dance! Currently the target GML schema is the mandatory starting point Just too hard for many, which reduces the uptake! But not all data is a flat table what do we do?

Slide 17

Slide 17 text

Smart data loader jumps in! Data Storage Data Mapping Querying Building Publishing Smart Data Loader Smart data loader maps flat tables to an automatically generated complex structure. Valid complex output. Separation of concerns!

Slide 18

Slide 18 text

Features templating jumps in! Data Modeling Data Storage Data Mapping Querying Building Publishing Smart Data Loader Features templating Features templating allow to map an initial complex model to a desired target structure with a template

Slide 19

Slide 19 text

Flow of data overview Domain Model OGC Services and OGC APIs GML Output Format GeoJSON Output Format JSON-LD Output Format Data Smart Data Loader Memory Features Stream Features Templating HTML Output Format

Slide 20

Slide 20 text

Smart data loader ● Community module ● Will Automatically: ○ Walk the Data Source and produce a Domain Model. ○ Generate an internal target GML Schema and an internal App-Schema Mapping. ○ Build an in-memory Stream of Complex Features. ● Generates a valid complex GML and JSON output, which might already be enough for you!

Slide 21

Slide 21 text

Smart data loader

Slide 22

Slide 22 text

Smart data loader ● Choose the “root entity”... the table that is the center of your model ● Automatic navigation of foreign keys drives the generation of tree model ● Choose which parts to include ● Automatically generate app-schema mapping

Slide 23

Slide 23 text

Smart data loader

Slide 24

Slide 24 text

Smart data loader With GeoServer smart data loader 😊, complex features are no big deal — publish them as easily as simple ones!

Slide 25

Slide 25 text

Features templating ● Community module ● What You See Is What You Get (WYSIWYG) approach: ○ Define how your features should appear with an example with interpolations. ○ Query the dataset using the output format structure thanks to backwards mapping capability. ● Integrated with both OGC API - Features, WFS and WMS. ● Efficient Acts as a mapping over an in-memory stream of features!

Slide 26

Slide 26 text

Our use case (reminder) WARNING: Simple Didactical Example!

Slide 27

Slide 27 text

Stations GeoJSON template 1. { 2. "type":"FeatureCollection", 3. "features":[ 4. {"$source":"stations"}, 5. { 6. "Identifier":"${id}", 7. "geometry":"${position}", 8. "properties":{ 9. "Name":"${common_name}", 10. "Code":"$${strConcat('STATION-', property('code'))}", 11. "Location":"$${toWKT(property('position'))}", 12. "Observations":[ 13. {"$source":"observations"}, 14. { 15. "Timestamp":"${time}", 16. "Value":"$${strConcat(strConcat(property('value'), 17. 'property('parameters.param_unit'))}", 18. "Type":"${parameters.param_name}" 19. } 20. …

Slide 28

Slide 28 text

Stations GeoJSON template 1. { 2. "type":"FeatureCollection", 3. "features":[ 4. {"$source":"stations"}, 5. { 6. "Identifier":"${id}", 7. "geometry":"${position}", 8. "properties":{ 9. "Name":"${common_name}", 10. "Code":"$${strConcat('STATION-', property('code'))}", 11. "Location":"$${toWKT(property('position'))}", 12. "Observations":[ 13. {"$source":"observations"}, 14. { 15. "Timestamp":"${time}", 16. "Value":"$${strConcat( 17. strConcat(property('value'), 18. 'property('parameters.param_unit'))}", 19. "Type":"${parameters.param_name}" 20. } 21. ] 22. } 23. } 24. ] 25. } 1. { 2. "type":"FeatureCollection", 3. "features":[ 4. { 5. "Identifier":7, 6. "geometry":{ 7. "type":"Point", 8. "coordinates":[11.34, 44.5] 9. }, 10. "properties":{ 11. "Name":"Bologna", 12. "Code":"STATION-BOL", 13. "Location":"POINT (11.34 44.5)", 14. "Observations":[ 15. { 16. "Timestamp":"2016/28...", 17. "Value":"35.0 C", 18. "Type":"temperature" 19. }, 20. { 21. "Timestamp":"2016/29...", 22. "Value":"80.0 Km/h", 23. "Type":"wind speed" 24. } 25. ] 26. } 27. } 28. (...)

Slide 29

Slide 29 text

Creating the templates

Slide 30

Slide 30 text

Live testing the templates

Slide 31

Slide 31 text

Contextual template lookup

Slide 32

Slide 32 text

Use cases highlights

Slide 33

Slide 33 text

BRGM - Boreholes use case ● Demo with almost 1 million boreholes: ● Available through: ● WFS 2.0.0 ● OGC API – Features ● Simple Features (SF-0) and Complex Features (SF-1)!

Slide 34

Slide 34 text

BRGM - Boreholes use case ● Templated JSON-LD output! ● What You See Is What You Get!

Slide 35

Slide 35 text

BRGM - Boreholes use case ● Filtering using CQL is supported: ● http://.../geoserver/ogc/features/collections/eposb:Borehole/items?f=applica tion/ld+json&limit=50&filter=features.gsmlp:boreholeLength_m.om:amount> 83&filter-lang=cql-text Filtering using the JSON-LD properties!

Slide 36

Slide 36 text

BRGM - BDLISA QGIS Integration ● BDLISA, the French hydrogeological database ● QGIS needs a valid schema for loading the features: Schemas can be defined and then linked to an operation per layer!

Slide 37

Slide 37 text

BRGM - BDLISA QGIS Integration

Slide 38

Slide 38 text

NPRA – DATEX II use case ● Complex GeoJSON served using WMS and WFS! ● Norwegian Public Road Administration (NPRA). ● DATEX II (3.0), traffic related data: We are using GeoServer MongoDB Schemaless!

Slide 39

Slide 39 text