Les routes

Actuellement, les routes sont structurées dans 3 sections :

  1. Elevation : permet de récupérer des élévations.

  2. Resources : permet de récupérer la liste des ressources disponibles. Une ressource permettant la récupération d’une élévation.

  3. Other : permet de récupérer diverses informations au sujet de l’API :

Elevation

../_images/routes-elevation.png

Route 1 - GET - /1.0/calcul/alti/rest/elevation.{format}

Cette route permet de récupérer une ou plusieurs altitudes à partir de coordonnées géographiques d’une requête.

Voici la liste des paramètres obligatoires et optionnels, ainsi que leurs contraintes respectives.

Note : si une coordonnée fournie est située dans une zone non couverte, l’altitude retournée aura la valeur -99999.

Note : les altitudes retournées sont arrondies à 2 chiffres après la virgule.

Paramètre

Description

Type / format

Requis

Valeurs possibles

Valeur par défaut

Contraintes

format

format de sortie du service

texte

oui

json xml

xml

lon

liste des longitudes

liste de décimaux (texte)

oui

de -180 à +180

- Autant de lon que de lat.
- Le nombre est limité à 5000.

lat

liste des latitudes

liste de décimaux (texte)

oui

de -90 à +90

- Autant de lat que de lon.
- Le nombre est limité à 5000.

resource

nom de la ressource à utiliser pour récupérer l’élévation

texte

oui

en fonction des ressources disponibles

delimiter

caractère utilisé pour séparer les longitudes et les latitudes

texte

non

‘|’, ‘;’ ou ‘,’

“| ’

indent

- false : réponse non indentée
- true : réponse indentée

booléen (texte)

non

false true

false

measures

- false : une élévation par coordonnée, pas de propriété measures dans la réponse.
- true : une ou plusieurs élévations par coordonnée en fonction du nombre de pyramides associé à chaque ressource. Propriété measures dans la réponse avec des informations sur la source et la précision pour chaque élévation.

booléen (texte)

non

false true

false

zonly

- false : réponse étendue
- true : simple tableau de valeurs

booléen (texte)

non

false true

false

Exemples d’appels et de résultats :

{"elevations": [{"lon": 1.48, "lat": 43.54, "z": 168.75, "acc": 2.5}, {"lon": 1.49, "lat": 43.55, "z": 141.27, "acc": 2.5}]}
<elevations><elevation><lon>1.48</lon><lat>43.54</lat><z>168.75</z><acc>2.5</acc></elevation><elevation><lon>1.49</lon><lat>43.55</lat><z>141.27</z><acc>2.5</acc></elevation></elevations>
{
    "elevations": [
        168.75,
        141.27
    ]
}
<elevations>
  <z>168.75</z>
  <z>141.27</z>
</elevations>
{
  "elevations": [
    {
      "lon": 1.48,
      "lat": 43.54,
      "z": 168.75,
      "acc": 2.5,
      "measures": [
        {
          "z": 168.75,
          "source_name": "RGE Alti FXX",
          "source_measure": "STEREO",
          "acc": 2.5,
          "title": "MNT1"
        },
        {
          "z": 167.12318420410156,
          "source_name": "RGE Alti CALVADOS",
          "source_measure": "STEREO",
          "acc": 7,
          "title": "MNT2"
        }
      ]
    },
    {
      "lon": 1.49,
      "lat": 43.55,
      "z": 141.27,
      "acc": 4.5,
      "measures": [
        {
          "z": 141.27,
          "source_name": "RGE Alti FXX",
          "source_measure": "LIDAR",
          "acc": 2.5,
          "title": "MNT1"
        }
      ]
    }
  ]
}
<elevations>
    <elevation>
        <lon>1.48</lon>
        <lat>43.54</lat>
        <z>168.75</z>
        <acc>2.5</acc>
        <measures>
            <measure>
                <z>168.75</z>
                <source_name>RGE Alti FXX</source_name>
                <source_measure>STEREO</source_measure>
                <acc>2.5</acc>
                <title>MNT1</title>
            </measure>
            <measure>
                <z>167.12318420410156</z>
                <source_name>RGE Alti CALVADOS</source_name>
                <source_measure>STEREO</source_measure>
                <acc>7</acc>
                <title>MNT2</title>
            </measure>
        </measures>
    </elevation>
    <elevation>
        <lon>1.49</lon>
        <lat>43.55</lat>
        <z>141.27</z>
        <acc>4.5</acc>
        <measures>
            <measure>
                <z>141.27</z>
                <source_name>RGE Alti FXX</source_name>
                <source_measure>LIDAR</source_measure>
                <acc>2.5</acc>
                <title>MNT1</title>
            </measure>
        </measures>
    </elevation>
