IGN

Géoservices IGN

Service de calcul altimétrique

Dernière mise à jour : 21 Avril 2017

Table des matières

Généralités

La plateforme Géoportail propose deux services d’altimétrie : détermination de l’altitude en un ou plusieurs points et détermination d’un profil altimétrique le long d’une courbe.

Détermination de l’altitude d’un ou plusieurs points

Le service d’altimétrie permet de fournir l’altitude à partir des coordonnées géographiques d’une requête.

Détermination d’un profil altimétrique le long d’une courbe

Un client envoie un ensemble de coordonnées qui définissent un chemin pour lequel le profil altimétrique doit être déterminé.

Le profil est calculé à partir d’un échantillonnage du chemin fourni en entrée. La précision de l’échantillonnage sera fournie en paramètre. La valeur par défaut est 0. La précision représente un nombre de points.

Le service retourne ensuite chacun des points ainsi calculés avec leur altitude.

Données de référence

Les données de référence utilisées au sein des services d’altimétrie du Géoportail proviennent de la base de données IGN RGE ALTI® complété par la BD ALTI® lorsque la zone requêtée n’est pas couverte par le premier référentiel.

Connexion aux services d’altimétrie du Géoportail

Les services de calcul altimétrique du Géoportail sont accessibles selon deux protocoles : une API REST ou via le standard OGC “Web Processing Service” (WPS).

Ils sont accessibles aux adresses suivantes :

Service URL d’accès
Altitude en un point (API REST) http(s)://wxs.ign.fr/CLEF/alti/rest/elevation.{format}
Profil Altimétrique (API REST) http(s)://wxs.ign.fr/CLEF/alti/rest/elevationLine.{format}
Altitude et profil altimétrique (WPS) http(s)://wxs.ign.fr/CLEF/alti/wps

Le paramètre CLEF doit être remplacé par votre clef d’accès à la plateforme Géoportail

Les services d’altimétrie reposent sur une unique ressource à laquelle la clef d’accès doit être associée. Le nom de cette ressources est disponible ici.

Déterminer l’altitude d’un ou plusieurs points

Via l’API REST :

http(s)://wxs.ign.fr/CLEF/alti/rest/elevation.{format}

Les formats disponibles pour le paramètre {format} sont json et xml

Exemple de requête GET n°1 (zonly = true) :

L’attribut “lon” correspond à la liste des longitudes des points dont on veut déterminer l’altitude, l’attribut “lat” correspond à la liste des latitudes des points dont on veut déterminer l’altitude et l’attribut “zonly” est un booléen qui indique s’il on souhaite uniquement un tableau d’altitudes (true) ou bien une réponse étendue (false). Les valeurs retournées sont les altitudes déterminées pour chaque point donné dans la requête.

http(s)://wxs.ign.fr/CLEF/alti/rest/elevation.json?lon=0.2367|2.1570&lat=48.0551|46.6077&zonly=true

Réponse simple :

L’attribut “elevations” est un tableau des altitudes déterminées pour les points demandés. Les valeurs sont données dans l’ordre dans lequel les points ont été fournis.

{"elevations": [123.23,19.45]}

Exemple de requête GET n°2 (indent = true) :

L’attribut “indent” est un booléen qui indique si la réponse sera indentée.

http(s)://wxs.ign.fr/CLEF/alti/rest/elevation.json?lon=0.2367|2.1570&lat=48.0551|46.6077&indent=true

Réponse étendue et indentée :

L’attribut “elevations” est un tableau des altitudes déterminées pour les points demandés :
* lat : latitude du point
* lon : longitude du point
* z : altitude au point considéré (en mètres)
* acc : précision de la valeur au point considéré

    {
        "elevations" : [
            {
                "lon": 0.2367,
                "lat": 48.0551,
                "z": 93.58,
                "acc": 2.5
            },
            {
                "lon": 2.157,
                "lat": 46.6077,
                "z": 207.53,
                "acc": 2.5
            }
        ]
    }

Exemple de requête GET n°3 (delimiter = “,”) :

L’attribut “delimiter” permet d’indiquer le caractère utilisé pour séparer les longitudes et les latitudes.

