[OSM-talk-fr] distance entre deux points sur une route
osm.sanspourriel at spamgourmet.com
osm.sanspourriel at spamgourmet.com
Jeu 30 Juin 10:08:26 UTC 2016
C'est vraiment de l'optimisation à la petite semaine car le calcul d'une
valeur absolue n'est pas bien compliqué.
Bien plus intéressant est de changer la dimension des lignes afin de
stocker la distance depuis le premier nœud.
Typiquement dans un modèle d'itinéraire tu ajoutes deux coûts : le coût
en distance et le coût en temps (en plus des lat/lon et éventuellement ele).
N.B. : les points étant rapprochés, je doute même de la nécessité de
tenir compte de la rotondité de la terre entre deux points, une droite
géométrique est, étant donné l'absence d'information sur l'altitude, à
peine plus fausse qu'une ligne loxodromique.
Adrien, si jamais ton calcul depuis le GPX tient compte de l'élévation
et si la trace est de bonne qualité, tu dois avoir le meilleur calcul...
qui plus est sans effort de programmation.
Jean-Yvon
Le 30/06/2016 à 11:38, Philippe Verdy - verdy_p at wanadoo.fr a écrit :
> D'ailleurs dans la formule Python les fonctions abs() pour les trois
> composantes distParallele, distMeridien, et distVertical sont
> inutiles, puisqu'on ne va utiliser que leur carré respectif. Il suffit
> juste de les voir comme des composantes d'un vecteur 3D orienté et non
> comme des distances positives.
>
> Le 30 juin 2016 à 07:52, pepilepioux at ovh.fr
> <mailto:pepilepioux at ovh.fr> <pepilepioux at ovh.fr
> <mailto:pepilepioux at ovh.fr>> a écrit :
>
> Le 29/06/2016 à 23:20, François Lacombe a écrit :
>> Bonjour Adrien,
>>
>> A mon sens c'est un calcul de distance loxodromique entre chaque
>> nœud, de chaque portion de véloroute qui composent le chemin à
>> parcourir.
>> https://fr.wikipedia.org/wiki/Loxodromie
>>
>> Concrètement, voici un bout de PHP qui te donne la distance entre
>> deux points dont tu connais le lat/lon
>> Tu n'as plus qu'à faire la somme de tous tes segments pour avoir
>> la distance totale
>>
>> $l = 6366 * 2 * asin(
>> sqrt(
>> pow(
>> sin((deg2rad($lat)-deg2rad($ll[1]))/2) , 2) +
>> cos(deg2rad($lat))*cos(deg2rad($ll[1]))* pow(
>> sin((deg2rad($lng)-deg2rad($ll[0]))/2) , 2)
>> )
>> );
>
>
> Pour ceux que ça peut intéresser la même chose en Python :
>
> import math
>
> def distance ( lat1 , lon1 , lat2 , lon2 , alt1 , alt2 ) :
> rEquat = 6378137
> rPole = 6356752
> rLat = rEquat - ( ( rEquat - rPole ) * abs( lat1 / 90 ) ) +
> alt1
>
> distParallele = abs ( rLat * math.cos( (( lat1 + lat2 ) / 2
> ) * math.pi / 180 ) * ( ( lon2 - lon1 ) * math.pi / 180 ) )
> distMeridien = abs ( rLat * ( lat2 - lat1 ) * math.pi / 180 )
> distVerticale = abs ( alt2 - alt1 )
> distTotale = math.sqrt ( ( distParallele *
> distParallele ) + ( distMeridien * distMeridien ) + (
> distVerticale * distVerticale ) )
>
> return distTotale
>
> (distance en mètres)
>
>
>
>
>
>>
>> Où $lat et $lng sont les coordonnées de ton point B et $ll[0] et
>> $ll[1] celles de ton point A.
>> Cette formule a un défaut : elle ne tient pas compte de
>> l'altitude des points, réputée négligeable ici.
>>
>>
>> A+
>>
>> *François Lacombe*
>>
>> fl dot infosreseaux At gmail dot com
>> www.infos-reseaux.com <http://www.infos-reseaux.com>
>> @InfosReseaux <http://www.twitter.com/InfosReseaux>
>>
>> Le 29 juin 2016 à 20:46, adrien <perso at adrieng.fr
>> <mailto:perso at adrieng.fr>> a écrit :
>>
>> Bonjour,
>>
>> J'aimerais connaître la distance entre deux points sur une
>> relation
>> route=bicycle,en l'occurence la distance entre Nantes et
>> Blain sur la
>> Vélodyssée.
>>
>> Je suppose que c'est facilement faisable, mais je sèche
>> complètement sur
>> comment faire, et quel outils utiliser…
>>
>> Si vous avez des pistes, je vous en serait reconnaissant.
>>
>> Bonne soirée
>>
>> Adrien
>>
>>
>> _______________________________________________
>> Talk-fr mailing list
>> Talk-fr at openstreetmap.org <mailto:Talk-fr at openstreetmap.org>
>> https://lists.openstreetmap.org/listinfo/talk-fr
>>
>>
>>
>>
>> _______________________________________________
>> Talk-fr mailing list
>> Talk-fr at openstreetmap.org <mailto:Talk-fr at openstreetmap.org>
>> https://lists.openstreetmap.org/listinfo/talk-fr
>
>
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr at openstreetmap.org <mailto:Talk-fr at openstreetmap.org>
> https://lists.openstreetmap.org/listinfo/talk-fr
>
>
>
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20160630/c31edc36/attachment.htm>
Plus d'informations sur la liste de diffusion Talk-fr