16/03/2004 - Christine Bougoüin

Information géographique et GML

Table des matières

1. Le GML
2. Infogéo et SDAPA
3. Infogéo et GML
3.1. Système de références
3.2. Eléments géométriques
4. SDAPA+GML
Bibliographie

Pour les systèmes d'informations, il existe un standard particulier pour gérer les informations géographiques. Il s'agit du GML, Geographical Markup Language, de l'OGC, Open GIS Consortium (URL : http://www.opengis.org/). Que permet ce langage ? Et pourrait-il s'insérer dans le modèle SDAPA ?

1) Le GML

Le GML est une spécification pour la modélisation, l'échange et la gestion d'informations géographiques en XML. Elle fournit un ensemble d'objets pour décrire le relief, les coordonnées géodésiques, la topologie, les unités de mesure.

La version 3.0 inclut les éléments nécessaires pour traiter les géométries complexes, les références aux systèmes spatiaux, géodésiques et temporels de références ou de coordonnées. La spécification utilise notamment la recommandation XML Encoding of Coordinate Reference System definitions, préparée par le CRS SIG de OGC, pour décrire les caractéristiques des systèmes de références auxquels se réfèrent les coordonnées. La structure de GML 3.0 est modulaire ce qui signifie que l'on peut utiliser seulement les schémas ou parties de schémas dont on a besoin (TODO : à détailler). En outre, il existe une version "simplifiée" du schéma ne contenant que les éléments obligatoires de la norme, soit le noyau de GML (GML Core).

Le GML permet de décrire des entités géographiques indépendamment de leur représentation sur une carte : nature, forme géométrique, coordonnées, topologie. Or pour la réalisation de ces cartes, il est nécessaire de transformer le GML en un format XML de représentation graphique. On peut utiliser SVG (autre langage XML), VML (Vector Markup Language) ou VRML (Virtual Reality Markup Language). Ainsi GML permet de créer des cartes par l'intermédiaire d'un outil de transformation (XSL vers SVG, par exemple) capable de représenter les données géographiques encodées. Cet outil permet de préciser comment on souhaite voir représenter chacune des entités (un point pour les villes, une ligne bleue pour les rivières, etc...)

Eléments de base. Le GML s'applique sur ce que l'on peut appeler des éléments de base. Il sert à décrire le monde réel suivant des critères géométriques et topographiques. Qu'est-ce qui est décrit par GML ?

  • entité géographique (ou feature en anglais) : une entité géographique est un "détail physique que l'on perçoit à la surface de la terre" [OQLF]. Par exemple : une autoroute, une ville, un pont, un bâtiment, une rivière, etc.

  • couverture (ou coverage en anglais), notion plus difficile à cerner : il s'agit d'un sous-ensemble des entités géographiques. Plusieurs définitions peuvent s'appliquer suivant le contexte d'application. Cela se rapporte soit à la population soit à une aire géographique incluses dans une étude statistique donnée. Dans un système d'information géographique, c'est un répertoire qui contient toutes les tables nécessaires à la localisation et à la description d'entités géographiques situées dans une zone donnée. Ou encore c'est une carte thématique utilisée comme base de référence numérique pour le stockage, sous forme de données vectorielles, d'entités géographiques.[OQLF]

  • observation : sous-ensemble des entités géographiques. Une observation est une paire valeur et référence temporelle (indication du moment où a été réalisée l'observation). Exemples : campagne photographique, prise de mesure.

  • unité (UOM : Units of Measure) : un dictionnaire des unités de mesure fournit la définition des mesures numériques des quantités physiques, comme la longueur, la température, la pression et les conversions entre les différentes unités.

  • système de référence : c'est ce qui fournit une échelle de valeurs pour la localisation, la chronologie ou toute autre échelle de mesure de quantité ou de qualité.

  • système géodésique : permet de définir les caractéristiques d'un système géodésique; axes de référence, type de projection. Cette information est liée aux indications géométriques: il faut bien indiquer à quel système appartiennent les coordonnées fournies.

  • système de référence temporelle : fournit les unités standards de mesure du temps et décrit les notions de période et de durée.

Le schéma. Le schéma est constitué de plusieurs sous-schémas traitant de différents aspects (entité géographique, coverage, élément de géométrie, unité, système géodésique, etc.). Dans sa globalité, le schéma GML constitue en fait une base d'éléments et de modèles de contenu dans laquelle il ne reste qu'à "piocher" pour décrire des éléments géographiques plus ou moins complexes et de manière plus ou moins précise. En effet, la plupart des modèles de contenu des éléments de ce schéma ne peuvent pas être utiliser comme tels car déclarés comme "abstraits" (abstracttrue) ; il faut qu'ils soient dérivés (notion de SubstitutionGroup dans la norme XML Schema). Il s'agit donc du schéma de base ou de référence auquel viennent se greffer des schémas d'applications qui eux spécifient comment décrire tel ou tel objet géographique avec un mélange d'éléments GML (appartenant au schéma de base) et d'éléments "personnalisés". Ces schémas d'applications apportent entre autres la sémantique, pas du tout traitée par GML : notamment pour donner des noms sémantiquement significatifs aux éléments qui décrivent les entités géographiques.

Exemple 1. Utilisation d'espaces nominatifs personnalisés pour les entités géographiques

<os:Road>
	<gml:description>Georgia Street</gml:description>
	<os:numberLanes>4</os:numberLanes>
	<gml:centerLineOf>
		<gml:LineString srsName="epsg:4277">
			<gml:coordinates>0.0,100.0 100.0,0.0</gml:coordinates>
		</gml:LineString>
	<gml:centerLineOf>
</os:Road>

Pour une portion de route GMLv2
<uka:Road fid="highway11">
	<uka:numLanes>3</uka:numLanes>
	<uka:surfaceType>gravel</uka:surfaceType>
	<gml:centerLineOf>
		<gml:LineString srsName = "epsg:4277">
			<gml:coordinates>...</gml:coordinates>
		</gml:LineString>
	</gml:centerLineOf>
</uka:Road>

La lecture du schéma de base GML (une dizaine de fichiers) est rendu difficile du fait de l'usage d'importation des schémas les uns par les autres et de la dérivation des modèles de contenu. Cette dernière permet les variantes de contenu pour certains éléments. De plus, dans les schémas XML, les espaces nominatifs (namespaces) étant gérés, on peut ajouter des éléments particuliers appartenant à d'autres schémas (principe de base de la création de schémas d'applications).

