Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calculer un rayon de 5km pour le client

Sujet résolu
    20 mars 2021 à 13:44:50

    Salut.

    J'ai ces coordonnées : 39.9690,-83.0114, donc latitude et longitude.

    Mais donc, j'ai appris ces coordonnées étaient des degrés de la Terre :O...

    Je cherche à calculer depuis ces coordonnées un rayon de 5 km (ou un rayon qui peut varier selon le souhait du client)...

    Donc ce qu'il me faudrait c'est pour la latitude 39.9690 - 5km et 39.9690 + 5km, et avoir les nouvelles latitudes... Pareil pour la longitude...

    J'ai essayé de voir sur internet comment faire... mais j'ai pas trop compris..

    Merci..

    • Partager sur Facebook
    • Partager sur Twitter

    Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.

      20 mars 2021 à 18:20:49

      Tu trouveras sur Internet le diamètre de la terre, je pense que c'est environ 12500 km et 40075 km de circonférence.
      Tu divises la circonférence en 360° et tu as la longueur d'un degré.
      Pour le reste, je suppose que tu sauras comment faire. Une minute vaut environ 1.8 km et une seconde 30 m.
      Attention, si le rayon du cercle est trop grand, tu auras des erreurs dues à la courbure de la terre.
      • Partager sur Facebook
      • Partager sur Twitter

      Le Tout est souvent plus grand que la somme de ses parties.

        20 mars 2021 à 22:09:24

        Il y a une infinité de points situés sur le cercle de rayon 5 km. Que veux-tu exactement ? Les infinités de longitudes et latitudes ?

        Tu divises la circonférence en 360° et tu as la longueur d'un degré.

        C'est plus compliqué que ça. 360° à l'équateur font 40.000 km. Mais sur un parallèle de latitude quelconque il faut multiplier par cos(latitude).

        • Partager sur Facebook
        • Partager sur Twitter
          20 mars 2021 à 22:15:44

          Ok, 

          Pour la latitude, je suis ok: départ 39.9690, je veux un rayon de 5km:

          (5*1/(40074/360)+39.9690) ≤ latitude(39.9690) ≤ (5*1/(40074/360)-39.969)

          Donc là, j'ai bien 5 km de rayon pour la latitude. Peu importe la longitude...

          Mais pour la longitude, j'ai un problème... je commence avec -83.0114 pour un rayon de 5km:

          5*1/(12756/360)+(-83.0114)

          Et donc là, j'obtiens 4.23 km de rayon... et ça change en fonction de la latitude...! (testé sur google maps)

          Du coup, j'avais vu qu'il fallait faire de la trigonométrie ou quoi... Mais je trouve pas...

          (edit: robun je viens de voir ton message après 40min, et oui, il faut utiliser le cos... mais comment ?)

          Comment trouver la longitude ?

          -
          Edité par CentreDordi 20 mars 2021 à 23:12:56

          • Partager sur Facebook
          • Partager sur Twitter

          Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.

            21 mars 2021 à 1:13:02

            L'exemple que tu as pris : (39.9690  , -83.0114) , c'est en plein Ohio... au bout du monde. Attention, les formules qu'on trouve un peu partout marchent assez bien tant qu'on est très loin des 2 poles. Dans l'Ohio, pas de problème. Mais si tu as pris un exemple hors de France Métropolitaine, c'est que tu peux te balader un peu partout.

            Bon, un cercle de 5km de rayon, c'est petit, ça va. Tant que tu es à plus de 100km des poles (Nord ou Sud), ça va le faire.

            La latitude : tu prends ton globe terrestre, tu dessines un cercle qui passe par le pole nord, le pole sud et ton point(39.9690  , -83.0114).

            En fait, ce cercle, il passe par tous les points (x, -83.0114), il passe par l'OHIO , un peu au large du Pérou, le pole sud, on remonte par Singapour, la Chine, la Mongolie, le Pole Nord, et on redescend en traversant le Canada.

            Ce cercle, ce méridien, il mesure 40074 km.

            Partant de n'importe quel point sur le globe, on a un cercle qui mesure 40074km. Et donc, pour trouver un point 5km plus au nord ou plus au sud, on remplace 39.9690 par 39.9690 + 5*360/40074 ou 39.9690 - 5*360/40074

            Ca, c'est facile.

            Maintenant la longitude.

            Partant de notre point au milieu de l'Ohio, on va tracer sur le globe un cercle parallèle à l'équateur. Un cercle qui va partir de l'Ohio, passer par le Portugal, le sud de l'Italie , ... l'Arménie , la Corée, le Japon, et retour aux US.

            Quand on dessine un cercle horizontal comme ça, plus on est proche de l'équateur, plus le cercle est grand, et plus on se rapproche des poles, plus le cercle de référence diminue. C'est la difficulté que tu signalais.

            A l'équateur, on a un cercle de 40074km. Comme le cercle qu'on utilisait pour la latitude.

            Plus on s'éloigne de l'équateur (traduction math : plus la latitude est grande), plus le rayon du cercle de référence diminue.

            Pour notre exemple, le cercle que j'ai tracé mesure : 40074*cos(39.9690)=40074*0.766392=30712 (c'est Pythagore qui m'a donné le tuyau)

            Attention, vérifie que ton ordinateur sait calculer des cosinus correctement. cos(39.9690)=0.766392.

            Si ton ordi te dit cos(39.9690)=-0.64352 (c'est ce que me dit le mien), il faut changer d'ordinateur. Non, je blague, il ne faut pas changer d'ordinateur, il faut juste faire une certaine correction dans ma formule.

            Donc, notre cercle qui coupe la terre parallèlement à l'équateur, en passant par notre point (39.9690  , -83.0114), il mesure 40074*cos(39.9690).

            Et donc, pour trouver les 2 points que tu cherches, à 5km du point de départ, il faut prendre les longitudes  -83.0114 - 5*360/(40074*cos(39.9690))  et  -83.0114 - 5*360/(40074*cos(39.9690)) .

            Voilà, tu as 4 valeurs, qui te permettent de tracer un carré, ou un cercle. ( une forme qui ressemble vraiment bien à un cercle, tant qu'on reste loin des 2 poles, attention).

            D'ailleurs, ce problème de déformation, il n'est pas trop problématique pour tracé un cercle, mais il serait déjà plus problématique pour tracer un carré.

            • Partager sur Facebook
            • Partager sur Twitter
              21 mars 2021 à 1:15:47

              Il me semble que le diamètre de la terre en passant par les pôles est d'environ 10 km plus petit que celui du tour de l'équateur.
              Si tu veux calculer les longitudes à une lattitude donnée, il faut suivre le conseil de robun.
              Le calcul des lattitudes à une longitude donnée se fait comme j'ai mentionné.
              Et on peut se demander ce que veut dire "un rayon de 5 km" sachant que la terre est à peu près sphérique ...
              Sur une surface plane, c'est facile de calculer tous les points de la circonférence.
              Mais si tu dois jouer constamment avec les distances même à des lattituddes qui varient peu, ça risque d'être compliqué.
              • Partager sur Facebook
              • Partager sur Twitter

              Le Tout est souvent plus grand que la somme de ses parties.

                21 mars 2021 à 1:19:41

                Je n'ai toujours pas compris ce que tu veux.

                CentreDordi a écrit:

                Et donc là, j'obtiens 4.23 km de rayon... et ça change en fonction de la latitude...!

                Évidemment puisque c'est un cercle ! C'est le cas aussi en géométrie plane : dans un repère (Oxy), on ne peut pas dire que les points d'un cercle vont de x1 à x2 et de y1 à y2.

                CentreDordi a écrit:

                Comment trouver la longitude ?

                La longitude de quoi ? Donne une réponse précise !

                Est-ce que le but est de tracer ce cercle ? Si oui, tu pourrais en effet avoir besoin de la longitude et de la latitude de certains points de ce cercle, mais ça va être difficile à calculer. Ce serait plus facile de tracer directement un cercle sur la carte (connaissant l'échelle, on connaîtra le rayon du cercle) vu que ce cercle est petit devant le rayon de la Terre, donc ne sera pas déformé par la projection.

                (J'ai fait quelque chose de similaire pour un programme qui représente le ciel vu au télescope : certains objets circulaires, comme les amas d'étoiles ou les galaxies vues de face, sont dessinés à partir de leur rayon directement sur la représentation : ils sont suffisamment petits pour ne pas être déformés par la projection. Pareil pour les ellipses qui représentent les galaxies, il faut juste faire attention à ce que l'angle de position du grand axe doit être corrigé pour tenir compte du cosinus de la latitude : je me suis contenté de les tracer par rapport à la carte, non par rapport à la sphère céleste, ce qui aurait été bien plus compliqué.)



                • Partager sur Facebook
                • Partager sur Twitter
                  21 mars 2021 à 11:03:42

                  Yes, tbc92, ça marche à merveille, merci !

                  Effectivement, le cos ne donne pas le bon résultat, du coup j'ai trouvé cos(latitude*PI/180) et ça donne le bon résultat.

                  Pierrot le fou, les distances changeront de quelques km mais pas plus... le but étant que je trouve des utilisateurs proches du client..

                  Robun, non je ne cherche pas à tracer un cercle visuelle pour le client, mais oui je cherche à tracer un cercle (ou carré) pour la recherche d'utilisateur à proximité..

                  Merci de m'avoir aidé.. bonne journée !

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.

                    21 mars 2021 à 11:45:06

                    PierrotLeFou :

                    C'est vrai que la terre n'est pas tout à fait sphérique, mais on peut considérer que c'est négligeable. 

                    Il y a 2 phénomènes qui font que les pôles sont difficiles à traiter : 

                    - Quand on s'approche des pôles, 'le rectangle' dessiné par 2 méridiens et 2 parallèles ressemble de moins en moins à un rectangle, et de plus en plus à un triangle. 

                    - La terre est aplatie aux poles, elle n'est pas exactement sphérique.

                    Aucun de ces 2 problèmes n'est pris en compte dans les formules simples que je propose, mais c'est totalement marginal, tant qu'on est sur des zones habituelles (pas au delà des 2 cercles polaires par exemple).

                    Si on est au-delà des cercles polaires, le problème 'terre non sphérique' peut générer des erreurs de quelques mètres ou dizaines de mètres', et le problème lié aux méridiens qui se rejoignent, il fait que les outils classiques donnent des résultats totalement faux !) 

                    Robun,

                    Je pense qu'il a besoin des longitudes min et max, comme pour dessiner un carré autour du point de départ.

                    Avec beaucoup d'outils, quand on a (x0,y0,x1,y1), (x0,y0, les coordonnées du coin n°1, x1,y1, les coordonnées du coin opposé), on demande à l'outil de tracer le cercle ou plutôt l'ellipse inscrite dans ce rectangle, et on obtient effectivement l'ellipse. Il a en fait uniquement besoin de dessiner les 2 diamètres de son cercle, et le cercle se complète de lui-même.

                    Le cercle qu'il va dessiner aura une équation de la forme : a(x-lg0)² + b(y-la0)²=r² , c'est une contrainte imposée par les outils utilisés.... et tant pis si en réalité, cette équation n'est pas réellement l'équation d'un cercle. C'est mon interprétation de la question.

                    Certes, le cercle dessiné par cette méthode ne sera pas réellement un cercle, une fois projeté sur la sphère terrestre, mais c'est complètement marginal.

                    Détaillons ce point .. pour le fun.

                    On a le point initial , restons sur (LA0=39.9690 ; LG0=-83.0114)

                    Pour se déplacer de 5km vers le nord ou vers le sud, il faut se déplacer de combien de degrés en latitude ?   5*360/40074=0.044917°

                    Pour avancer de 5km vers l'est ou vers l'ouest, il faut se déplacer de combien de degrés ?  5*360/(40074*cos(39.9690))=0.056219°

                    Ca, c'est bon. La seule impasse ici, c'est que la terre n'est pas tout à fait sphérique, elle est un peu aplatie aux poles. Mais on s'en moque totalement, sur la zone étudiée, ça soit se compter en millimètres au maximum.

                    Pour se déplacer de 5 km vers le nord est, on peut avancer de 4km vers le nord et de 3km vers l'est (4²+3²=5²)

                    Donc avancer de 4*360/40074=0.035934° vers le nord, on arrive à la latitude 39.9690+0.035934=40.00493°

                    Et là, il faut avancer de 3km vers l'est, c'est à dire  de 3*360/(40074*cos(40.00493))=0.033747°

                    Ca, c'est le bon calcul : A partir du point proposé en exemple, en se déplaçant de 0.035934° vers le nord et de 0.033747° vers l'est, on arrive à 5km du point de départ.

                    Et dans le cercle dessiné approximativement, on fait une impasse, et on dit qu'en se déplaçant de 0.035934° vers le nord et de 3*360/(40074*cos(39.9690))=0.033731° vers l'est , alors on se déplace de 5km.

                    0.033731° donné par l'approximation, contre 0.033747° avec le calcul précis. Quelques centimètres d'écart entre les 2 calculs. Totalement négligeable.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 mars 2021 à 12:11:16

                      CentreDordi a écrit:

                      Robun, non je ne cherche pas à tracer un cercle visuelle pour le client, mais oui je cherche à tracer un cercle (ou carré) pour la recherche d'utilisateur à proximité..

                      Ah, donc le vrai but n'est pas de tracer le cercle (pour ça il suffisait de le faire sur la carte) mais de savoir si un point donné est à plus ou moins de 5 km de la position de référence ? Un moyen est de le faire graphiquement, un autre est de le faire par le calcul.

                      On peut calculer la distance à partir des coordonnées (longitude, latitude), et on regarde si elle est inférieure ou supérieure à 5 km. Je connais la formule sur une sphère, mais sur de petites distances on peut même utiliser le théorème de Pythagore (on fait comme si le bout de Terre considéré est plat).

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Calculer un rayon de 5km pour le client

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      • Editeur
                      • Markdown