http(s)://wxs.ign.fr/CLEF/alti/rest/elevation.json?lon=0.2367,2.1570&lat=48.0551,46.6077&delimiter=,

Réponse étendue, non indentée avec le séparateur “,” :

L’attribut “elevations” est un tableau des altitudes déterminées pour les points demandés :
* lat : latitude du point
* lon : longitude du point
* z : altitude au point considéré (en mètres)
* acc : précision de la valeur au point considéré

{"elevations":[{"lon":0.2367,"lat":48.0551,"z":93.58,"acc":2.5},{"lon":2.157,"lat":46.6077,"z": 207.53,"acc":2.5}]}

Table des paramètres

Paramètre Description Type / format Requis Valeurs possibles Valeur par défaut Contraintes
zonly false, réponse étendue true, simple tableau de valeurs booléen non false true false  
indent false, réponse non indentée true, réponse indentée booléen non false true false  
delimiter caractère utilisé pour séparer les longitudes et les latitudes texte non ’|’, ‘;’ ou ‘,’ ’|’  
lon liste des longitudes liste de décimaux oui de -180 à +180   autant de lon que de lat. Le nombre est limité à 5000
lat liste des latitudes liste de décimaux oui de -90 à +90   autant de lat que de lon. Le nombre est limité à 5000

Encapsulation en JSONP :

Pour bénéficier de l’encapsulation en JSONP, il faut utiliser le service avec le format XML. Ainsi, la requête suivante :

http(s)://wxs.ign.fr/CLEF/alti/rest/elevation.xml?lon=2.478036&lat=48.87324&output=json&callback=traiteResultat

Donne le résultat suivant :

traiteResultat({"http":{"status":200,"error":null},"xml":"<elevations><elevation><lon>2.478</lon><lat>48.8732</lat><z>79.88</z><acc>2.5</acc></elevation></elevations>"})

Via la norme WPS :

http(s)://wxs.ign.fr/CLEF/alti/wps?service=WPS&version=1.0.0

Exemple de requête POST (zonly = true) :

Entête de la requête

Content-type:text/xml

Corps de la requête

<?xml version="1.0" encoding="UTF-8"?>
<wps:Execute version="1.0.0" service="WPS"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.opengis.net/wps/1.0.0" xmlns:wfs="http://www.opengis.net/wfs"
xmlns:wps="http://www.opengis.net/wps/1.0.0"
xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/gml"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wcs="http://www.opengis.net/wcs/1.1.1" xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.opengis.net/wps/1.0.0
http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd">
  <ows:Identifier>gs:WPSElevation</ows:Identifier>
  <wps:DataInputs>
    <wps:Input>
      <ows:Identifier>lon</ows:Identifier>
      <wps:Data>
        <wps:LiteralData>0.2367|2.1570</wps:LiteralData>
      </wps:Data>
    </wps:Input>
    <wps:Input>
        <ows:Identifier>lat</ows:Identifier>
      <wps:Data>
        <wps:LiteralData>48.0551|46.6077</wps:LiteralData>
      </wps:Data>
    </wps:Input>
    <wps:Input>
      <ows:Identifier>format</ows:Identifier>
      <wps:Data>
        <wps:LiteralData>xml</wps:LiteralData>
      </wps:Data>
    </wps:Input>
    <wps:Input>
      <ows:Identifier>indent</ows:Identifier>
      <wps:Data>
        <wps:LiteralData>true</wps:LiteralData>
      </wps:Data>
    </wps:Input>
    <wps:Input>
  </wps:DataInputs>
  <wps:ResponseForm>
    <wps:RawDataOutput>
      <ows:Identifier>result</ows:Identifier>
    </wps:RawDataOutput>
  </wps:ResponseForm>
</wps:Execute>

Réponse étendue, indentée et en format XML :

La balise elevations est composée des altitudes déterminées pour les points demandés.
* La balise lat correspond à la latitude du point
* La balise lon correspond à la longitude du point
* La balise z correspond à l’altitude au point considéré (en mètres)
* La balise acc correspond à la précision de la valeur au point considéré

Les valeurs sont données dans l’ordre dans lequel les points ont été fournis.

