20160616_QGIS_GDAL_OGR__complex_feature_Grelletx

Download Report

Transcript 20160616_QGIS_GDAL_OGR__complex_feature_Grelletx

Supporting GML application
compliant complex features in
QGIS and beyond
BRGM – S.Grellet
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
Overall context
NO DATA
?
NO CLIENT
« another approach to demonstrate
the usefulenessof interoperable standards »
or
« having something to show to those
who consider XML is not sexy »
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
>2
Overall context
> Few applications are able to handle GML flows
compliant to an application schema
•
Appart when hardcoded
> Initial idea :
• A correct xml content points to its xsd(s )
 Can we generate a database structure from what is declared in the
xsd ?
Having a generic solution with no hardcoded configuration ?
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
>3
Overall context
> Proof Of Concept exercise
> Desktop open source application : QGIS
> Use case :
•
•
Ground Water quantity monitoring
Reading data, not writing
> Complex Feature Flows
•
WFS
•
SOS
– Piezometers : Inspire Environmental Monitoring Facility theme
– Aquifer : Inspire Geology-Hydrogeology, GWML2
– WaterML2
> Project started Fall 2015
•
With core QGIS commiters
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
>4
Technological choices
> Input : XML File or URL
> Solution to handle XML types
•
•
Xerces (C++) : supports “Schema API” and esp. “post-schemavalidation infoset” to access schema information (thus types)
Xsd -> Object model conversion
– Code Synthesis (C++) and PyXB (Python)
 PyXB
> XML parsing
•
•
Xsd caching
Well-formed XML = minimum. Degraded mode for ‘non-perfect’ xml
> ‘Content negociation’ on xlink:href
•
•
For codeLists : test on Inspire vocabulary registry, Sandre, …
For Features
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
>5
Technological choices
> Database :
•
PostGIS / SpatialLite
> Simplification / dynamic flatening parameter
> Respecting application schema
•
•
•
Structure
Types
Referential integrity
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
>6
Results – data content context
> Ex : Environmental Monitoring Facility : piezometers
class Env ironmentalMonitoringFacilities
EF-Level
+supersedes
0..*
+narrower
0..*
«featureType»
AbstractMonitoringObject
Hierarchy
http://inspire.ec.europa.eu/schemas/ef/4.0/
genealogy
Observation and ObservingCapability
/* If Observation(s) are attached to an AbstractMonitoringFeature this must have
an ObservingCapability attached to it. The ObservingCapability must reference
the same Domain, Phenomenon and ProcessUsed as the Observation. */
inv: hasObservation->notEmpty() implies observingCapability->notEmpty() and
hasObservation.OM_Observation.featureOfInterest =
observingCapability.featureOfInterest and
hasObservation.OM_Observation.observedProperty =
observingCapability.observedProperty and
hasObservation.OM_Observation.procedure = observingCapability.procedure
+supersededBy
0..*
«featureType»
AbstractMonitoringFeature
+
+
+
+
+
inspireId :Identifier
name :CharacterString [0..*]
additionalDescription :CharacterString [0..1]
mediaMonitored :MediaValue [1..*]
geometry :GM_Object [0..1]
«voidable»
+ legalBackground :LegislationCitation [0..*]
+ responsibleParty :CI_ResponsibleParty [0..*]
+ onlineResource :CI_OnlineResource [0..*]
+ purpose :PurposeOfCollectionValue [0..*]
«featureType»
Env ironmentalMonitoringActiv ity
+uses
0..*
«voidable»
+ reportedTo :ReportToLegalAct [0..*]
hierarchy
+
«voidable»
+ linkingTime :TM_Object
+broader
0..1
«featureType»
Env ironmentalMonitoringProgramme
+triggers
0..*
inspireId :Identifier
Environmental
Monitoring Facilities
GeometryRequired
/* Geometry and
representativePoint can't be
empty at the same time.*/
inv: geometry ->notEmpty() or
representativePoint ->
notEmpty()
+involvedIn
0..*
constraints
{Observation and ObservingCapability}
«featureType»
Env ironmentalMonitoringFacility
+setUpFor
0..*
«voidable»
+ activityTime :TM_Object
+ activityConditions :CharacterString
+ boundingBox :GM_Boundary [0..1]
+ responsibleParty :CI_ResponsibleParty
+ onlineResource :CI_OnlineResource [0..*]
«featureType»
Env ironmentalMonitoringNetw ork
«voidable»
+ representativePoint :GM_Point [0..1]
+ measurementRegime :MeasurementRegimeValue
+ mobile :Boolean
+ resultAcquisitionSource :ResultAcquisitionSourceValue [0..*]
+ specialisedEMFType :SpecialisedEMFTypeValue [0..1]
«voidable»
+ organisationLevel :LegislationLevelValue
+contains
0..*
constraints
{GeometryRequired}
+belongsTo
0..*
+relatedTo
0..*
Netw orkFacility
«voidable»
+ linkingTime :TM_Object
AnyDomainLink
+observingCapability
0..*
«voidable»
+ comment :CharacterString
1..*
«featureType»
Observ ingCapability
+operationalActivityPeriod
«voidable»
«voidable»
+ observingTime :TM_Object
+ processType :ProcessTypeValue
+ resultNature :ResultNatureValue
+ onlineResource :URI [0..1]
«featureType»
OperationalActiv ityPeriod
+
hasObservation:
Link from WFS to SOS
activityTime :TM_Object
+hasObservation
«voidable»
0..*
«FeatureType»
observ ation::OM_Observ ation
+
+
+
+
+
Phenomenon
Domain
ISO FDIS 19156:2011 Observations and Measurements
+propertyValueProvider +featureOfInterest
«FeatureType»
General Feature Instance::GFI_Feature
+observedProperty
0..*
+result
1
«metaclass»
General Feature Model::GF_PropertyType
{root}
+
1 +
+generatedObservation
+procedure
«FeatureType»
observation::OM_Process
+procedure
ProcessUsed
0..*
1
+relatedObservation
0..*
observ ation::
Observ ationContext
+
role :GenericName
GCM Base Types 2
Additional classes from GCM Observations
Base Types 2::DocumentCitation
+
+
name :CharacterString
shortName :CharacterString [0..1]
«voidable»
+ date :CI_Date
+ link :URL [1..*]
DataType
«dataType»
ReportToLegalAct
+
+
+
1
memberName :LocalName
definition :CharacterString
realises
«type»
Records and Class
Metadata::Any
{root}
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
+observedProperty
1
Phenomenon
constraints
{observedProperty shall be a phenomenon associated with
the feature of interest}
{procedure shall be suitable for observedProperty}
{result type shall be suitable for observedProperty}
{a parameter.name shall not appear more than once}
Range
ProcessUsed
+featureOfInterest
ISO 19156:2011
Observations and
Measurements
Domain
0..*
phenomenonTime :TM_Object
resultTime :TM_Instant
validTime :TM_Period [0..1]
resultQuality :DQ_Element [0..*]
parameter :NamedValue [0..*]
0..1
legalAct :LegislationCitation
reportedEnvelope :URI [0..1]
description :CharacterString [0..1]
Base Types 2::LegislationCitation
+
+
+
+
identificationNumber :CharacterString [0..1]
officialDocumentNumber :CharacterString [0..1]
dateEnteredIntoForce :TM_Position [0..1]
dateRepealed :TM_Position [0..1]
«Type»
Observable Properties::
AbstractObservableProperty
«featureType»
Processes::Process
INSPIRE O&M
extensions > 7
+
label :CharacterString [0..*]
«voidable»
+ documentation :DocumentCitation [0..*]
+ inspireld :Identifier
+ name :CharacterString [0..1]
+ processParameter :ProcessParameter [0..*]
+ responsibleParty :CI_ResponsibleParty [1..*]
+ type :CharacterString
«dataType»
Processes::ProcessParameter
Results – plugin modes
> XML: handling the XML file as is with additionnal
intelligence on top
•
•
•
Xpath to geometry(ies) information
Ability to handle hlink:href
Identification of TimeSeries
> Relational database : creating database structure in
SpatialLite
• Maximum table merging depth parameter : dynamic flattening
 adjust the verbosity of the resulting database structure
