Transcript lovegpml

“How I started to love GML”
The new GPlates Markup Language
James Clark, GPML Mad Scientist
In today's exciting presentation
●
●
●
●
Reminder of what it is, and why we want to
use it
Why things get so complicated
Brief brief brief overview of GPML structures
because they're always changing
Examples
GML
●
What is it?
–
●
Why do we want to use it?
–
–
●
The fun happy next generation GIS standard
format
It's XML
Everyone else wants to
Why aren't we using it already!?
–
Because it's very, very, complicated
●
This isn't a bad thing
GPML
●
What is it?
–
●
The part of GML that we carve out ourselves, for
GPlates to use
Why should we have to do work?
–
–
–
GML provides a common framework of simple
GIS primitives and structures that we can use as
a base
It's not a magic bullet
As well as creating a data model for our plate
tectonic stuff, we also need to make it use as
much of these GML elements as possible, or
there's no benefit
Why so complicated?
●
GML makes us use objects for everything
–
–
●
These objects must be arranged logically, but
need different properties
–
●
Objects referring to objects referring to more
objects with objects inside and a side order of
objects
This is why my diagrams get so messy
i.e. Features which are reconstructable vs
features which aren't
It looks more confusing than it really is, just
because one “thing” is represented with
multiple elements in GML
Example of objects with
different properties
●
If we want to define a section of continental
crust vs oceanic crust, we could use a simple
polygon
–
–
●
But what about when the features that define
that boundary move around?
What about overlapping features?
The “Crust Boundary” element becomes a
separate feature to the “Crust Boundary
Segment” feature
–
It's one single entity to us, but in GML and
GPML, it needs to be split up
Overlapping boundaries
Overlapping boundaries
Example markup
<gpml:SimpleIsochron gml:id=”ISO5218”>
●
<gpml:age/>
<gml:centerLineOf/>
</gpml:SimpleIsochron>
●
Our basic simple
unbroken-line
Isochron Feature
GPML defines it to
have an age and a
centre line
Example markup
<gpml:SimpleIsochron gml:id=”ISO5218”>
●
<gpml:age>
<gml:TimeInstant/>
</gpml:age>
<gml:centerLineOf>
<gml:LineString/>
●
</gml:centerLineOf>
</gpml:SimpleIsochron>
●
Inside the age
property is a
TimeInstant Feature
Inside the
centerLineOf
property is a
LineString Feature
These are both GML
constructs
Example markup
<gpml:SimpleIsochron gml:id=”ISO5218”>
●
<gpml:age>
<gml:TimeInstant>
<gml:timePosition>
110
</gml:timePosition>
●
</gml:TimeInstant>
</gpml:age>
<gml:centerLineOf>
<gml:LineString>
<gml:posList dimension=”2”>
180.34 90.76
180.35 90.60
180.35 90.51
</gml:posList>
</gml:LineString>
</gml:centerLineOf>
</gpml:SimpleIsochron>
TimeInstant and
LineString have their
own properties
Finally we can
specify the actual
age and geometry of
the Isochron
Example markup
<gpml:SimpleIsochron gml:id=”ISO5218”>
●
<gpml:age>
<gml:TimeInstant>
<gml:timePosition frame=”#myGeoMA”>
110
●
</gml:timePosition>
</gml:TimeInstant>
</gpml:age>
<gml:centerLineOf>
<gml:LineString srsName=”#myGeographicCRS”>
<gml:posList dimension=”2” uom=”#latlong”>
180.34 90.76
180.35 90.60
180.35 90.51
</gml:posList>
</gml:LineString>
</gml:centerLineOf>
</gpml:SimpleIsochron>
Time values need a
reference frame
Lat,Long values also
depend on what
CRS was used
And that was a simple example
●
The SimpleIsochron element example has
two properties defined by GPML
–
●
It also inherits additional properties from
higher up in the GPML model
–
●
age, centerLineOf
validTime, rotationHistory, oldPlatesHeader
And inherits even more properties from the
GML model
–
gml:name, gml:description, gml:boundedBy, ...
Do not be afraid
Be very, very frightened, Arthur Dent
●
●
●
You will not have to actually write this markup
yourself. That's the software's job.
The multitude of objects and elements and
features and properties and attributes may
look scary and bloated...
But it's better to have the ability to keep track
of this data rather than forget it