Exemple 2. Description d'une entité géographique en GML

<gml:feature id="">
	<gml:metaDataProperty></gml:metaDataProperty>
	<gml:description></gml:description>
	<gml:name></gml:name>
	<gml:boundedBy></gml:boundedBy>  <!-- describes an envelope that encloses the entire feature
instance, and is primarily useful for supporting rapid searching for features that occur in a
particular location. -->
	<gml:location> <!-- describes the extent, position or relative location of the feature. -->
		<gml:_Geometry/> | 
		<gml:LocationString/> | <!-- A location string is a text string which should describe the location. -->
		<gml:LocationKeyWord/>
	</gml:location>
</gml:feature>

Exemple 3. Exemples de contenu de <gml:location>

1) <gml:Point gml:id="point96" srsName="epsg:4277">
				<gml:coordinates>31:56:00S 115:50:00E</gml:coordinates>
			</gml:Point>

2) <gml:location>
				<gml:LocationString>Nigel Foster’s town of residence</gml: LocationString>
			<gml:location>

3) <gml:location>
				<gml:LocationKeyWord codeSpace="http://www.anzlic.org.au/icsm/cgna/index.html">Leederville</gml:LocationKeyWord>
			</gml:location>

Application. 

En général, une application GML est donc constituée de plusieurs fichiers GML et de plusieurs schémas d'application (un par entité géographique) ; elle utilise gml:FeatureCollection pour contenir les entités définies dans un schéma d'application (TODO : à revoir). Une application GML définit les types d'entités et les éléments globaux qui serviront à les définir dans un contexte spécifique.

Il est possible de décrire chacune de ses entités et de les relier les unes aux autres (XLink). Une entité géographique est en fait une liste de propriétés et de figures géométriques. Les propriétés sont : le nom usuel, le type, la description. Les figures géométriques sont composées de formes simples, lignes, points, courbes, surfaces, polygones (dans la spécification seulement 2D et avec les extensions 3D). Une entité peut être constituer d'autres entités, de même pour sa géométrie.

Le point essentiel pour un système d'information géographiques est que ses données soient reliées à un repère terrestre. GML inclut un système de coordonnées spatiales dans un référentiel terrestre. Ce système tient compte de très nombreux systèmes géodésiques. Il est aussi possible pour l'usager de définir les paramètre de son système de références et ses unités.

Conclusion. En fait, GML permet de décrire géométriquement des éléments géographiques mais ne permet pas de les décrire d'un point de vue sémantique (pas de distinction entre pays, région, ville, quartier, etc.). Il donne juste les éléments nécessaires pour décrire des éléments géographiques (géométrie, topographie, positionnement) : description suivant des critères quantifiables. A la lecture d'un fichier GML, on ne peut à priori pas savoir dans quel département se situe une ville, seule la représentation graphique nous le montre (ses coordonnées appartiennent à l'espace défini pour le département).

Bibliographie

[GML3.0] Open GIS Consortium, Inc.. OpenGIS Geography Markup Language (GML) Implementation Specification. 2003-01-29. 548. 3.0. http://www.opengis.org/docs/02-023r4.pdf.

2) Infogéo et SDAPA

Le positionnement topographique est un élément essentiel dans la gestion des objets au sein de plusieurs départements de la DAPA, inventaire, monuments historiques, espaces protégés. Aussi le schéma doit-il couvrir cet aspect et au minimum égaler les possibilités des systèmes actuels. A l'heure actuelle, l'information géographique recouvre deux facettes :

  • la localisation géographique hiérarchique suivant les entités administratives et par adressage. Exemple : cet édifice est situé au numéro tant de telle rue dans le canton C, la commune CO du département D dans la région R.

  • les coordonnées topographiques en Lambert 2 en général, avec deux possibilités géométriques : le point ou le polygone. Pouvoir positionner sur une carte l'édifice dont il est question.

Le schéma tient compte de ces contraintes et pour l'instant, il est déjà possible de structurer l'information géographique avec le schéma SDAPA de la manière suivante :

<place> <!-- A revoir : comment structurer l'info géo -->
	<placename>
		<locality></locality>
		<region></region>
		<country></country>		
	</placename>
	<address>
		<building></building>
		<streetnumber/><streettype/><streetname/>
		<addrline></addrline>
		<locality></locality>
		<region></region>
		<country></country>
	</address>