•
‘Merge unitary sequences’ : for Attributes with max cardinality * in
the xsd but only present once in the xml
 avoid un-necessary additional tables
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
>8
Results – XML Mode
> On WFS flow
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
>9
Results – XML Mode
> On SOS flow
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
> 10
Results – Relational database Mode
> ex : WFS flow
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
> 11
Results – Relational database Mode
> ex : WFS flow
•
Schema representation within QGIS to ease navigation
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
> 12
Results – Relational database Mode
> ex : SOS flow
•
Data structure whithin Database Manager
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
> 13
Results – Relational database Mode
> ex : SOS flow
• Data content is here
 We can deploy domain plugins for our domain colleagues
Ex : analyse trends, correct values, …
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
> 14
Further test results
> Data structure generation is quite fast on
reasonable datasets
•
Matter of seconds
> Tested on others application schema compliant
dataflows
•
Geology : European Geological Data Infrastructure
•
Mineral resources : Minerals4EU
– Inspire Geology
– GeoSciML V4
– Inspire Mineral resources
 Works quite well for a POC
 Both modes have their utility
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
> 15
Next steps
> 1a°/ Publish the plugin
•
•
Name : ‘QGIS GML Application Schema Toolbox’
In the official QGIS repository
> 1b°/ Gather feedbacks
•
•
HydroDWG, GeoSciML, ….
Inspire
 Have people use it…
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
> 16
Next steps
> 2°/ Enhance the work (whishlist)
•
Port the approach to GDAL/OGR
•
Enable application schema compliant writing
•
Improve the UI
•
Add domain useful widget (Hydrogeologists, …)
 Nothing in the code is Inspire specific so this work
could be useful to the overall OGC community.
 Have other structures contribute to its development
•
Ex : Study under COPERNICUS umbrella to enhance INSPIRE data
consumption/use within QGIS
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
> 17
Thank you
[email protected]
OGC Hydro DWG Workshop 2016 – Koblenz – 2016-06-16
> 18