<elevations>
    <elevation>
        <lon>0.2367</lon>
        <lat>48.0551</lat>
        <z>93.58</z>
        <acc>2.5.0</acc>
    </elevation>
    <elevation>
        <lon>2.157</lon>
        <lat>46.6077</lat>
        <z>207.53</z>
        <acc>2.5.0</acc>
    </elevation>
</elevations>

Table des paramètres

Paramètre Description Type / format Requis Valeurs possibles Valeur par défaut Contraintes
zonly false, réponse étendue true, simple tableau de valeurs booléen non false true false  
indent false, réponse non indentée true, réponse indentée booléen non false true false  
delimiter caractère utilisé pour séparer les longitudes et les latitudes texte non ’|’, ‘;’ ou ‘,’ ’|’  
lon liste des longitudes liste de décimaux oui de -180 à +180   autant de lon que de lat. Le nombre est limité à 5000
lat liste des latitudes liste de décimaux oui de -90 à +90   autant de lat que de lon. Le nombre est limité à 5000
format format de sortie du service texte non json xml json  

Accès en GET

De même que pour le service de géocodage, le service altimétrique en WPS peut être attaqué en GET et bénéficier alors d’une encapsulation en JSONP. La requête :

http(s)://wxs.ign.fr/CLEF/alti/wps?service=WPS&version=1.0.0&request=Execute&identifier=gs%3AWPSElevation&datainputs=lon=2.478036;lat=48.87324;format=xml&rawdataoutput=result&output=json&callback=traiteResultat

Donne le résultat suivant :

traiteResultat({"http":{"status":200,"error":null},"xml":"<elevations><elevation><lon>2.478</lon><lat>48.8732</lat><z>79.88</z><acc>2.5</acc></elevation></elevations>"})

Déterminer le profil altimétrique d’une courbe

Via l’API REST :

http(s)://wxs.ign.fr/CLEF/alti/rest/elevationLine.{format}

Les formats disponibles sont json et xml

Exemple de requête GET n°1 (indent = true) :

L’attribut “lon” correspond à la liste des longitudes des points dont on veut déterminer l’élévation, l’attribut “lat” correspond à la liste des latitudes des points dont on veut déterminer l’élévation et l’attribut “indent” est un booléen qui indique si la réponse sera indentée. L’attribut “sampling” correspond au nombre de points constituant l’échantillonage. Les valeurs retournées sont les élévations déterminées pour chaque point donné dans la requête.

http(s)://wxs.ign.fr/CLEF/alti/rest/elevationLine.json?sampling=10&lon=0.2367|2.1570|4.3907&lat=48.0551|46.6077|43.91&indent=true

Réponse indentée :

{
    "elevations": [
        {
            "lon": 0.2367,
            "lat": 48.0551,
            "z": 93.58,
            "acc": 2.5
        },
        {
            "lon": 0.726682,
            "lat": 47.696327,
            "z": 138.01,
            "acc": 2.5
        },
        {
            "lon": 1.209968,
            "lat": 47.335467,
            "z": 62.79,
            "acc": 2.5
        },
        {
            "lon": 1.686696,
            "lat": 46.972574,
            "z": 176.45,
            "acc": 2.5
        },
        {
            "lon": 2.157,
            "lat": 46.6077,
            "z": 207.53,
            "acc": 2.5
        },
        {
            "lon": 2.735486,
            "lat": 45.939827,
            "z": 634.69,
            "acc": 2.5
        },
        {
            "lon": 3.300216,
            "lat": 45.269017,
            "z": 609.78,
            "acc": 2.5
        },
        {
            "lon": 3.85177,
            "lat": 44.5954,
            "z": 1336.03,
            "acc": 2.5
        },
        {
            "lon": 4.122779,
            "lat": 44.257578,
            "z": 266.01,
            "acc": 2.5
        },
        {
            "lon": 4.3907,
            "lat": 43.9191,
            "z": 171.29,
            "acc": 2.5
        }
    ]
}

Table des paramètres

Paramètre Description Type / format Requis Valeurs possibles Valeur par défaut Contraintes
sampling nombre de points constitutant l’échantillonage entier non de 2 à 5000 le nombre de couples (lon,lat) ne doit pas dépasser 5000
indent false, réponse non indentée true, réponse indentée booléen non false true false  
delimiter caractère utilisé pour séparer les longitudes et les latitudes texte non ’|’, ‘;’ ou ‘,’ ’|’  
lon liste des longitudes liste de décimaux oui de -180 à +180   autant de lon que de lat. Le nombre est limité à 5000
lat liste des latitudes liste de décimaux oui de -90 à +90   autant de lat que de lon. Le nombre est limité à 5000