</elevations>

Route 2 - POST - /1.0/calcul/alti/rest/elevation.{format}

Cette route est similaire à la route 1 à l’exception qu’il s’agit un appel API de type POST et non GET. Ainsi, il vous faudra passer un body à votre requête sous la forme d’un objet JSON.

Exemple d’appel :

curl -X 'POST' \
  'https://geoplateforme-alti-api.dev.gpf-tech.ign.fr/1.0/calcul/alti/rest/elevation.json' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "lon": "1.48",
  "lat": "43.54",
  "resource": "string",
  "delimiter": "|",
  "indent": "false",
  "measures": "false",
  "zonly": "false"
}'

Les résultats sont identiques à la route 1.

Route 3 - GET - /1.0/calcul/alti/rest/elevationLine.{format}

Cette route permet de calculer un profil altimétrique à partir d’un ensemble de coordonnées et d’un paramètre d’échantillonnage.

Voici la liste des paramètres obligatoires et optionnels, ainsi que leurs contraintes respectives.

Note : si une coordonnée fournie est située dans une zone non couverte, l’altitude retournée aura la valeur -99999.

Note : les altitudes retournées sont arrondies à 2 chiffres après la virgule.

Paramètre

Description

Type / format

Requis

Valeurs possibles

Valeur par défaut

Contraintes

format

format de sortie du service

texte

oui

json xml

xml

lon

liste des longitudes

liste de décimaux (texte)

oui

de -180 à +180

- Autant de lon que de lat.
- Le nombre est limité à 5000.

lat

liste des latitudes

liste de décimaux (texte)

oui

de -90 à +90

- Autant de lat que de lon.
- Le nombre est limité à 5000.

resource

nom de la ressource à utiliser pour récupérer l’élévation

texte

oui

en fonction des ressources disponibles

delimiter

caractère utilisé pour séparer les longitudes et les latitudes

texte

non

‘|’, ‘;’ ou ‘,’

“| ’

indent

- false : réponse non indentée
- true : réponse indentée

booléen (texte)

non

false true

false

measures

- false : une élévation par coordonnée, pas de propriété measures dans la réponse.
- true : une ou plusieurs élévations par coordonnée en fonction du nombre de pyramides associé à chaque ressource. Propriété measures dans la réponse avec des informations sur la source et la précision pour chaque élévation.

booléen (texte)

non

false true

false

profile_mode

mode de calcul du profil altimétrique. Pour l’instant, 2 modes ont été créés : - simple: calcul classique
- accurate : permet de doubler la valeur du paramètre sampling afin de gagner en précision (temps de réponse plus long).

texte

non

simple accurate

false

sampling

nombre de points constituant l’échantillonnage

entier

non

de 2 à 5000

le nombre de couples (lon,lat)

ne doit pas dépasser 5000

Exemples d’appels et de résultats :

{
    "elevations": [
        {
            "lon": 1.48,
            "lat": 43.54,
            "z": 168.75,
            "acc": 2.5
        },
        {
            "lon": 1.4833333333333334,
            "lat": 43.54333333333333,
            "z": 149.50,
            "acc": 2.5
        },
        {
            "lon": 1.4866666666666666,
            "lat": 43.54666666666667,
            "z": 146.70,
            "acc": 2.5
        },
        {
            "lon": 1.49,
            "lat": 43.55,
            "z": 141.27,
            "acc": 2.5
        }
    ],
    "height_differences": {
        "positive": 0,
        "negative": 27.478958129882812
    }
}
<elevations>
  <elevation>
    <lon>1.48</lon>
    <lat>43.54</lat>
    <z>168.75</z>
    <acc>2.5</acc>
  </elevation>
  <elevation>
    <lon>1.4833333333333334</lon>
    <lat>43.54333333333333</lat>
    <z>149.50</z>
    <acc>2.5</acc>
  </elevation>
  <elevation>
    <lon>1.4866666666666666</lon>
    <lat>43.54666666666667</lat>
    <z>146.70</z>
    <acc>2.5</acc>
  </elevation>
  <elevation>
    <lon>1.49</lon>
    <lat>43.55</lat>
    <z>141.27</z>
    <acc>2.5</acc>
  </elevation>
  <height_differences>
    <positive>0</positive>
    <negative>27.478958129882812</negative>
  </height_differences>