<!-- la suite de l'exemple représente une version obsolète du schéma SDAPA, 
					avant la décision d'intégrer le GML dans le schéma -->
	<coordinates>
		<point type="{projection}" name="{lieu}">
			<north type="{unité}"></north> <!-- latitude -->
			<east type="{unité}"></east> <!-- longitude -->
			<up type="{unité}"></up> <!-- altitude -->	
		</point>
	ou
		<box name="{nom du lieu}" type="{projection}">
			<north type="{unité}"></north>
			<south type="{unité}"></south>
			<east type="{unité}"></east>
			<west type="{unité}"></west>
			<up type="{unité}"></up>
			<down type="{unité}"></down>	
		</box>
	</coordinates>
</place>

Est-ce suffisant ? Cela répond-il correctement aux besoins de la DAPA ? A priori, il n'est pas possible de traiter le cas du polygone.

3) Infogéo et GML

La partie géométrie tient une place importante en GML car c'est elle qui permettra de réaliser une représentation visuelle du fichier, sous la forme généralement d'une carte. Le schéma permet aussi de décrire un système géodésique en détail, ceci afin de pouvoir effectuer les éventuelles conversions d'un système à un autre.

Exemple 4. Partie Géométrie (détail du groupe <gml:_Geometry/>)

<gml:_Geometry abstract="true">
	<gml:_GeometricPrimitive abstract="true"/> <!-- Ne contient pas ses limites -->
	<gml:GeometricComplex/> <!-- Contient ses limites -->
	<gml:_GeometricAggregate abstract="true"/>
</gml:_Geometry>

Une adresse fait intervenir plusieurs entités géographiques : bâtiment, rue, quartier, localité, pays. Le tout est de savoir qu'elles sont les entités que l'on veut décrire ou pouvoir visualiser sur une carte. Sinon, il faut toutes les traiter ; c'est-à-dire définir des modèles de contenu pour chacune, or ce n'est pas à priori l'intention du schéma SDAPA qui avant tout un schéma généraliste.

<gml:feature featureType="dapa:building"/>
<gml:feature featureType="dapa:road"/>
<gml:feature featureType="dapa:locality"/>

GML ne traitant pas le côté sémantique, de toute façon, on se retrouve très limité pour décrire l'information géographique si on s'en tient uniquement à des éléments GML de base. D'ailleurs, ce n'est pas ce qui est prescrit par la norme GML. Elle encourage à dériver les modèles de contenu qu'elle contient pour les adapter à un contexte particulier et y ajouter notamment toute la sémantique. En s'en tenant strictement à GML, on ne peut obtenir mieux que l'exemple ci-dessous :

Pour représenter un lieu
<gml:feature>
	<gml:description></gml:description>
	<gml:address></gml:address>
</gml:feature>
<gml:location>
	<gml:Point gml:id="point96" srsName="epsg:4277">
<!--  solution deprecated in GML3.0 -->
		<gml:coord>
			<gml:X></gml:X>
			<gml:Y></gml:Y>
			<gml:Z></gml:Z>
		</gml:coord>
	</gml:Point>
</gml:location>

<!-- Autre solution pour indiquer les latitudes et longitudes dans la définition du référentiel -->
<gml:dmsAngle>
	<gml:degrees direction="S">35</gml:degrees>
	<gml:decimalMinutes>45.43</gml:decimalMinutes>
</gml:dmsAngle>
<gml:Point srsName="epsg:4277"> où epsg:4277 renvoie à la définition complète d'un CRS.

3.1) Système de références

Le but des systèmes géodésiques est de définir un système de coordonnées, permettant la localisation exacte d'un point dans l'espace. Pour toute application, il y a un système particulier qui répond aux besoins. Ainsi, si on veut décrire la localisation d'un arbre dans un verger, on utilisera un autre système de coordonnées que pour décrire le mouvement des planètes dans le système solaire.

La position ou localisation d'un point est donnée par ses coordonnées. Or ces coordonnées sont ambiguës tant qu'il n'est pas précisé à quel système de références elles appartiennent et celui-ci décrit précisément. En effet, les coordonnées d'un même point diffèrent suivant le référentiel dans lequel elles sont exprimées.

Le référentiel géodésique (ou CRS, Coordinate Reference System) est donc un élément indispensable dans GML auquel on renvoie chaque fois que l'on fournit des coordonnées. La référence à ce système est généralement établie par l'attribut srsName.

In general the attribute “srsName” points to a CRS instance of gml:CoordinateReferenceSystemType (see coordinateReferenceSystems.xsd). For wellknown references it is not required that the CRS description exists at the location the URI points to (Note: These "WKCRS"-ids still have to be specified). If no srsName attribute is given, the CRS must be specified as part of the larger context this geometry element is part of, e.g. a geometric aggregate. ( source [GML3.0])

Or il existe de très nombreux systèmes géodésiques, adaptés à une zone d'application. Il est donc important que ce système de coordonnées soit bien décrit ; d'une part pour exploiter correctement les positions géographiques et d'autre part pour être capable de passer d'un référentiel à un autre (conversion des données d'un système à un autre). Ainsi en France, plusieurs systèmes coexistent : NTF (Nouvelle Triangulation de la France), ED50 (European Datum 1950), RGF93 qui remplace NTF, WGS84 (World Geodetic System 1984) système mondial, ITRS (International Terrestrial Rotation Service), DORIS (Détermination d'Orbite et Radiopositionnement Intégrés par Satellite) et ETRS89 (European Terrestrial Reference System 1989) . NTF et ED50 sont des systèmes locaux et les autres des systèmes spatiaux (zone mondiale).

