XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

42
XSLT FOR INSPIRE TRANSFORMATION In ESDIN by Kadaster KEN - Paris - Oct 8, 2013

description

Slides of presentation given at EuroGeographics KEN workshop on INSPIRE Data Harmonization, Paris oct 8-9, 2013: http://www.eurogeographics.org/event/inspire-ken-schema-transformation-workshop. Describes the XSLT-based INSPIRE Transformation technique used by Dutch Kadaster in EuroGeographics ESDIN INSPIRE project (2009-2011).

Transcript of XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

Page 1: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT FOR

INSPIRE TRANSFORMATION

In ESDIN by Kadaster

KEN - Paris - Oct 8, 2013

Page 2: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

About MeIndependent Open Source Geospatial Professional

Secretary OSGeo Dutch Local Chapter Member of the Dutch OpenGeoGroep

Just van den [email protected] www.justobjects.nl

Page 3: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

OPEN SOURCEFOR INSPIRE

MAKES SENSE

Picture from: http://cameronshorter.blogspot.com

Page 4: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

3. COMMUNITYENABLER

Page 5: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

INSPIRE Projects

2009-2011 Dutch Kadaster - Kademo Lab - EURADIN and ESDINinspire.kademo.nl - Ebrahim Hemmatnia - Ko van Raamsdonk - Haico van der Vegt

2011 Kadaster - INSPIRE Transformations Key Registries Data CP,AD,TN,GN,HY inspire.kademo.nl

2011-2013 PDOK - National GeoPortal with INSPIRE www.pdok.nl

2010-now - cooperation deegree community - Lat/lon, Occam Labs www.deegree.org

Page 6: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

Talk 1

XSLT - what, how

ESDIN - INSPIRE transformation Kadaster

Talk 2

formalizing approach from Talk 1

using Stetl framework for INSPIRE

AGENDA

Page 7: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

EXTENSIBLE STYLESHEET LANGUAGE (XSL)

Origins : SGML+DSSSL ==> XSL for XML documents

W3C XSL Working Group

First called “XSL”, then split into three standards

1.XSL Transformations (XSLT)

2.XSL Formatting Objects “FOP”

3.XPath - XML Navigation/Query Language

Page 8: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

PRINCIPLE

The XSLT processor takes one or more XML source documents, plus one or more XSLT stylesheet modules, and processes them to produce an output document. The XSLT stylesheet contains a collection of template rules: instructions and other directives that guide the processor in the production of the output document.

http://en.wikipedia.org/wiki/XSLT

Page 9: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

EXAMPLE

http://en.wikipedia.org/wiki/XSLT

Input XML Document

Page 10: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

EXAMPLE

http://en.wikipedia.org/wiki/XSLT

XSLT Stylesheet Document

Page 11: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

EXAMPLE

http://en.wikipedia.org/wiki/XSLT

XML Result Document

Page 12: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

EXAMPLE

http://en.wikipedia.org/wiki/XSLT

HTML Generation with Alternative XSLT Stylesheet

Page 13: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

EXAMPLE

http://en.wikipedia.org/wiki/XSLT

(X)HTML Result Document (alternative Stylesheet)

Page 14: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT PRINCIPLES

Basically Tree Transformation

Input: well-formed XML document

Output: XML document or anything “text” (SQL!)

Declarative, rule-based, functional, recursive

But also: Structured and Procedural (named templates)

Page 15: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT PRO’S

Well-established (sinds 1999)

stable standards

huge amount of knowledge on the web

Optimized XSLT tools in any programming language

XML-based, same base language as source/target docs

Compact, reusable stylesheets (ala subroutines)

Extension points for custom code

Page 16: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT PRO’S CONT.

TEXT

Page 17: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

IN THE BEGINNING...

"In the Beginning was the Command Line"

By Neal Stephensonhttp://www.cryptonomicon.com/beginning.html

Page 18: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT CONS

Complex

intellectual challenge: thinking declarative/functional

poorly understood, often messy stylesheets

Poor scalability with large documents

No GUI

INSPIRE: only model transform (no coordinate transform)

Page 19: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

IMPLEMENTATION

Page 20: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

INSPIRE - WHAT

WFSWMSCSWWPS

.

.Local Data

INSPIRE Data

Web Services

Page 21: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

INSPIRE - DATA THEMES

Page 22: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