</elevations>
{
    "elevations": [
        {
            "lon": 1.48,
            "lat": 43.54,
            "z": 168.75,
            "acc": 2.5,
            "measures": [
                {
                  "z": 168.75,
                  "source_name": "RGE Alti FXX",
                  "source_measure": "LIDAR",
                  "acc": 2.5,
                  "title": "MNT1"
                },
                {
                  "z": 168.14691772460938,
                  "source_name": "RGE Alti CALVADOS",
                  "source_measure": "STEREO",
                  "acc": 2.5,
                  "title": "MNT2"
                }
            ]
        },
        {
            "lon": 1.4833333333333334,
            "lat": 43.54333333333333,
            "z": 149.50,
            "acc": 2.5,
            "measures": [
                {
                  "z": 149.50,
                  "source_name": "RGE Alti FXX",
                  "source_measure": "LIDAR",
                  "acc": 2.5,
                  "title": "MNT1"
                }
            ]
        },
        {
            "lon": 1.4866666666666666,
            "lat": 43.54666666666667,
            "z": 146.70,
            "acc": 2.5,
            "measures": [
                {
                  "z": 146.70,
                  "source_name": "RGE Alti CALVADOS",
                  "source_measure": "STEREO",
                  "acc": 2.5,
                  "title": "MNT1"
                }
            ]
        },
        {
            "lon": 1.49,
            "lat": 43.55,
            "z": 141.27,
            "acc": 2.5,
            "measures": [
                {
                  "z": 141.27,
                  "source_name": "RGE Alti FXX",
                  "source_measure": "LIDAR",
                  "acc": 2.5,
                  "title": "MNT1"
                }
            ]
        }
    ],
    "height_differences": {
        "positive": 0,
        "negative": 27.478958129882812
    }
}
<elevations>
  <elevation>
    <lon>1.48</lon>
    <lat>43.54</lat>
    <z>168.75</z>
    <acc>2.5</acc>
      <measures>
          <measure>
              <z>168.75</z>
              <source_name>RGE Alti FXX</source_name>
              <source_measure>LIDAR</source_measure>
              <acc>2.5</acc>
              <title>MNT1</title>
          </measure>
          <measure>
              <z>168.14691772460938</z>
              <source_name>RGE Alti CALVADOS</source_name>
              <source_measure>STEREO</source_measure>
              <acc>2.5</acc>
              <title>MNT2</title>
          </measure>
      </measures>
  </elevation>
  <elevation>
    <lon>1.4833333333333334</lon>
    <lat>43.54333333333333</lat>
    <z>149.50</z>
    <acc>2.5</acc>
      <measures>
        <measure>
            <z>149.50</z>
            <source_name>RGE Alti FXX</source_name>
            <source_measure>LIDAR</source_measure>
            <acc>2.5</acc>
            <title>MNT1</title>
        </measure>
    </measures>
  </elevation>
  <elevation>
    <lon>1.4866666666666666</lon>
    <lat>43.54666666666667</lat>
    <z>146.70</z>
    <acc>2.5</acc>
      <measures>
        <measure>
            <z>146.70</z>
            <source_name>RGE Alti CALVADOS</source_name>
            <source_measure>STEREO</source_measure>
            <acc>2.5</acc>
            <title>MNT1</title>
        </measure>
    </measures>
  </elevation>
  <elevation>
    <lon>1.49</lon>
    <lat>43.55</lat>
    <z>141.27</z>
    <acc>2.5</acc>
      <measures>
        <measure>
            <z>141.27</z>
            <source_name>RGE Alti FXX</source_name>
            <source_measure>LIDAR</source_measure>
            <acc>2.5</acc>
            <title>MNT1</title>
        </measure>
    </measures>
  </elevation>
  <height_differences>
    <positive>0</positive>
    <negative>27.478958129882812</negative>
  </height_differences>
</elevations>

Route 4 - POST - /1.0/calcul/alti/rest/elevationLine.{format}

Cette route est similaire à la route 3 à l’exception qu’il s’agit un appel API de type POST et non GET. Ainsi, il vous faudra passer un body à votre requête sous la forme d’un objet JSON.

Exemple d’appel :

curl -X 'POST' \
  'https://geoplateforme-alti-api.dev.gpf-tech.ign.fr/1.0/calcul/alti/rest/elevationLine.json' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "lon": "1.48|1.49",
  "lat": "43.54|43.55",
  "resource": "rgealti",
  "delimiter": "|",
  "indent": "false",
  "profile_mode": "simple",
  "measures": "false",
  "sampling": 5
}'

Les résultats sont identiques à la route 3.

Resources

../_images/routes-resources.png

