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 - [email protected] 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, [email protected] <mailto:[email protected]> <[email protected] <mailto:[email protected]>> 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 <[email protected]
    <mailto:[email protected]>> 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
        [email protected] <mailto:[email protected]>
        https://lists.openstreetmap.org/listinfo/talk-fr




    _______________________________________________
    Talk-fr mailing list
    [email protected] <mailto:[email protected]>
    https://lists.openstreetmap.org/listinfo/talk-fr



    _______________________________________________
    Talk-fr mailing list
    [email protected] <mailto:[email protected]>
    https://lists.openstreetmap.org/listinfo/talk-fr




_______________________________________________
Talk-fr mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/talk-fr

_______________________________________________
Talk-fr mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/talk-fr

Répondre à