Format de la réponse pour calculer l'altitude d'un point

API Google Elevation exemples et tutoriels en Français

Cartographie et webmapping

Partager ce tutoriel sur les réseaux sociaux
Signaler une erreur dans cet article

Pour chaque requête valide, l'API Google Elevation retournera une réponse contenant l'altitude dans le format indiqué dans l'URL de la requête. Chaque réponse contient les éléments suivants :

  • Un code de statut status, qui peut prendre une des valeurs suivantes :
    • OK : indique que la requête a abouti avec succès,
    • INVALID_REQUEST : indique que la requête était male formée,
    • OVER_QUERY_LIMIT : indique que le demandeur a dépassé le quota de requêtes autorisées,
    • REQUEST_DENIED : indique que l'API n'a pas pu achever la requête, probablement parce que le demandeur a omis le paramètre obligatoire sensor,
    • UNKNOWN_ERROR : indique une erreur inconnue.
  • Un tableau de résultats nommé results contenant les éléments suivants :
    • Un élément location (contenant des éléments latitude lat et longitude lng) correspondant à l'emplacement pour lequel l'altitude a été calculée. Notez que pour les requêtes concernant les chemins, l'élément location contiendra un échantillon de points situés le long du chemin.
    • Un élément elevation indiquant l'altitude, en mètres, de l'emplacement.
    • Un valeur resolution indiquant la distance maximale entre les points de données à partir desquels l'altitude a été interpolée, en mètres. Cette propriété sera absente si la résolution n'est pas connue. Notez que les données d'altitude deviennent plus grossières (valeurs resolution plus grande) lorsque plusieurs points sont passés. Pour obtenir une valeur d'altitude plus précise pour un point, elle devrait être interrogée indépendamment.

Obtenir l'altitude d'une ou plusieurs positions au format JSON

Emplacement unique réponse au format JSON

L'exemple suivant demande l'altitude de Denver, au Colorado, le "Mile High City" dans le format JSON :

https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034&sensor=true_OU_false

Important : dans la requête ci-dessus Le paramètre sensor a été laissé volontairement avec la variable true_OU_false afin de souligner que vous devez définir impérativement cette valeur de façon explicite sur true ou sur false. Assurez-vous également qu'aucun espace existe entre les latitude et longitude passées dans le paramètre locations.

{
   "results" : [
      {
         "elevation" : 1608.637939453125,
         "location" : {
            "lat" : 39.73915360,
            "lng" : -104.98470340
         },
         "resolution" : 4.771975994110107
      }
   ],
   "status" : "OK"
}

Cliquez sur le lien ci-desssous pour voir le résultat dans votre navigateur :

https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034&sensor=false

Emplacements multiples réponse au format JSON

L'exemple suivant montre des réponses multiples (pour Denver, CO et pour Death Valley, CA) dans le format JSON :

https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034|36.455556,-116.866667&sensor=true_OU_false

Important : dans la requête ci-dessus Le paramètre sensor a été laissé volontairement avec la variable true_OU_false afin de souligner que vous devez définir impérativement cette valeur de façon explicite sur true ou sur false. Assurez-vous également qu'aucun espace existe entre les latitude et longitude passées dans le paramètre locations.

{
   "results" : [
      {
         "elevation" : 1608.637939453125,
         "location" : {
            "lat" : 39.73915360,
            "lng" : -104.98470340
         },
         "resolution" : 4.771975994110107
      },
      {
         "elevation" : -50.78903579711914,
         "location" : {
            "lat" : 36.4555560,
            "lng" : -116.8666670
         },
         "resolution" : 19.08790397644043
      }
   ],
   "status" : "OK"
}

Cliquez sur le lien ci-desssous pour voir le résultat dans votre navigateur :

https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034|36.455556,-116.866667&sensor=false

Obtenir l'altitude d'une ou plusieurs positions au format XML

Emplacement unique réponse au format XML

La requête suivante est identique à la précédente, sauf qu'ici, on souhaite que le format de sortie soit XML grâce à l'utilisation du flag de service /xml :

L'exemple suivant demande l'altitude de Denver, au Colorado, le "Mile High City" dans le format XML :