Via la norme WPS :

http(s)://wxs.ign.fr/CLEF/alti/wps?service=WPS&version=1.0.0

Entête de la requête

Content-type:text/xml

Corps de la requête

<?xml version="1.0" encoding="UTF-8"?>
<wps:Execute version="1.0.0" service="WPS"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.opengis.net/wps/1.0.0" xmlns:wfs="http://www.opengis.net/wfs"
xmlns:wps="http://www.opengis.net/wps/1.0.0"
xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/gml"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wcs="http://www.opengis.net/wcs/1.1.1" xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.opengis.net/wps/1.0.0
http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd">
  <ows:Identifier>gs:WPSLineElevation</ows:Identifier>
  <wps:DataInputs>
    <wps:Input>
      <ows:Identifier>lon</ows:Identifier>
      <wps:Data>
        <wps:LiteralData>0.2367|2.1570|4.3907</wps:LiteralData>
      </wps:Data>
    </wps:Input>
    <wps:Input>
      <ows:Identifier>lat</ows:Identifier>
      <wps:Data>
        <wps:LiteralData>48.0551|46.6077|43.9191</wps:LiteralData>
      </wps:Data>
    </wps:Input>
    <wps:Input>
      <ows:Identifier>sampling</ows:Identifier>
      <wps:Data>
        <wps:LiteralData>10</wps:LiteralData>
      </wps:Data>
    </wps:Input>
    <wps:Input>
      <ows:Identifier>format</ows:Identifier>
      <wps:Data>
        <wps:LiteralData>json</wps:LiteralData>
      </wps:Data>
    </wps:Input>
  </wps:DataInputs>
  <wps:ResponseForm>
    <wps:RawDataOutput>
      <ows:Identifier>result</ows:Identifier>
    </wps:RawDataOutput>
  </wps:ResponseForm>
</wps:Execute>

Réponse non indentée et en format json :

{"elevations":[{"lon":0.2367,"lat":48.0551,"z":93.58,"acc":2.5},
{"lon":0.726682,"lat":47.696327,"z":138.01,"acc":2.5},
{"lon":1.209968,"lat":47.335467,"z":62.79,"acc":2.5},
{"lon":1.686696,"lat":46.972574,"z":176.45,"acc":2.5},
{"lon":2.157,"lat":46.6077,"z":207.53,"acc":2.5},
{"lon":2.735486,"lat":45.939827,"z":634.69,"acc":2.5},
{"lon":3.300216,"lat":45.269017,"z":609.78,"acc":2.5},
{"lon":3.85177,"lat":44.5954,"z":1336.03,"acc":2.5},
{"lon":4.122779,"lat":44.257578,"z":266.01,"acc":2.5},
{"lon":4.3907,"lat":43.9191,"z":171.29,"acc":2.5}]}

Table des paramètres

Paramètre Description Type / format Requis Valeurs possibles Valeur par défaut Contraintes
sampling nombre de points constitutant l’échantillonage entier non de 2 à 5000 le nombre de couples (lon,lat) ne doit pas dépasser 5000
indent false, réponse non indentée true, réponse indentée booléen non false true false  
delimiter caractère utilisé pour séparer les longitudes et les latitudes texte non ’|’, ‘;’ ou ‘,’ ’|’  
lon liste des longitudes liste de décimaux oui de -180 à +180   autant de lon que de lat. Le nombre est limité à 5000
lat liste des latitudes liste de décimaux oui de -90 à +90   autant de lat que de lon. Le nombre est limité à 5000
format format de sortie du service texte non json xml json  

Gestion des erreurs

En cas d’erreur du service (code HTTP différent de 200), la réponse est au format XML ou json. Par exemple :

XML

<error>
    <code>BAD_PARAMETER</code>
    <description>The argument [lon] is mandatory</description>
</error>

JSON

{"error": {
    "code":"BAD_PARAMETER"
    "description":"The argument [lon] is mandatory"
}}