GML fournit toute une panoplie d'éléments pour définir les caractéristiques d'un système géodésique. D'ailleurs, il n'est pas nécessaire de créer un schéma d'application dans ce cas ; à moins que l'on ait besoin d'extensions, les éléments concrets (par opposition aux éléments abstraits) GML suffisent. Un système géodésique de coordonnées est défini par : la dimension de l'ellipsoïde, sa position et son orientation par rapport au vrai centre de la terre.

L'information relative au codage des caractéristiques d'un référentiel géodésique est contenue dans 6 schémas (coordinateReferenceSystems.xsd, datums.xsd, coordinateSystems.xsd, coordinateOperations.xsd, dataQuality.xsd et referenceSystems.xsd). Elle fait l'objet d'un document XML particulier qui contient entre autres l'information sur le type de coordonnées, leur ordre, leur unité, etc. Il peut aussi être exprimer des méthodes de conversion vers un autre système géodésique. (TODO : mêler ces 2 paras)

GML permet de décrire plusieurs types de systèmes géodésiques :

  • CompoundCRS : système décrivant la position des points par l'intermédiaire d'au moins deux systèmes indépendants. Par exemple, un système géographique et un système vertical.

  • GeocentricCRS : système dont l'origine se situe près du centre de masse de la Terre et qui s'affranchit du problème de la courbure de la Terre par sa vision en 3D.

  • GeographicCRS : système basé sur une ellipsoïde approximative du géoïde (surface en tout point perpendiculaire à la verticale)  : représention précise des éléments géographiques sur une grande partie du globe.

  • ProjectedCRS : système utilisé pour projeter la terre sur une surface plane mais qui induit une distorsion. Néanmoins, par calcul, il est possible de définir le type et les paramètres d'une projection dans le but de minimiser certaines déformations : dans le but de conserver soit les angles (projections conformes), soit les surfaces (projections équivalentes) ou ni les uns ni les autres.

  • ImageCRS : système de référence local particulier utilisé pour la localisation sur les images, traité à part car il existe une communauté d'utilisateurs avec ses propres termes.

  • EngineeringCRS : système de référence local qui peut être divisé en deux types : référentiel terrestre appliqué à des engins sur ou près de la surface de la terre, système géodésique valable sur des plates-formes en mouvement, telles que voitures, navires, avions ou navettes spatiales.

  • VerticalCRS : système utilisé pour spécifier les hauteurs et profondeurs. Il est basé sur la direction de la verticale (orientation de la gravité).

  • TemporalCRS : système utiliser pour traiter le temps.

  • DerivedCRS : système défini par sa conversion à partir d'un autre système géodésique mais qui n'est pas un système de projection.

Exemple 5. Définition d'un système de coordonnées spatiales

<GeographicCRS xmlns="http://www.opengis.net/gml" xmlns:gml="http://www.opengis.net/gml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.opengis.net/gml ../crsSchemas/base/coordinateReferenceSystems.xsd" gml:id="EPSG4277">
<!-- Primary editor: Arliss Whiteside. Last updated 2003/09/18. -->
 <srsName>OSGB 1936</srsName>
 <srsID>
  <name codeSpace="EPSG">4277</name>
  <version>6.0</version>
 </srsID>
 <validArea>
  <description>United Kingdom (UK) - Great Britain - England
Scotland Wales - onshore; Isle of Man. </description>
 </validArea>

 <usesEllipsoidalCS>
  <EllipsoidalCS gml:id="EPSG6402">
   <csName>ellipsoidal</csName>
   <csID>
    <name codeSpace="EPSG">6402</name>
    <version>6.0</version>
   </csID>
   <usesAxis>
    <CoordinateSystemAxis gml:id="EPSG9901" gml:uom="urn:ogc:uom:degree">
     <axisName>Geodetic latitude</axisName>
     <axisID>
      <name codeSpace="EPSG">9901</name>
      <version>6.0</version>
     </axisID>
     <axisAbbrev>Lat</axisAbbrev>
     <axisDirection>north</axisDirection>
    </CoordinateSystemAxis>
   </usesAxis>
   <usesAxis>
    <CoordinateSystemAxis gml:id="EPSG9902" gml:uom="urn:ogc:uom:degree">
     <axisName>Geodetic longitude</axisName>
     <axisID>
      <name codeSpace="EPSG">9902</name>
      <version>6.0</version>
     </axisID>
     <axisAbbrev>Lon</axisAbbrev>
     <axisDirection>east</axisDirection>
    </CoordinateSystemAxis>
   </usesAxis>
  </EllipsoidalCS>
 </usesEllipsoidalCS>
 <usesGeodeticDatum>
  <GeodeticDatum gml:id="EPSG6277">
   <datumName>OSGB 1936</datumName>
   <datumID>
    <name codeSpace="EPSG">6277</name>
    <version>6.0</version>
   </datumID>
   <usesPrimeMeridian>
    <PrimeMeridian gml:id="EPSG8901">
     <meridianName>Greenwich</meridianName>
     <meridianID>
      <name codeSpace="EPSG">8901</name>
      <version>6.0</version>
     </meridianID>
     <greenwichLongitude>
      <angle uom="urn:ogc:uom:degree">0</angle>
     </greenwichLongitude>
    </PrimeMeridian>
   </usesPrimeMeridian>
   <usesEllipsoid>
    <Ellipsoid gml:id="EPSG7001">
     <ellipsoidName>Airy 1830</ellipsoidName>
     <ellipsoidID>
      <name codeSpace="EPSG">7001</name>
      <version>6.0</version>
     </ellipsoidID>
     <semiMajorAxis uom="urn:ogc:uom:metre">6377563.396</semiMajorAxis>
     <secondDefiningParameter>
      <inverseFlattening uom="urn:ogc:uom:unity">299.3249646</inverseFlattening>
     </secondDefiningParameter>
    </Ellipsoid>
   </usesEllipsoid>
  </GeodeticDatum>
 </usesGeodeticDatum>