https://maps.googleapis.com/maps/api/elevation/xml?locations=39.7391536,-104.9847034&sensor=true_OU_false

Important : dans la requête ci-dessus Le paramètre sensor a été laissé volontairement avec la variable true_OU_false afin de souligner que vous devez définir impérativement cette valeur de façon explicite sur true ou sur false. Assurez-vous également qu'aucun espace existe entre les latitude et longitude passées dans le paramètre locations.

<?xml version="1.0" encoding="UTF-8"?>
<ElevationResponse>
	<status>OK</status>
	<result>
		<location>
			<lat>39.7391536</lat>
			<lng>-104.9847034</lng>
		</location>
		<elevation>1608.6379395</elevation>
		<resolution>4.7719760</resolution>
	</result>
</ElevationResponse>

Cliquez sur le lien ci-desssous pour voir le résultat dans votre navigateur :

https://maps.googleapis.com/maps/api/elevation/xml?locations=39.7391536,-104.9847034&sensor=false

Emplacements multiples réponse au format XML

L'exemple suivant montre des réponses multiples (pour Denver, CO et pour Death Valley, CA) dans le format XML :

https://maps.googleapis.com/maps/api/elevation/xml?locations=39.7391536,-104.9847034|36.455556,-116.866667&sensor=true_OU_false

Important : dans la requête ci-dessus Le paramètre sensor a été laissé volontairement avec la variable true_OU_false afin de souligner que vous devez définir impérativement cette valeur de façon explicite sur true ou sur false. Assurez-vous également qu'aucun espace existe entre les latitude et longitude passées dans le paramètre locations.

<ElevationResponse>
	<status>OK</status>
	<result>
		<location>
			<lat>39.7391536</lat>
			<lng>-104,9847034 </lng>
		</location>
		<elevation>1608.8402100</elevation>
		<resolution>4.7719760</resolution>
	</result>
	<result>
		<location>
			<lat>36.4555560</lat>
			<lng>-116,8666670</lng>
		</location>
		<elevation>-50,7890358></elevation>
		<resolution>19.0879040</resolution>
	</result>
</ElevationResponse>

Cliquez sur le lien ci-desssous pour voir le résultat dans votre navigateur :

https://maps.googleapis.com/maps/api/elevation/xml?locations=39.7391536,-104.9847034|36.455556,-116.866667&sensor=false

Obtenir l'altitude d'un échantillon de points le long d'une ligne droite

Les exemples suivants demandent les données relatives à l'altitude le long d'une ligne droite path partant du Mont Whitney, CA jusqu'à Badwater, CA, correspondant, réciproquement, aux points le plus élevé et le plus bas sur le continent US. Nous demandons trois échantillons samples, incluant les deux extrémités et le point à mi-chemin.

Réponse au format JSON

https://maps.googleapis.com/maps/api/elevation/json?path=36.578581,-118.291994|36.23998,-116.83171&samples=3&sensor=true_OU_false

Important : dans la requête ci-dessus Le paramètre sensor a été laissé volontairement avec la variable true_OU_false afin de souligner que vous devez définir impérativement cette valeur de façon explicite sur true ou sur false. Assurez-vous également qu'aucun espace existe entre les latitude et longitude passées dans le paramètre path.


{
   "results" : [
      {
         "elevation" : 4411.941894531250,
         "location" : {
            "lat" : 36.5785810,
            "lng" : -118.2919940
         },
         "resolution" : 19.08790397644043
      },
      {
         "elevation" : 1381.861694335938,
         "location" : {
            "lat" : 36.41150289067028,
            "lng" : -117.5602607523847
         },
         "resolution" : 19.08790397644043
      },
      {
         "elevation" : -84.61699676513672,
         "location" : {
            "lat" : 36.239980,
            "lng" : -116.831710
         },
         "resolution" : 19.08790397644043
      }
   ],
   "status" : "OK"
}

Cliquez sur le lien ci-desssous pour voir le résultat dans votre navigateur :

https://maps.googleapis.com/maps/api/elevation/json?path=36.578581,-118.291994|36.23998,-116.83171&samples=3&sensor=false

