370 likes | 529 Views
TOP10NL GML prototype. 2nd GML Relay, 13-12-2002 Marian de Vries. 1st GML Relay 12 June 2001: 2 participants. IONIC Software. Laser-Scan. Maybe too early !. Why this 2nd Relay. 1,5 year later more companies have invested in GML .. but GML is still not mainstream
E N D
TOP10NL GML prototype 2nd GML Relay, 13-12-2002 Marian de Vries
1st GML Relay 12 June 2001:2 participants IONIC Software Laser-Scan Maybe too early !
Why this 2nd Relay • 1,5 year later • more companies have invested in GML • .. but GML is still not mainstream • ‘data barrier’ problem not yet solved • (GIS) users want ‘transparent’ data exchange
Overview • TOP10Vector project • GML: why • GML: how • TOP10NL GML prototype
TOP10Vector project • Started in 2000 • Project cooperation: • Topografische Dienst (= Dutch NMA) • Center for Geo Information Wageningen • ITC Enschede • Geodesy dept. TU Delft • User groups
TOP10Vector project • Dutch topographic data originally: • ‘old’ goal: map making • lines, points and label-points (annotiation + symbols), ‘implicit’ polygons • no unique id’s • no feature info, only classification code (TDN-code)
TOP10Vector project • User groups asked for • more object-oriented data model • also non-spatial attributes (names, road type, …) • metadata • history / temporal queries • easy aggregation (thematic, geometry) • unique id --> linking with other data
TOP10Vector project • Additional goal: • conformance to standards: OpenGIS, ISO, CEN • Why? • mif, e00, dxf, SQLLoad files = vendor specific • NEN 1878 = Dutch, not international
Overview • TOP10Vector project • GML: why • GML: how • TOP10NL GML prototype
GML= Geography Markup Language • Has XML as technical format • ‘content’ between begin and end tags • supported by non-GIS tools • XML = eXtensible • has XML Schema as ‘data definition’ language
GML = XML <Polygon srsName=”http://www.opengis.net/gml/srs/epsg.xml#2393”> <outerBoundaryIs> <LinearRing> <coordinates> 3586549.54,6790984.34 3586598.23,6790924.09 3586649.23,6790952.23 3586549.54,6790984.34 </coordinates> </LinearRing> </outerBoundaryIs> <innerBoundaryIs> … </innerBoundaryIs> </Polygon>
GML fits TOP10 renewal wishes • Is open standard (of OpenGIS Consortium, in cooperation with ISO) • Is based on ‘object oriented’ data model: • features with spatial + non-spatial properties, unique id’s • data oriented, not map oriented
GML 2.1 geometry model Point LineString LinearRing Polygon MultiPoint MultiLineString MultiPolygon Box
Basic GML element ‘tree’ FeatureCollection featureMember Feature nonSpatialProperty nonSpatialProperty … geometryProperty Geometry (Polygon, LineString, Point etc.) geometryProperty Geometry (Polygon, LineString, Point etc.) … nonSpatialProperty …
TOP10NL GML data example <tdn:WegDeel fid="TOP10.402814"> <tdn:top10_id>2400001</tdn:top10_id> <tdn:bronRef xlink:type="simple" xlink:href="metadata.xml#TOP10.9000017"/> <tdn:object_begindatum>2001-12-17T13:24:10+02:00</tdn:object_begindatum> ... <tdn:toegankelijkheid>Openbaar</tdn:toegankelijkheid> <tdn:status>In gebruik</tdn:status> <gml:polygonProperty> <gml:Polygon srsName="EPSG:28992"> ... </gml:Polygon> </gml:polygonProperty> <gml:geometryProperty> <gml:LineString srsName="EPSG:28992"> <gml:coordinates> 106045.396,449000 105965.228,448967.705 105619.713,448827.507 </gml:coordinates> </gml:LineString> </gml:geometryProperty> <tdn:wegtype>Autosnelweg</tdn:wegtype> <tdn:hoofdverkeersgebruik>Snelverkeer</tdn:hoofdverkeersgebruik> ... <tdn:wegnummer>A12</tdn:wegnummer> <tdn:wegnummer>E25</tdn:wegnummer> <tdn:wegnummer>E30</tdn:wegnummer> </tdn:WegDeel>
GML implementations • First implementor: • Ordnance Survey Master Map • Runners-up: • Germany (NorthRhine Westphalia) • American Census Bureau (TIGER/Line) • Dutch Topographic Service (TDN) • Scandinavia, France, ... • Both ‘online’ (OGC WFS) and ‘offline’
GML != ready-to-use format • you have to design your own data model • organisation or domain specific, e.g. • for topographic data • for cadastral data • for environmental data • each in their own ‘namespace’ ...
GML spec. = class repository (abstract) types gml:AbstractFeatureCollectionType gml:FeatureAssociationType gml:AbstractFeatureType gml:GeometryPropertyType gml:AbstractGeometry element names gml:polygonProperty gml:lineStringProperty ... gml:Polygon gml:Point ... gml:coordinates gml:Box
… to GML .xsd schema <!-- ============================================================== Type definition of Top10ObjectType (= inherited and extended by all TOP10 feature types) =================================================================== --> <complexType name="Top10ObjectType" abstract="true"> <complexContent> <extension base="gml:AbstractFeatureType"> <sequence> <element name="top10_id" type="integer"/> <element ref="tdn:bronRef"/> <group ref="tdn:Temporeel"/> <element name="dimensie" type="tdn:dimensie"/> <element name="tdncode" type="integer"/> </sequence> </extension> </complexContent> </complexType>
Reuse of classes in GML spec. <!-- ============================================================== Type definition of Top10ObjectType (= inherited and extended by all TOP10 feature types) =================================================================== --> <complexType name="Top10ObjectType" abstract="true"> <complexContent> <extension base="gml:AbstractFeatureType"> <sequence> <element name="top10_id" type="integer"/> <element ref="tdn:bronRef"/> <group ref="tdn:Temporeel"/> <element name="dimensie" type="tdn:dimensie"/> <element name="tdncode" type="integer"/> </sequence> </extension> </complexContent> </complexType> gml:AbstractFeatureCollectionType gml:FeatureAssociationType gml:AbstractFeatureType gml:GeometryPropertyType gml:AbstractGeometry gml:polygonProperty gml:lineStringProperty ... gml:Polygon gml:Point ... gml:coordinates gml:Box
Overview • TOP10Vector project • GML: why • GML: how • TOP10NL GML prototype
TOP10NL GML prototype • 10 Feature types • WegDeel, WaterDeel, SpoorbaanDeel, Terrein = complete cover of surface • Gebouw • InrichtingsElement • 4 ‘Gebieden’ (= Admin. Areas) feature types • 7 Feature collections
TOP10NL GML prototype • Some characteristics: • feature types with more than 1 geometry • mixed geometries • use of Xlink/XPointer • cardinality (multiplicity) of properties • ...
Infrastructure types have 2 geometries <complexType name="InfrastructuurType" abstract="true"> <complexContent> <extension base="tdn:Top10ObjectType"> <sequence> <element name="type" type= .../> <element name="toegankelijkheid" type= … /> <element name="status" type="tdn:status"/> <element ref="gml:polygonProperty"/> <element ref="gml:geometryProperty"/> </sequence> </extension> </complexContent> </complexType> Road, Railway, Water inherit from this type
Metadata per object -> XLink/XPointer <tdn:WaterDeel fid="TOP10.101221"> <tdn:top10_id>6100001</tdn:top10_id> <tdn:bronRef xlink:href="metadata.xml#TOP10.9000017"/> <tdn:Bron id="TOP10.9000017"> <tdn:bron_id>9000017</tdn:bron_id> <tdn:brontype>Geïnterpreteerde luchtfoto</tdn:brontype> <tdn:bronbeschrijving>Orthogonale luchtfoto, vlieghoogte ca 3800 meter; schaal 1:18000</tdn:bronbeschrijving> <tdn:bronactualiteit>1998</tdn:bronactualiteit> <tdn:bronnauwkeurigheid>5 meter</tdn:bronnauwkeurigheid> </tdn:Bron>
More than 1 value -> more than 1 element <tdn:WegDeel fid="TOP10.150044"> <tdn:top10_id>2105003</tdn:top10_id> <tdn:bronRef xlink:type="simple” xlink:href .../> <tdn:ontstaan_uit>6100004</tdn:ontstaan_uit> <tdn:ontstaan_uit>2100012</tdn:ontstaan_uit> <tdn:ontstaan_uit>5100212</tdn:ontstaan_uit> … history in data: ‘originated_from’ property
Null value --> no element <tdn:WegDeel fid="TOP10.101784"> <tdn:top10_id>2110084</tdn:top10_id> <tdn:bronRef xlink:type="simple" xlink:href= .../> <tdn:ontstaan_uit></tdn:ontstaan_uit> <tdn:object_begindatum>2001-12-11T11:38:15+02:00</tdn:object_begindatum> ... Leave ‘empty’ element out
Processing GML • Three strategies • write data specific software (e.g. Ordnance Survey GML importers) • offer ‘core’ compliance / only support standard GML geometry names and data types • try to write generic software -> parse .xsd schema first
And now … the 2nd Relay • Will they succeed ? • Which strategy did they choose ? • What dangers will they encounter ...
</complexType> <element name="Gebouw" type="tdn:GebouwType" substitutionGroup="gml:_Feature"/> <complexType name="GebouwType"> <complexContent> <extension base="tdn:Top10ObjectType"> <sequence> <element name="type" type="tdn:typeGebouw"/> <element name="functie" type="tdn:functieGebouw"/> <element name="hoogteklasse" type="tdn:hoogteklasse"/> <element name="hoogte" type="tdn:numeriekOnb"/> <element name="status" type="tdn:status"/> <element ref="gml:geometryProperty"/> <element name="hoogteniveau" type="integer" minOccurs="0"/> <element name="naam" type="string" minOccurs="0"/> </sequence> </extension> </complexContent> </complexType> <!-- ============================================================== Declarations for InrichtingsElementen (= one of the themes)