</GeographicCRS>
EPSG renvoie à European Petroleum Survey Group, organisme qui fournit une base de données de systèmes géodésiques. A chacun correspond un identifiant.

projection Lambert. La projection Lambert est une projection cônique tangente conforme avec facteur d'échelle associée au système géodésique NTF. Dans le but de minimiser les déformations, la France est divisée en 4 zones. Une projection appelée "Lambert étendu" couvre la France entière. Dans les services de la DAPA, il est recommandé d'utiliser au tant que possible les projections Lambert locales. A noter, les valeurs données par les GPS correspondent à des projections Lambert sécantes.

<gml:projectedCRS gml:id="epsg27572">
 <gml:crsID>
  <name>NTF (Paris) / Lambert zone II<name>
  <remark>Introduced 1972. Supersedes NTF (Paris) / Lambert Centre France (code 27562).</remark>
  <gml:validArea>
   <gml:description>France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North. Also used over all mainland France.</gml:description>
  </gml:validArea>
  <gml:scope>Large and medium scale topographic mapping and engineering survey.</gml:scope>
 </gml:crsID>

 <gml:sourceCRS>
  <gml:crsID>NTF (Paris) / Lambert zone II</gml:crsID>
  
  <gml:GeographicCRS gml:id="epsg4807">
   <gml:metaDataProperty/>          <!-- * -->
   <gml:crsID>
    <gml:code>epsg4807</gml:code>
    <gml:name>NTF (Paris) / Lambert zone II</gml:name>
    <gml:alias>                     <!-- * -->
       <gml:aliasName>NTF (Paris) / France II</gml:aliasName>
       <gml:aliasNameSpace>EPSG alias</gml:aliasNameSpace>
    </gml:alias>
    <gml:remarks>Introduced 1972. Supersedes NTF (Paris) / Lambert Centre France (code 27562).</gml:remarks>
    <gml:validArea>                 <!-- ? -->
     <gml:description>France 50.5 to 53.5 grads (45 deg 27 min to 48 deg 09 min) North. Also used over all mainland France.</gml:description>          <!-- ? -->
     <choice boundingBox | boundingPolygon | verticalExtent | temporalExtent>    <!-- * -->
    </gml:validArea>
    <gml:scope>Large and medium scale topographic mapping and engineering survey.</gml:scope>         <!-- ? -->
   </gml:crsID>
   
   <gml:usesCS>
    <gml:EllipsoidalCS gml:remoteSchema="" xlink:simpleLink gml:id="epsg6403">                  <!-- ? -->
     <gml:metaDataProperty/>        <!-- * -->
     <gml:csID>
      <gml:code>epsg6403<gml:code>
      <gml:name>Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east.  UoM: grads.</gml:name>
      <gml:remarks>Used in geographic 2D coordinate reference systems.</gml:remarks>
     </gml:csID>

     <gml:usesAxis>
      <gml:CoordinateSystemAxis uom="grad" gml:id="epsg9901">           <!-- ? -->
       <gml:axisID>                 <!-- ? -->
        <gml:code>epsg9901<gml:code>
        <gml:name>Geodetic latitude</gml:name>
        <gml:remarks>Used in geographic 2D and geographic 3D coordinate systems.</gml:remarks>
       </gml:axisID>
       <gml:axisAbbrev>lat</gml:axisAbbrev>
       <gml:axisDirection>north</gml:axisDirection>
      </gml:CoordinateSystemAxis>

      <gml:CoordinateSystemAxis uom="grad" gml:id="epsg9902">           <!-- ? -->
       <gml:axisID>                 <!-- ? -->
        <gml:code>epsg9902<gml:code>
        <gml:name>Geodetic longitude</gml:name>
        <gml:remarks>Used in geographic 2D and geographic 3D coordinate systems.<gml:remarks>
       </gml:axisID>
       <gml:axisAbbrev>long</gml:axisAbbrev>
       <gml:axisDirection>east</gml:axisDirection>
      </gml:CoordinateSystemAxis>
     </gml:usesAxis>
    </gml:EllipsoidalCS>
   </gml:usesCS>

   <gml:usesDatum>
    <gml:GeodeticDatum gml:id="epsg6807">   <!-- ? -->
     <gml:datumID>
      <gml:code>epsg6807</gml:code>
      <gml:name>Nouvelle Triangulation Francaise (Paris)</gml:name>      
      <gml:validArea>               <!-- ? -->
       <gml:description>France - onshore</gml:description>
      <gml:validArea>
      <gml:scope>Topographic mapping.</gml:scope>       <!-- ? -->
     </gml:datumID> 
     <gml:anchorPoint>Pantheon</gml:anchorPoint>        <!-- ? -->
     <gml:realizationEpoch>{date}<gml:realizationEpoch>      <!-- ? -->

     <gml:usesPrimeMeridian>
      <gml:PrimeMeridian gml:id="epsg8903">           <!-- ? -->
       <gml:MeridianID>
        <gml:name>Paris<gml:name>
        <gml:code>epsg8903</gml:code>
        <gml:remarks>Value adopted by IGN (Paris) in 1936. Equivalent to 2 deg 20min 14.025sec. Preferred by EPSG to earlier value of 2deg 20min 13.95sec (2.596898 grads) used by RGS London.</gml:remarks>>
       </gml:MeridianID>
       <gml:greenwichLongitude>
        <gml:angle uom="grad">2,5969213</gml:angle>
