Slide 1

Slide 1 text

Nuno Oliveira Marco Volpini 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 • 40+ collaborators, 30+ Engineers • Our products • Our Offer

Slide 3

Slide 3 text

Affiliations We strongly support Open Source, it Is in our core We actively participate in OGC working groups 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

● Available at http://www.geoserver.org ● GeoSpatial enterprise gateway ● Java Enterprise ● Management and Dissemination of raster and vector data ● Standards compliant ● OGC WCS 1.0, 1.1.1 (RI), 2.0.1 🡪 Download Services ● OGC WFS 1.0, 1.1 (RI), 2.0.0 🡪 Download Services ● OGC WMS 1.1.1, 1.3.0 🡪 View Services ● OGC WPS 1.0.0 🡪 Transformation Services ● OGC CSW 2.0.2 🡪 Discovery Services ● OGC APIs: ● Features, Images, Styles and Tiles INSPIRE support in GeoServer

Slide 6

Slide 6 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 7

Slide 7 text

GeoServer App-Schema ● Free and open source extension: ● PostgreSQL, Oracle, Solr and MongoDB ● Support for complex features: 1 2 3 4 5

Slide 8

Slide 8 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 9

Slide 9 text

HALE App-Schema plugin ● Defining App-schema mappings manually can be complex! ● HALE App-Schema Plugin to the rescue! ● Create HALE alignment visually ● Create GeoServer App-Schema mapping from it ● Upload it automatically through GeoServer REST API Automatic export to GeoServer!

Slide 10

Slide 10 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 11

Slide 11 text

New mappings approaches

Slide 12

Slide 12 text

Our use case WARNING: Over Simplified Example!

Slide 13

Slide 13 text

Separation of concerns Data Modeling Data Storage

Slide 14

Slide 14 text

Separation of concerns Data Modeling Data Storage Publishing

Slide 15

Slide 15 text

Separation of concerns Data Modeling Data Storage Data Mapping Publishing

Slide 16

Slide 16 text

Separation of concerns Data Modeling Data Storage Data Mapping Building Publishing

Slide 17

Slide 17 text

Separation of concerns Data Modeling Data Storage Data Mapping Querying Building Publishing

Slide 18

Slide 18 text

Separation of concerns Data Modeling Data Storage Data Mapping Querying Building Publishing Currently the target GML schema leads the dance!

Slide 19

Slide 19 text

Currently GML leads the dance!

Slide 20

Slide 20 text

Currently GML leads the dance! Currently the target GML schema leads the dance! "The entry ticket is too high, which reduces the uptake!" & | "but not all data is a flat table how do we do?”

Slide 21

Slide 21 text

Smart data loader jumps in! Data Modeling Data Storage Data Mapping Querying Building Publishing Currently the target GML schema leads the dance! Smart Data Loader

Slide 22

Slide 22 text

Features templating jumps in! Data Modeling Data Storage Data Mapping Querying Building Publishing Currently the target GML schema leads the dance! Smart Data Loader Features Templating (WYSIWYG) Features Templating (WYSIWYG) Features Templating (WYSIWYG)

Slide 23

Slide 23 text

Flow of data overview Domain Model OGC Services and OGC APIs GML Output Format GeoJSON Output Format Others Output Format Data Smart Data Loader Memory Features Stream Features Templating HERE HERE

Slide 24

Slide 24 text

Smart data loader ● Free and Open Source GeoServer extension. ● Will Automatically: ○ Walk the Data Source and produces a Domain Model. ○ Generate an internal target GML Schema and an internal App-Schema Mapping. ○ Build an in-memory Stream of Complex Features. ● The target Output Format and target schema are not important at this stage!

Slide 25

Slide 25 text

Smart data loader demo

Slide 26

Slide 26 text

Features templating ● Free and Open Source GeoServer extension! ● What You See Is What You Get (WYSIWYG) approach: ○ Define how your features should appear with imperative instructions. ○ 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 27

Slide 27 text

Our use case (reminder) WARNING: Over Simplified Example!

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(strConcat(property('value'), 17. 'property('parameters.param_unit'))}", 18. "Type":"${parameters.param_name}" 19. } 20. ] 21. } 22. } 23. ] 24. }

Slide 29

Slide 29 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 30

Slide 30 text

Features templating demo

Slide 31

Slide 31 text

Creating the templates

Slide 32

Slide 32 text

Validating the templates

Slide 33

Slide 33 text

Content negotiation

Slide 34

Slide 34 text

Use cases highlights

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 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 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