Réponse au format XML

https://maps.googleapis.com/maps/api/elevation/xml?path=36.578581,-118.291994|36.23998,-116.83171&samples=3&sensor=true_OU_false

Important : dans la requête ci-dessus Le paramètre sensor a été laissé volontairement avec la variable true_OU_false afin de souligner que vous devez définir impérativement cette valeur de façon explicite sur true ou sur false. Assurez-vous également qu'aucun espace existe entre les latitude et longitude passées dans le paramètre path.

<?xml version="1.0" encoding="UTF-8"?>
<ElevationResponse>
	<status>OK</status>
	<result>
		<location>
			<lat>36.5785810</lat>
			<lng>-118.2919940</lng>
		</location>
		<elevation>4411.9418945</elevation>
		<resolution>19.0879040</resolution>
	</result>
	<result>
		<location>
			<lat>36.4115029</lat>
			<lng>-117.5602608</lng>
		</location>
		<elevation>1381.8616943</elevation>
		<resolution>19.0879040</resolution>
	</result>
	<result>
		<location>
			<lat>36.2399800</lat>
			<lng>-116.8317100</lng>
		</location>
		<elevation>-84.6169968</elevation>
		<resolution>19.0879040</resolution>
	</result>
</ElevationResponse>

Cliquez sur le lien ci-desssous pour voir le résultat dans votre navigateur :

https://maps.googleapis.com/maps/api/elevation/xml?path=36.578581,-118.291994|36.23998,-116.83171&samples=3&sensor=false

Création d'un graphique représentant le dénivelé du terrain : Exemple

Les données relatives à l'altitude doivent être utilisées conjointement avec l'affichage des données sur une carte Google. Google Chart Tools ( https://developers.google.com/chart/?hl=fr ) est parfaitement adapté pour la création de graphiques illustrant le dénivelé du terrain, que vous pouvez afficher aux côtés de vos cartes.

L'exemple suivant, en Python, calcule les données relatives à l'altitude entre le Mont Whitney et Badwater, Death Valley et utilise ces valeurs pour créer un graphique représentant le dénivelé du terrain :

import simplejson
import urllib

ELEVATION_BASE_URL = 'https://maps.googleapis.com/maps/api/elevation/json'
CHART_BASE_URL = 'http://chart.apis.google.com/chart'

def getChart(chartData, chartDataScaling="-500,5000", chartType="lc",chartLabel="Elevation in Meters",chartSize="500x160",chartColor="orange", **chart_args):
    chart_args.update ((
      'cht': chartType,
      'chs': chartSize,
      'chl': chartLabel,
      'chco': chartColor,
      'chds': chartDataScaling,
      'chxt': 'x,y',
      'chxr': '1,-500,5000'
    ))

    dataString = 't:' + ','.join(str(x) for x in chartData)
    chart_args['chd'] = dataString.strip(',')

    chartUrl = CHART_BASE_URL + '?' + urllib.urlencode (chart_args)


    print chartUrl

    def getElevation(path="36.578581,-118.291994|36.23998,-116.83171", samples="100", sensor="false", **elvtn_args):
      elvtn_args.update({
        'path': path,
        'samples': samples,
        'sensor': sensor
      ))

      url = ELEVATION_BASE_URL + '?' urllib.urlencode(elvtn_args)
      response = simplejson.load(urllib.urlopen(url))

      # Create a dictionary for each results[] object
      elevationArray = []

      for resultset in response['results']:
        elevationArray.append(resultset['elevation'])

      # Create the chart passing the array of elevation data
      getChart(chartData=elevationArray)

if __name__ == '__main__':
    # Mt. Whitney
    startStr = "36.578581,-118.291994"
    # Death Valley
    endStr = "36.23998,-116.83171"

    pathStr = startStr + "|" + endStr

    getElevation(pathStr)

Les images ci-dessous montrent comment ces informations peuvent être utilisées afin d'être affichées sur une carte et / ou un graphique :

Carte Google Maps


Graphique altitude

Téléchargez le code ElevationChartCreator.py depuis gmaps-échantillons.

Cette API ne nécessite pas de clé API Maps.