ou 
        <gml:dmsAngle>
         <gml:degrees direction=""></gml:degrees>
         (gml:decimalMinutes | (gml:minutes, gml:seconds ?))?
        <gml:dmsAngle>
       </gml:greenwichLongitude>
      </gml:PrimeMeridian>
     </gml:usesPrimeMeridian>

     <gml:usesEllipsoid>
      <gml:Ellipsoid gml:id="epsg7011">      <!-- ? -->
       <gml:ellipsoidID>
        <gml:code>epsg7011</gml:code>
        <gml:name>Clarke 1880 (IGN)</gml:name>
        <gml:remarks>Adopts Clarke's values for a and 1/f.  Adopts his 1865 ratio of 39.370432 inches per metre to convert semi-major axis to metres. Also known as Clarke Modified 1880.</gml:remarks>
       </gml:ellipsoidID>
       <gml:semiMajorAxis uom="m">6378249,2</gml:semiMajorAxis>
       <gml:SecondDefiningParameter> <!-- to define ellipsoid's shape -->
        <choice inverseFlattening | semiMinorAxis | isSphere>
        <gml:semiMinorAxis>6356515</gml:semiMinorAxis>       
       </gml:SecondDefiningParameter>
      </gml:Ellipsoid>
     </gml:usesEllipsoid>
    </gml:GeodeticDatum>
   </gml:usesDatum>
  </gml:GeographicCRS>
 </gml:sourceCRS>

 <gml:definedByConversion>
  <gml:Conversion gml:id="epsg18082">
   <gml:coordinateOperationID>
    <gml:code>epsg18082</gml:code>
    <gml:name>Lambert zone II</gml:name>    
...</gml:remarks>       <!-- ? -->
    <gml:validArea></gml:validArea>   <!-- ? -->
    <gml:scope></gml:scope>           <!-- ? -->
   </gml:coordinateOperationID>
   <gml:sourceDimensions></gml:sourceDimensions>
   <gml:targetDimensions></gml:targetDimensions>
name="_PositionalAccuracy"            <!-- ? -->
 
   <gml:usesMethod>
    <gml:OperationMethod gml:id="">   <!-- ? -->
     <gml:methodID></gml:methodID>
     <gml:formula></gml:formula>
     <gml:usesParameter>              <!-- * -->
      <gml:OperationParameter gml:id="">          <!-- ? -->
       <gml:parameterID>
        <gml:code>...</gml:remarks>
       </gml:parameterID> 
      </gml:OperationParameter>
     </gml:usesParameter> 
    </gml:OperationMethod>
   <gml:usesMethod>

   <gml:usesValue><gml:usesValue>     <!-- * -->
  </gml:Conversion>
 </gml:definedByConversion>

 <gml:usesCS>
  <gml:CartesianCS gml:id="epsg4499">             <!-- ? -->
   <gml:csID>
    <gml:name>Cartesian 2D CS for AAPS.  Axes: E,N. Orientations: E along 160 deg East, N along 70 deg East meridians.  UoM: m.</gml:name>
    <gml:remark>Used for South Pole tangential and secant projections.</gml:remark>
   </gml:csID>
   <gml:usesAxis>                     <!-- + -->

    <gml:CoordinateSystemAxis uom="m" gml:id="X">
     <gml:axisID><!-- ? -->
      <gml:code>abscisse</gml:code>  	<!-- ? -->
      <gml:codeSpace></gml:codeSpace>	<!-- ? -->
      <gml:version></gml:version>     <!-- ? -->
      <gml:name>easting</gml:name>    <!-- ? -->
      <gml:alias>                     <!-- * -->
       <gml:aliasName></gml:aliasName>
       <gml:aliasNameSpace></gml:aliasNameSpace>
       <gml:aliasRemarks></gml:aliasRemarks>      <!-- ? -->
      </gml:alias>
      <gml:remarks></gml:remarks>     <!-- ? -->
     </gml:axisID>
     <gml:axisAbbrev>E</gml:axisAbbrev>
     <gml:axisDirection>east</gml:axisDirection>
    </gml:CoordinateSystemAxis>

    <gml:CoordinateSystemAxis uom="m" gml:id="Y">
     <gml:axisID>                     <!-- ? -->
      <gml:code>ordonnée</gml:code>   <!-- ? -->
      <gml:name>northing</gml:name>   <!-- ? -->
     </gml:axisID>
     <gml:axisAbbrev>N</gml:axisAbbrev>
     <gml:axisDirection>north</gml:axisDirection>
    </gml:CoordinateSystemAxis>
   </gml:usesAxis>
  </gml:CartesianCS>
 </gml:usesCS>
</gml:projectedCRS>