Route 1 - GET - /1.0/resources/

Cette route permet d’obtenir la liste des ressources disponibles. Afin de pouvoir utiliser les routes qui permettent de récupérer une élévation, il est impératif de passer au paramètre resource la propriété layer_name d’une ressource.

Paramètres optionnels :

  • keywords : permet de filtrer les ressources en fonctions de leurs tags

Exemples d’appel :

Résultats

{
    "content": "0 resource for the specified keywords",
    "resources": {}
}
{
  "content": "2 resources for the specified keywords",
  "resources": [
    {
      "_id": "bdalti",
      "title": "string",
      "bbox": {
        "east": 0,
        "north": 0,
        "west": 0,
        "south": 0
      }
    },
    {
      "_id": "rgealti",
      "title": "string",
      "bbox": {
        "east": 0,
        "north": 0,
        "west": 0,
        "south": 0
      }
    }
  ]
}

Route 2 - GET - /1.0/resources/{id_resource}/

Cette route permet d’obtenir des détails sur une ressource. Le id_resource correspond à l’attribut _id

Exemples d’appel :

Résultats

{
    "error": {
        "code": "BAD_PARAMETER",
        "description": "'bdaltii' is not an accepted resource. This resource does not exist"
    }
}
{
  "title": "string",
  "abstract": "string",
  "keywords": [
    "string"
  ],
  "bbox": {
    "east": 0,
    "north": 0,
    "west": 0,
    "south": 0
  },
  "additionalProp1": {},
  "_id": "bdalti",
  "pyramids": {
    "string": {
      "stored_data": {
        "ancestors": [
          "string"
        ],
        "extent": {
          "geometry": {},
          "type": "string"
        },
        "name": "string",
        "size": 0,
        "srs": "string",
        "status": "string",
        "type": "string",
        "type_infos": {
          "channels_format": "string",
          "channels_number": 0,
          "compression": "string",
          "levels": [
            "string"
          ],
          "nodata_value": "string",
          "tms": "string",
          "additionalProp1": {}
        },
        "additionalProp1": {},
        "_id": "string"
      },
      "title": "string",
      "bbox": {
        "east": 0,
        "north": 0,
        "west": 0,
        "south": 0
      },
      "source": {
        "value": "string",
        "additionalProp1": {}
      },
      "accuracy": {
        "stored_data": {
          "ancestors": [
            "string"
          ],
          "extent": {
            "geometry": {},
            "type": "string"
          },
          "name": "string",
          "size": 0,
          "srs": "string",
          "status": "string",
          "type": "string",
          "type_infos": {
            "channels_format": "string",
            "channels_number": 0,
            "compression": "string",
            "levels": [
              "string"
            ],
            "nodata_value": "string",
            "tms": "string",
            "additionalProp1": {}
          },
          "additionalProp1": {},
          "_id": "string"
        },
        "mapping": {
          "field_1": "string",
          "field_2": "string",
          "field_3": "string",
          "field_4": "string",
          "field_5": "string",
          "field_6": "string",
          "field_7": "string",
          "field_8": "string",
          "field_9": "string",
          "field_10": "string",
          "field_11": "string",
          "field_12": "string",
          "field_13": "string",
          "field_14": "string",
          "field_15": "string",
          "field_16": "string",
          "field_17": "string",
          "field_18": "string",
          "field_19": "string",
          "field_20": "string",
          "field_21": "string",
          "field_22": "string",
          "field_23": "string",
          "field_24": "string",
          "field_25": "string",
          "additionalProp1": {}
        },
        "additionalProp1": {}
      },
      "additionalProp1": {}
    }
  }
}

Other

../_images/routes-other.png

Route 1 - GET - /

Cette route permet d’obtenir la version de l’API.

Exemple d’appel :

Résultat

{
  "message": "Altimetry API version 1.0"
}

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 :

{
    "error": {
        "code": "BAD_PARAMETER",
        "description": "The parameter [lat] is missing."
    }
}
{
    "error": {
        "code": "BAD_PARAMETER",
        "description": "'_' is not an accepted delimiter. Supported values: '|',';',','"
    }
}
{
    "error": {
        "code": "BAD_PARAMETER",
        "description": "The values (181.48) cannot be parsed as a valid longitude (double value such as -180 < lon < 180)."
    }
}
<error>
  <code>BAD_PARAMETER</code>
  <description>The parameter [lat] is missing.</description>
</error>
<error>
  <code>BAD_PARAMETER</code>
  <description>'_' is not an accepted delimiter. Supported values: '|',';',','</description>
</error>