Ce n'est pas juste de l'optimisation, c'est de la géométrie... Ces formules
étaient données pour être exactes.

Oui cela fait une différence, certe petite, mais tout dépend de la
précision qu'on attend (même 0,01% cela fait vite une différence mesurable
sur une distance assez longue (toutefois non significative si c'est un
trajet routier car on ne tient pas compte de la géométrie des voies sur les
routes et des petits écarts à droit ou à gauche et encore moins des
dépassements).

En revanche la non-rotondité de la terre a une impact bien plus important
que la petite erreur sur la non-orthonormie du repère sur l'axe des
altitudes. Dans OSM on utilise le géoïde WGS84 partout, pas la sphère ! Et
là ce calcul PHP ne tenait compte que du rayon moyen de la sphère (qui est
correct uniquement aux latitudes moyennes : les distances seront trop
courtes à l'équateur et trop longues aux pôles). La formule Python est bien
meilleure.


Le 30 juin 2016 à 12:08, <osm.sanspourr...@spamgourmet.com> a écrit :

> 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 - verd...@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, <pepilepi...@ovh.fr>pepilepi...@ovh.fr <
> pepilepi...@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
>> @InfosReseaux <http://www.twitter.com/InfosReseaux>
>>
>> Le 29 juin 2016 à 20:46, adrien < <pe...@adrieng.fr>pe...@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@openstreetmap.org
>>> https://lists.openstreetmap.org/listinfo/talk-fr
>>>
>>
>>
>>
>> _______________________________________________
>> Talk-fr mailing 
>> listTalk-fr@openstreetmap.orghttps://lists.openstreetmap.org/listinfo/talk-fr
>>
>>
>>
>> _______________________________________________
>> Talk-fr mailing list
>> Talk-fr@openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/talk-fr
>>
>>
>
>
> _______________________________________________
> Talk-fr mailing 
> listTalk-fr@openstreetmap.orghttps://lists.openstreetmap.org/listinfo/talk-fr
>
>
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr@openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
>
>
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-fr

Répondre à