Comment décrire un système géodésique pour ensuite être capable d'exploiter les coordonnées exprimées dans celui-ci ? Comment se fait le lien entre les coordonnées et le système référentiel ? Comment décrire par exemple que l'on utilise le Lambert 2 ?

Bibliographie

[OGC 03-010r9] Open GIS Consortium, Inc.. Recommended XML encoding of coordinate reference system definitions. Whiteside, Arliss. 2003-10-16. 239. 2.1.0. http://www.opengis.org/docs/03-010r9.zip.
[OGC 01-014r3] Arliss Whiteside, John Bobbitt, et Roel Nicolai. Recommended Definition Data for Coordinate Reference Systems and Coordinate Transformations. Open GIS Consortium, Inc.. November 10, 2001. 145. 1.1.1.
[IGN-proj] Projections en usage en France. IGN. http://www.ign.fr/affiche_rubrique.asp?rbr_id=1068&amp;lng_id=FR#44606.

3.2) Eléments géométriques

3.2.1. Le point
3.2.2. Surface
3.2.3. Le polygone
3.2.4. Enveloppe

La géométrie est particulièrement bien développée dans GML. Voici quelques exemples permettant de voir comment peuvent être traités un point, une boîte, un polygone ou une série de lignes.

3.2.1) Le point

Un point est un groupe de n coordonnées.

<gml:Point srsName="" gml:id="">
 <gml:decription/>  <!-- ? -->
 <gml:name/>        <!-- * -->
 <gml:pos dimension="nombre de coordonnées">171. -32.</gml:pos>
 <!-- An element of this type contains a space-separated list of double values -->
</gml:Point>

ou

<gml:Point srsName="" gml:id="">
 <gml:decription/>
 <gml:name/>
 <gml:coordinates decimal="." cs="," ts="&#x20;">1.413,4.524 1.429,5.516 1.432,7.235</gml:coordinates>
</gml:Point>

ou
 
<!-- deprecated in GML3.0 : élément pour assurer compatibilité avec GML2.0 -->
<gml:Point srsName="" gml:id=""> 
 <gml:decription/> <!-- ? -->
 <gml:name/>       <!-- * -->
 <gml:coord>
		<gml:X></gml:X>
		<gml:Y></gml:Y>
		<gml:Z></gml:Z>
 </gml:coord>
</gml:Point>

3.2.2) Surface

Une surface est une zone continue plane. Elle peut être constituée de plusieurs parcelles assemblées.

<gml:Surface gml:id="" srsName="">
 <gml:patches>
  <gml:PolygonPatch interpolation="planar">
   <gml:exterior/> <!-- ? -->
   <gml:interior/> <!-- * -->
  </gml:PolygonPatch>

  <gml:Triangle interpolation="planar">
   <gml:exterior/>
  </gml:Triangle>

  <gml:Rectangle interpolation="planar">
   <gml:exterior/>
  </gml:Rectangle>
 </gml:patches>
</gml:Surface>

3.2.3) Le polygone

Un polygone est une surface particulière définie par des limites intérieures et extérieures.

<gml:Polygon gml:id="" srsName="">
 <gml:exterior><!-- ? -->
<!-- Séquence d'éléments _Ring -->
	</gml:exterior>
 <gml:interior><!-- * -->
<!-- Séquence d'éléments _Ring -->
 </gml:interior>
</gml:Polygon>

<!-- Eléments _Ring : LinearRing ou Ring -->
<gml:LinearRing gml:id="">
<!-- A LinearRing is defined by four or more coordinate tuples, with linear interpolation
between them; the first and last coordinates must be coincident. -->
 <gml:description/> <!-- ? -->
 <gml:name/>        <!-- * -->
 <choice>
  <choice minOccurs="4" maxOccurs="unbounded">
   <gml:pos/>

   <gml:pointRep>
				<gml:Point></gml:Point>
   </gml:pointRep>
 ou référence à un point
   <gml:pointRep xlink:href="points.xml#p1111"/>
  </choice>

  <gml:coordinates"/>

  <gml:coord" minOccurs="4" maxOccurs="unbounded"/> <!-- Deprecated in GML3.0 -->
 </choice>
</gml:LinearRing>

<gml:Ring>
<!-- A Ring is used to represent a single connected component of a surface boundary.
 A priori, ce cas ne correspond pas à ce qu'on recherche pour SDAPA -->
 <gml:CurveMember> <!-- + -->
  <gml:Curve gml:id="c103" srsName="">
   <gml:segments>

    <gml:CubicSpline>
     <gml:coordinates>...</gml:coordinates>
     <gml:vectorAtStart>1 0</gml:vectorAtStart>
     <gml:vectorAtEnd>1 0</gml:vectorAtEnd>
    </gml:CubicSpline>
ou
    <gml:LineStringSegment>
     <gml:coordinates>...</gml:coordinates>
    </gml:LineStringSegment>
   </gml:segments>
  </gml:Curve>
 </gml:CurveMember>
</gml:Ring>

<!-- Exemple de polygone -->
<gml:Polygon>
 <gml:exterior>
  <gml:LinearRing>
   <!-- A LinearRing is defined by four or more coordinate tuples, with linear interpolation
between them; the first and last coordinates must be coincident. -->
   <gml:coordinates>30,40 70,80 50,120 30,40</gml:coordinates>
  </gml:LinearRing>
 </gml:exterior>
</gml:Polygon> 