INSPIRE - TRANSFORMATIONS

source: Geonovum.nl

Page 23: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

KADASTER - PHASE 1COMBINED TRANSFORMATION

On-the-fly Transformation

Offline Transformation

National Data

(Oracle)

Extract

Transform

Load (ETL)

INSPIRE Data

(PostGIS)

Web

Feature

Service

(WFS)

INSPIRE

GML

Page 24: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

OSGeo - Bolsena - 2010

Page 25: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

KADASTER - PHASE IIOFFLINE TRANSFORM + DEEGREE

INSPIRE

View Service

(WMS)

Extract

Transform

Load (ETL)

INSPIRE

Feature Store

(BLOB or Hybrid)

INSPIRE

Download Service

(WFS)

deegree 3

INSPIRE Publish

1) WFS-T

2) deegree loader

Configuration Data

- INSPIRE Data Themes (XSD)

- Data Mappings (XML)

- WMS Styling (SLD)

Kadaster Data

(Oracle)

Page 26: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

KADASTER - PHASE IIREUSABLE ETL + SERVICES

INSPIRE

View Service

(WMS)

Extract

Transform

Load (ETL)

INSPIRE

Feature Store

(BLOB or Hybrid)

INSPIRE

Download Service

(WFS)

deegree 3

INSPIRE Publish

1) WFS-T

2) deegree loader

Configuration Data

- INSPIRE Data Themes (XSD)

- Data Mappings (XML)

- WMS Styling (SLD)

Kadaster Data

(Oracle)

ReusableSpecific

Page 27: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

KADASTER - PHASE IIETL CHAIN

Page 28: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

ETL CHAIN - TOOLS

• Extract

• internal tools: e.g. Oracle to Shapefile or XML

• Transform

• GDAL/OGR - Coordinate and create Simple Features (GML)

• XSLT - Model Transformation

• Load

• directly in PostGIS database

• via deegree FeatureStore Loader

• via WFS-T

Page 29: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

SOFTWARE STACK

Architecture

PostGIS

WFS

deegree

LocalData

ScriptsGDALXSLT

Unix shell

ETL

INSPIRE Download/View Services

TomcatJava J2EE

Server

Heron Mapping Client

WFS-TFSLoad

WMS

SLD

data flow

API (web service) API

storage

ESDIN Test Framework

Now Stetl!

Page 30: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT STRUCTURE

Local CP GMLto

INSPIRE SpatialDataset

Local CP GMLto

INSPIRE GML

GenerateCP INSPIRE GML

ReusableXSLT ScriptsReusable

XSLT Scripts

Theme CP

Local AU GMLto

INSPIRE SpatialDataset

Local AU GMLto

INSPIRE GML

GenerateAU INSPIRE GML

Theme AU

Local GN GMLto

INSPIRE SpatialDataset

Local GN GMLto

INSPIRE GML

GenerateGN INSPIRE GML

Theme GN

Called by All

Locally Specific XSL

GenericXSL

XSLT Template Call

Page 31: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT - 3 MAIN STEPS/SCRIPTS

1.Generate Spatial Dataset GML Container (specific)

2.Extract data values from local OGR simple feature data (specific)

3. Call XSLT template per Theme Feature type (generic)

Page 32: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT - STEP 1

Page 33: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT - STEP 2

Page 34: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT - STEP 3

Page 35: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

XSLT - REUSE

Page 36: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

THE “GUI”

validated file contentproject files

commands

run deegree

Page 37: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN
Page 38: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

CONCLUSIONS

1.XSLT for INSPIRE (Model) transformations ? YES

2.XSLT shines in combination with OGR and PostGIS

3.Don’t Develop INSPIRE Transforms in isolation but in context of

your global INSPIRE SDI Architecture

4. Kadaster overall approach in ESDIN worked well

Page 39: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

GETTING INVOLVED

Page 40: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

INSPIRE @ OSGEO

http://lists.osgeo.org/mailman/listinfo/inspire-data

http://wiki.osgeo.org/wiki/INSPIRE_data_experiments

MAILING LIST

WIKI

Page 41: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN

LINKS

STETL

PROJECT SITE

DOCU DEMOS AND INFO

http://inspire.kademo.nl

http://inspire-foss.org

http://stetl.org

Page 42: XSLT for INSPIRE Transformation by Dutch Kadaster in ESDIN