[OSM-dev-fr] Calcul de dénivelée avec mapquest

yvecai yvecai at gmail.com
Jeu 21 Avr 06:09:08 BST 2011


On 21. 04. 11 05:30, Nicolas Dumoulin wrote:
> Salut,
>
> Je cherchais à obtenir facilement la dénivellée cumulée positive (le D+ quoi) d'un itinéraire, et j'ai finalement fait un script python pour utiliser les services de mapquest. Voilà ce que ça donne :
>
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
>
> import urllib2,sys
> from xml.dom import minidom
>
> if __name__ == "__main__":
>    if len(sys.argv)!=2:
>      print "Usage: "+sys.argv[0]+"<gpx file>"
>      sys.exit(1)
>    xmldoc = minidom.parse(sys.argv[1])
>    latLngCollection=""
>    for point in xmldoc.getElementsByTagName("gpx")[0].getElementsByTagName("trk")[0].getElementsByTagName("trkseg")[0].getElementsByTagName("trkpt"):
>      latLngCollection+=point.getAttribute("lat")+","+point.getAttribute("lon")+","
>    url="http://open.mapquestapi.com/elevation/v1/getElevationProfile?shapeFormat=raw&outFormat=xml&latLngCollection="+latLngCollection[:-1]
>    page = urllib2.urlopen(url).read()
>    xmldoc = minidom.parseString(page)
>    previous=10000
>    total=0
>    for elt in xmldoc.getElementsByTagName("elevationResponse")[0].getElementsByTagName("distanceHeightCollection")[0].getElementsByTagName("distanceHeight"):
>      height=float(elt.getElementsByTagName("height")[0].firstChild.data)
>      #print str(height)
>      if (height>previous):
>        total+=height-previous
>      previous=height
>    print str(total)
>
> À toutes fins utiles …
>
Attention à:
1) L'effet fourmi
Si une fourni grimpe sur tout les cailloux sur son chemin, elle va 
parcourir un D+ énorme
2 ) La précision latérale
A flan de montagne, on augmente artificiellement le D+ à cause de 
l'imprécision de tracé.

Je suis tombé sur ces deux problèmes pour www.pistes-nordiques.org. Je 
ne les ai pas résolu, mais j'arrivai à des dénivelés de l'ordre de x1.5 
à x2 par rapport à ce que l'on s'attendrait. Je pense qu'il faudrait 
faire une moyenne glissante, mais je ne vois pas trop comment la calibrer.

Yves



Plus d'informations sur la liste de diffusion dev-fr