Plusieurs solutions pour spécifier des points de contrôle d'une courbe suivant qu'ils appartiennent tous à un même référentiel ou qu'ils puissent être réutilisés. pos pour les points qui appartiennent seulement à la courbe en question, pointRep pour les points qui peuvent être référencés à partir d'une autre figure géométrique (point réutilisable), coordinates permet d'une manière compacte de donner tous les points de contrôle d'une courbe à condition qu'ils appartiennent tous au même référentiel.

3.2.4) Enveloppe

Une enveloppe définit une zone par une paire de points qui représentent les coins opposés d'une boîte ou rectangle. L'absence de notion de dimension, permet de définir sans ambiguité cette zone.

<gml:envelope id="" srsName="">
 <gml:description/> <!-- ? -->
 <gml:name/>        <!-- * -->
 
 <choice>
  <gml:coord" minOccurs="2" maxOccurs="2"/>
  <gml:pos" minOccurs="2" maxOccurs="2"/>
  <gml:coordinates"/>
 </choice>
</gml:envelope>

4) SDAPA+GML

GML étant plus adapté à l'échange et la description physique d'éléments géographiques (décrire géométriquement le monde réel pour être capable d'en faire une représentation adaptée aux usages), il ne peut pas répondre seul aux besoins de la DAPA. Certaines informations ne sont pas assez structurées. Si l'ont veut intégrer le GML dans le schéma, cela ne peut être qu'au niveau des coordonnées géographiques, et alors le schéma SDAPA deviendrait unschéma d'applications GML. Il sera toujours possible par la suite d'ajouter des éléments GML pour décrire les entités géographiques. D'ailleurs dans les exemples rencontrés, ce n'est jamais uniquement le schéma GML qui est utilisé mais un schéma particulier (notamment pour définir les entités géographiques distinctes, un schéma par type d'entité afin qu'une même entité soit toujours traitée de la même manière) que vient compléter GML.

Ce qui correspond tout à fait au bon usage du GML, ne prendre que les éléments dont on a besoin parmi ceux proposés dans le schéma de base et compléter par des éléments d'un schéma "personnalisé".

Dans les exemples suivants, on suppose que le schéma par défaut est SDAPA (donc les éléments ne sont pas préfixés)

Exemple 6. Exemple d'un point en SDAPA+GML

<place id=""> <!-- Revoir structure de l'élément place -->
	<placename>
		<building>Maison Bleue</building>
	</placename>
	<address>
		<streetnumber>25</streetnumber><streettype>rue</streettype><streetname>d'Alsace</streetname>
		<locality code="49007" scheme="poste" role="bureau distributeur">Angers</locality>
		<country code="fr" scheme="iso">France</country>
	</address>
 <gml:Point gml:srsName="epsg27572" gml:id="pt1">
  <gml:pos gml:dimension="2">382050 2278809</gml:pos>
 </gml:Point>
</place>

Exemple 7. Exemple d'une surface polygonale en SDAPA+GML

<place id="">
 <placename></placename>
 <gml:Polygon gml:srsName="epsg27572" gml:id="">
  <gml:exterior>
   <gml:LinearRing>
    <gml:coordinates>0401500,3334500 0401500,3335200 0402320,3335200 0402320,3334500 0401500,3334500</gml:coordinates>
   </gml:LinearRing>
  </gml:exterior>
 </gml:Polygon>
</place>

Exemple 8. Exemple d'un réseau en SDAPA+GML

<place id="">
 <placename></placename>
 <gml:Curve gml:id="" gml:srsName="">
  <gml:segments>
   <gml:LineStringSegment gml:interpolation="linear">     <!-- * -->
<extension base="gml:AbstractCurveSegmentType">
    <gml:pos gml:srsName="epsg27572" gml:dimension="2">0401500 3334500</gml:pos>
    <gml:pos gml:srsName="epsg27572" gml:dimension="2">0401700 3334850</gml:pos>
    <gml:pointRep>
     <gml:Point gml:id="S1" gml:srsName="epsg27572">
      <gml:pos gml:dimension="2">0401950 3334950</gml:pos>
     </gml:Point>
    </gml:pointRep>
    <gml:pos gml:srsName="epsg27572" gml:dimension="2">0402200 3335200</gml:pos>
   </gml:LineStringSegment>
   <gml:LineStringSegment>
    <gml:pointRep xlink:href="#S1"/>
    <gml:pos gml:srsName="epsg27572" gml:dimension="2">0402320 3334850</gml:pos>
   </gml:LineStringSegment>
  </gml:segments>
 </gml:Curve>
</place>

Bibliographie

[CoverPages] Cover Pages. Technology Reports. Geography Markup Language (GML). Juillet 2003. <http://xml.coverpages.org/geographyML.html> .
[GMLintro] Ron Lake. Introduction to GML. Geography Markup Language . <http://www.w3.org/Mobile/posdep/GMLIntroduction.html> .
[Hansen-2001] Henning Sten Hansen. Geography Markup Language. the foundation of Geo-Spatial Interoperability ?. octobre 2001. <http://www.ginorden.org/konf/getpaper.php?ID=63> .
[OQLF] Office québécois de la langue française. Grand dictionnaire terminologique. <http://www.oqlf.gouv.qc.ca/ressources/gdt_bdl2.html> .
[EPSG] European Petroleum Survey Group. <http://www.epsg.org/> . Sur ce site, on peut télécharger une base de données Access qui contient les caractéristiques de plusieurs centaines de systèmes géodésiques.