Partage
  • Partager sur Facebook
  • Partager sur Twitter

Carte de Mercator: passage de (lat,long) à x,y

Formule d'obtention de y

Sujet résolu
    18 août 2017 à 23:19:00

    Bonsoir, je fais un logiciel qui à besoin d'un planisphère (image 1366*690) sur lequel je veux tracer des cercles qui prennent en considération les distances réelles. Pour ce faire je veux pouvoir passer de la latitude et la longitude aux coordonnées en pixel. Pour la coordonnée x tout va bien mais les formules courantes pour la coordonnée y donnent n'importe quoi. Je ne sais pas si je les emploies mal ou si le résultat que j’obtiens quand je trace y(lat) est le bon, il n’empêche que je ne voie pas où est le soucis dans ce que j'ai fais (avec la deuxième fonction à cause du log je n'ai même pas la conversion pour toutes les valeurs de la latitude entre -90 et 90). Les formules que j'utilise sont celles de wikipedia https://fr.wikipedia.org/wiki/Projection_de_Mercator et voici les courbes (tracé python)
    • Partager sur Facebook
    • Partager sur Twitter
      22 août 2017 à 20:28:05

      Pourrais-tu mieux décrire le problème ? Par exemple tu pourrais expliquer ce que sont sensées représenter les courbes.

      En attendant, procède ainsi : choisis une donnée (longitude et latitude) où le programme ne marche pas. Fais les calculs sur le papier (avec une calculatrice). Si tu trouves une valeur (x, y) fausse, c'est que tu n'as pas compris l'algorithme : regarde-le jusqu'à ce que le calcul sur le papier donne un résultat correct, et éventuellement rectifie le programme. Si tu sais faire le calcul sur le papier mais que le programme donne un mauvais résultat, fais afficher tous les résultats intermédiaires du programme (toujours pour ce seul exemple de longitude et latitude) et compare-les aux résultats intermédiaires de ton papier : la première ligne où ça diverge, c'est celle où il y a la première erreur.

      • Partager sur Facebook
      • Partager sur Twitter
        25 août 2017 à 20:01:40

        Je vais être plus claire:

        Je veux trouver une fonction de [-90,90]x[-180,180] dans [0,image_x]x[0,image_y] c'est à dire passer de (lat,long) à (x,y) en pixel. Pour ce faire il existe une formule. Mon problème est que pour la conversion de la latitude, la fonction n'est même pas dans le bon ensemble de définition. Ce que j'illustre avec la courbe ci-dessus. De plus l'allure de la courbe semble illogique par rapport au problème (elle devrait être strictement monotone). Je cherche donc une précision sur la réelle utilité des fonctions que j'ai trouvé et des idées pour parvenir à mes fins avec ce problème.

        • Partager sur Facebook
        • Partager sur Twitter
          25 août 2017 à 20:39:48

          J'aurais aimé t'aider, parce que c'est un truc très classique. Mais comme j'ai les yeux fragiles et que ton code est difficile à lire, j'abandonne. C'est ballot.

          • Partager sur Facebook
          • Partager sur Twitter
            25 août 2017 à 22:21:01

            Clic droit-->afficher l'image ;-P

            Mon code n'est pas très utile dans le problème : c'est juste la fonction (mathématique) qui me pose problème. Si tu la connais n'hésite pas

            • Partager sur Facebook
            • Partager sur Twitter
              26 août 2017 à 17:17:31

              Je t'encourage une nouvelle fois à choisir un exemple et à faire les calculs à la main. C'est comme ça que tu finiras par comprendre. D'ailleurs si je voulais t'aider, c'est ce que je ferais, du coup je te laisse le faire (et je t'aide en te donnant cette méthode).

              Ce ne sont pas des paroles en l'air. Il y a deux ans, j'avais écrit un programme dessinant le ciel étoilé, donc utilisant une projection. Eh bien au début, ça donnait n'importe quoi. Je me souviens m'être un peu découragé : zut, comment je vais trouver l'erreur (si c'était juste une déformation, ça donnerait une piste, mais là c'était n'importe quoi ‒ et je crois que tu es confronté à la même difficulté). Car je sais qu'il y a deux façons de procéder :

              ‒ examiner le code jusqu'à découvrir l'erreur ;

              ‒ essayer de faire les calculs à la main pour comprendre ce qui s'est passé ;

              et je sais que la première méthode ne marche que dans mes rêves. J'ai donc utilisé la deuxième méthode et j'ai vite trouvé une erreur dans l'adaptation de l'algorithme.

              Donc tu as deux problèmes possibles : soit tu n'as pas le bon algorithme, soit tu l'utilises mal. Tu dois commencer par déterminer où est le problème.

              -
              Edité par robun 26 août 2017 à 23:26:46

              • Partager sur Facebook
              • Partager sur Twitter
                27 août 2017 à 0:04:44

                Si j'ai bien suivi, une carte de Mercator, c'est quand on représente le globe entier dans un rectangle.

                Donc les formules devraient être tout simplement du type :

                y = k*(lat+90)
                x = x*(long+180)
                



                • Partager sur Facebook
                • Partager sur Twitter
                  27 août 2017 à 13:31:25

                  C'est pas le but de toutes les cartes ? XD

                  Plus sérieusement, je ne connais aucune carte avec une formule comme ça. Même l'équirectangulaire, qui pourtant est pas mal dans le genre bourrin, a un cosinus qui se balade quelque part.

                  J'ai rien de mieux à ajouter à ce qu'a dit robun, par contre ton histoire de cercles aux distances réelles me fait un peu peur. C'est justement le principe de Mercator d'être conforme au niveau des angles mais d'être dégueulasse au niveau des distances. Alors c'est vrai que les cercles sont toujours des cercles mais quand tu vois la taille de l’Afrique par rapport au Groenland tu te poses des questions...

                  La plus belle que j'ai vue à ce jour c'est la Kavraiskiy VII, aussi bien esthétiquement qu'au niveau de la préservation des aires, mais c'est vrai qu'elle déforme un peu, o peut pas tout avoir.

                  Maintenant, le plus propre ce serait quand même une carte en 3D XD

                  -
                  Edité par tabouretBleu 27 août 2017 à 13:35:50

                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 août 2017 à 16:31:26

                    tbc92 : non, Mercator est bien plus compliqué que ça !

                    tabouretBleu : 

                    > Même l'équirectangulaire, qui pourtant est pas mal dans le genre bourrin, a un cosinus qui se balade quelque part.

                    Cela dit ce cosinus est constant, donc il est inclus dans le coefficient k de tbc92 (pour une carte entre -50° et +50°, le coefficient k sera égal à cos(25°) j'imagine). (Sauf que k intervient dans le calcul de x, pas de y, mais je crois que tbc92 a fait une faut de frappe.)

                    (Concernant les projections, je trouve aussi que celle que tu as indiquée est la meilleure pour représenter le globe complet. Aujourd'hui, je ne vois pas trop l'intérêt de Mercator. Par exemple je possède un « Atlas des mers et des océans » publié par Géo, donc fait pour le grand public, pas pour des navigateurs à l'ancienne, et toutes les cartes sont en Mercator, quelle misère : on ne peut pas apprécier les vraies différences de taille, on ne peut pas mesurer de distance à la règle... Par contre Franz98 a besoin de tracer des cercles, donc je pense qu'il a choisi Mercator en connaissance de cause.)

                    -
                    Edité par robun 27 août 2017 à 16:44:52

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 août 2017 à 21:18:21

                      Tout d'abord merci robin pour ton investissement ;)

                      Mon soucis n'est pas dans la programmation mais dans l'interprétation d'une formule qui est donnée par wikipédia (et reprise partout) alors qu'elle donne des résultats que je ne sais pas interpréter. Du moins pour la latitude (pour la longitude tout va bien).

                      En effet les cartes de Mercator ne sont pas faites pour bien évaluer les distances, mais c'est justement ce problème que je veux contourner en tracent sur commende (j'ai déjà terminée la GUI du programme) des cercles, par exemple pour mieux réaliser les rayons d'action d'avions...ou l'isolation d'une région...

                      Si je ne présente pas de calculs faits à la main c'est que je présente directement les courbes qui apportent plus d'informations sur la fonction concernée. Je précise que le code python est juste (j'ai vérifié à la main) mais c'est la fonction qui est sans doute inadaptée (domaine de définition qui ne couvre pas tous les angles, périodicité indésirable... )

                      Enfaite je vais être plus directe dans ma question: existe-t-il une fonction qui pour une latitude donnée, avec en paramètres la taille de la carte de mercator complète donne la position y d'un point ?Comme wikipédia prétend avoir la réponse(celle qui me donne la courbe initiale), pourquoi ne convient-elle (apparemment) pas?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 août 2017 à 23:35:14

                        > Mon soucis n'est pas dans la programmation mais dans l'interprétation d'une formule [...]

                        Dans ce cas, fais ce que j'ai dit.

                        Choisis un lieu terrestre de coordonnées (longitude, latitude). Calcule x et y à partir de l'algorithme. Tu trouves combien ?

                        Tiens, je vais faire ce boulot à ta place. Je vais calculer les y des latitudes 0°, 20°, 40°, 60° et 80° (ça permettra de tracer les parallèles). Bien sûr, x sera égal à 0.

                        Je reprends la formule de Wikipédia :

                        \[ y = \ln \left( \tan \left( \frac{\pi}{4} + \frac{\varphi}{2} \right) \right) \]

                        Comme je fais les calculs avec ma calculatrice, je convertis tout en degrés. La formule pour x est : \( x = \lambda - \lambda_0 \), donc une valeur de 1 correspond à 1 radian, aussi pour avoir une valeur en degrés, je multiplierai le résultat par \( 180/\pi \).

                        Pour 0° ça donne : \( y = \ln ( \tan(45°) ) = 0. \)

                        Pour 20° ça donne : \( y = \ln ( \tan(55°) ) \) = 0,356 rad = 20,4° (légère dilatation vers le haut).

                        Pour 40° ça donne : \( y = \ln ( \tan(65°) ) \) = 0,763 rad = 43,7° (ah, ça commence à un peu plus dilater).

                        Pour 60° ça donne : \( y = \ln ( \tan(75°) ) \) = 1,313 rad = 75,5° (forte dilatation).

                        Pour 80° ça donne : \( y = \ln ( \tan(85°) ) \) = 2,436 rad = 139,6° (de -85° à +85°, la carte sera presque aussi haute ‒ 279° ‒ que large ‒ 360°.)

                        Tout ça me semble correct (car c'est ce à quoi je m'attendais). Est-ce que tu arrives à trouver ces valeurs ?

                        >  je veux contourner en tracent sur commende (j'ai déjà terminée la GUI du programme) des cercles, par exemple pour mieux réaliser les rayons d'action d'avions...ou l'isolation d'une région...

                        Attention, les cercles sur la sphère seront en effet des cercles sur la projection de Mercator, mais le centre des vrais cercles ne sera pas le centre des cercles projetés. Ainsi, pour tracer les cercles projetés, il ne suffira pas de connaître le rayon du (vrai) cercle, car l'échelle étant variable, ce rayon n'aura pas la même longueur en haut et en bas du cercle (d'où le décentrage).

                        ----------

                        Comment tracer un rayon d'action ? Voilà un problème intéressant ! J'estime qu'il faut le traiter indépendamment de la projection choisie, car aucune projection, il me semble, ne permet de résoudre ce problème en traçant un cercle de rayon donné (si la projection est conforme ‒ un cercle est un cercle ‒ alors elle dilate les échelles et on a le problème que j'exposais plus haut, et si elle est équidistante, elle n'est pas conforme donc il faudra tracer des ellipses...)

                        But : trouver une liste de points (longitude, latitude) situés tous à une distance donnée d'un point central. Une fois la liste de points trouvée, on calculera leur position sur la carte à l'aide d'une projection quelconque et on reliera les points.

                        Ici je note l les longitudes et b les latitudes. Je suppose la Terre parfaitement sphérique.

                        La distance D entre un point (l, b) et un point (L, B) est donnée par la formule :

                        \[ \cos(D) = \sin(b) \sin(B) + \cos(b) \cos(B) \cos(l-L). \]

                        C'est une distance angulaire. Si elle est exprimée en radians, il faudra multiplier par le rayon de la Terre pour la convertir en distance (rayon = 6378,14 km).

                        Dans notre problème, D est donné, donc cos(D) aussi, c'est une constante. Ah...

                        → Le cercle cherché coupe le méridien du point central aux latitudes B-D et B+D (près des pôles ça peut être un peu plus compliqué). On va donc balayer les latitudes de B-D à B+D et chercher la longitude.

                        Algorithme :

                        D est donné en angle.
                        
                        Pour b = B-D à B+D faire :
                            Résoudre l'équation sin(b) sin(B) + cos(b) cos(B) cos(l-L) = cos(D)
                            où l'inconnue est l.
                        

                        Solutions de l'équation :

                        \[ \cos(l-L) = \frac{\cos(D) - \sin(b)\sin(B)}{\cos(b)\cos(B)} \]

                        c'est-à-dire :

                        \[ l = L \pm \arccos \left( \frac{\cos(D) - \sin(b)\sin(B)}{\cos(b)\cos(B)} \right) \]

                        Et il y aura deux solutions (logique : une à gauche et une à droite).

                        Je pronostique que la fraction est comprise entre -1 et 1 si et seulement si la latitude est comprise entre B-D et B+D.

                        (Mais si on est proche d'un pôle d'une distance inférieure à D, c'est plus compliqué.) (Après réflexion, je crois qu'il suffit d'aller de Max{B-D, -90°} à Max{B+D, +90°}.)

                        -
                        Edité par robun 29 août 2017 à 3:16:11

                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 août 2017 à 0:14:14

                          Ouf... je crois que quelqu'un mérite qu'on lui paye une bière.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            29 août 2017 à 8:18:11

                            La nuit portant conseil, je me suis rendu compte qu'on peut s'en sortir avec la projection de Mercator malgré l'inconvénient du décentrage du cercle. Je reprends mes notations (le point central a pour coordonnées (L, B) et le rayon du cercle est D).

                            On calcule la position, sur la carte, des points haut (L, B+D) et bas (L, B-D). Alors le centre du cercle sur la carte est le milieu du segment, et son rayon est la demi-longueur du segment. Ce qui permet de tracer le cercle. C'est quand même plus simple que la méthode que j'imaginais hier soir ! (*)

                            Sauf si on est trop proche d'un pôle (au point que le cercle l'entoure), là je ne vois pas trop bien comment ça va se passer.

                            ------

                            (*) Laquelle garde son avantage de ne pas dépendre de la projection.

                            -
                            Edité par robun 29 août 2017 à 8:19:12

                            • Partager sur Facebook
                            • Partager sur Twitter
                              29 août 2017 à 10:10:16

                              Merci robun ! (En effet ça serait bien un système d'offre de bières sur ce site^^)

                              Je comprends désormais que mon erreur vient du passage trop rapide (dans mes recherches) aux coordonnées en pixel...ce qui me permettait seulement de voir que mes résultats étaient faux; je sais maintenant que ça vient du fait que je ne m'attendais pas à obtenir un angle par ln(tan(...)).

                              Du coup cette formule donne pour une latitude  l'angle "équivalent" selon l'échelle de la longitude si j'ai bien compris.

                              Pour le tracer des "cercles", ton premier message est intéressant (il me rappel des cours de SI...) mais je comptais sur une idée bien plus simple: créer une liste de points d'un vrai cercle en pixels (en considérant l'échelle des longitudes), puis l'étirer en faisant passer la coordonnée y par cette fameuse fonction dont nous avons parlé.

                              Je vais tester tout ça et je vous fais part des résultats ;)

                              • Partager sur Facebook
                              • Partager sur Twitter
                                30 août 2017 à 12:47:33

                                J'ai codé un beau truc pour tester tout ça ;) Et le résultat est super!

                                Par contre c'est un peu plus compliqué que ce que je pensais...j'ai eu besoin d'utiliser la réciproque, de calculer de nouvelles variables ...Le code est assez simple donc autant le mettre plutôt que des formules: (le sujet étant mathématique je ne présente que les fonctions de modifications des points d'un cercle)

                                Pour info la circonférence de la Terre est 40075km et l'image mesure 960x814 px donc le 407 c'est un size_y/2 flemmard ;)

                                def f(lat):            #fonction de wikipédia
                                    phi=lat*np.pi/180  #passage en radian
                                    l= np.log(np.tan((np.pi/4)+(phi/2)))
                                    return l*180/np.pi #retour en degré
                                
                                def f_rec(lat): #fonction réciproque
                                    l=lat*np.pi/180
                                    phi=2*np.arctan(np.exp(l))-(np.pi/2)
                                    return phi*180/np.pi
                                
                                #cercle est une fonction qui renvoie une liste des points d'un cercle de rayon 100. point est un point quelconque de ce cercle
                                #alpha est -pour un point donné- la distance du point à l'axe horizontal passant par le centre du cercle exprimée en degré (selon l’échelle horizontale). ex: le point le plus haut d'un cercle de rayon 1670 km aura un alpha de 360/24=15 degrés.
                                
                                def point_lat(r,point,y,size_y): #calcule de alpha
                                    alpha=((r*point[1]/100)/40075)*360
                                    return calcul(alpha,y,size_y)
                                
                                #on arrive au conceptuel,
                                #y_fictif est la coordonnée y du centre du cercle en degré selon l'échelle horizontale. Entre -152.625° et 152,625°
                                #y_réel est la conversion en latitude par la réciproque de f. Entre -90° et 90°
                                #y_fictif total est la latitude selon l’échelle des longitudes de la position verticale en degré du centre du cercle plus la "hauteur du point." (alpha). Entre -152.625° et 152,625°
                                #finalement on convertit cette position angulaire en coordonnée en pixel.
                                def calcul(alpha,y,size_y):
                                    y_fictif=((407-y)/407)*((360*407)/960)
                                    y_reel=f_rec(y_fictif)
                                    y_fictif_total=f(y_reel+alpha)
                                    if y_fictif_total>=(360*(size_y/2))/960:
                                        a=0#cas à peut-être traiter
                                    return (size_y/2)*(1-(y_fictif_total/((360*(size_y/2))/960)))


                                Et voici le rendu: (un carreau correspond à 1670km environ)

                                -
                                Edité par Franz98 30 août 2017 à 14:07:09

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  30 août 2017 à 14:19:16

                                  Ah, zut, ce ne sont pas des cercles mais des sortes d'œufs. La projection conserve les angles mais pas les formes globales, j'aurais pu m'en douter en voyant la tronche du Groënland ou de l'Amérique du Nord (quoique). Si j'ai bien compris, tu définis d'abord un cercle sur la sphère (liste de points). C'est bien un cercle sur la sphère, pas un cercle sur un plan ?

                                  -
                                  Edité par robun 30 août 2017 à 18:34:02

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    30 août 2017 à 14:34:59

                                    C'est plus lisible quand on voit les indicateurs de Tissot en même temps

                                    C'est pour ça que ça me choquait de choisir Mercator pour ça plutôt que des cartes plus équilibrées qui ont le même défaut, mais localement les cercles sont conservés, ce qui est une bonne propriété quand même.

                                    Kavraisky pour comparaison (je dis ça, je dis rien :p )

                                    -
                                    Edité par tabouretBleu 30 août 2017 à 14:49:03

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      30 août 2017 à 16:15:25

                                      Oui ce sont des cercles de la sphère si je vois bien ce que tu entends par la.

                                      Je redétaille juste la construction du cercle: je défini un cercle dans un plan de rayon 100 (mais ça peut être autant que je veux) avec cette fonction: En gros je balaye [0,2pi] et je fais une liste de points (r*cos(a),r*sin(a)).

                                      Puis pour la coordonnée x je passe directement à la longitude avec une relation proportionnelle: (soit x_cercle la première coordonnée du centre du cercle) x_cercle+(rayon*rap*point[0]/100) avec rap le rapport size_x/40075

                                      Pour la coordonnée y je fais comme si c'était une latitude mais avec le même lien de proportionnalité que pour les longitudes. Je calculde donc alpha.

                                      Puis j'ajoute cette 'hauteur' d'un point du cercle à la position 'virtuelle' du centre du cercle (obtenue avec la réciproque de f) et je recalcule la position -qui prends en considération l’échelle de Mercator- de chaque point du cercle. L'astuce du calcule est dans l'utilisation de la réciproque pour que le cercle ce retrouve à la bonne place (sinon les cercles sont déplacés avec l'élongation de l'échelle...:-°)

                                      tabouretBleu: celle de Mercator est la seule carte à conserver le parallélisme dont j'ai aussi besoin...et j'ai besoin de pouvoir aussi estimer les distances, en l’occurrence pour des rayons d'actions...(au cas où je rappel que les indicateurs de Tissot ne sont pas 'réellement' des cercles). Mercator est utile pour la navigation mais ils devaient bien s'amuser pour les distances avec des tables logarithmiques.

                                      Désormais j'ai aussi réalisé un moyen de connaître la latitude exacte d'un point d'une carte localisée en pixel. Ce qui peut aussi être utile dans un programme comme le mien...

                                      -
                                      Edité par Franz98 30 août 2017 à 16:18:17

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        30 août 2017 à 18:03:25

                                        Et pour ceux (comme moi) qui ne connaissaient pas les indicateurs de Tissot, et qui passeraient par là, sur les 2 cartes de TabouretBleu, les ronds permettent de visualiser les déformations. Sur la première carte, comme sur la 2ème, tous les ronds représentent des zones de même taille : même taille sur le globe, mais pas sur la représentation à cause de la projection.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          30 août 2017 à 18:35:34

                                          Ah, donc les cercles doivent être conservés ! Donc il y a un problème quelque part puisque Franz98 obtient des espèces d'« œufs » ?

                                          -----------

                                          Ce que j'appelle une cercle sur une sphère, c'est l'ensemble des points qui sont à la même distance sphérique du centre, et non pas à la même distance spatiale. C'est-à-dire que la distance est comptée à vol d'oiseau, en suivant la courbure du globe, et non pas directement en 3-D, quitte à creuser à l'intérieur. Ainsi, la distance d'un pôle à l'autre est de 20.000 km et non pas 12.756 km. J'ai lu en diagonale ton dernier message, mais j'ai peur que tu aies défini des cercles de la mauvaise manière.

                                          > Pour la coordonnée y je fais comme si c'était une latitude mais avec le même lien de proportionnalité que pour les longitudes.

                                          Du coup j'ai l'impression que les cercles sont définis à partir, non pas du globe terrestre, mais d'une projection rectangulaire où les longitudes et latitudes ont même échelle. Mais je n'ai peut-être pas bien compris ? (Tu utilises des cosinus et des sinus ? Si non, c'est suspect...)

                                          > et j'ai besoin de pouvoir aussi estimer les distances, en l’occurrence pour des rayons d'actions...

                                          Ne mesure pas les distances sur la projection, l'échelle est variable ! Les distances doivent être mesurées à partir de la longitude et de la latitude à l'aide de la formule que j'ai donnée l'autre jour.

                                          -
                                          Edité par robun 30 août 2017 à 18:43:20

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            30 août 2017 à 18:47:03

                                            Si ça t'intéresse il y a un très beau site qui permet de regarder différentes projections, d'afficher différents indicateurs et de comparer des cartes

                                            http://www.map-projections.net/singleview.php

                                            Effectivement, c'est l'aire des cercles qu'il faut regarder. Une carte qui respecte bien les aires et que je trouve jolie c'est la Wagner IV. On voit bien que les continents sont étirés dans un sens ou dans l'autre mais le poids est correct. Je pense que si on avait grandi avec des cartes comme ça, on en aurait moins rien à foutre de l'Afrique par exemple. J'ai tendance à vouloir pousser ce genre de carte mais la plupart des clients ne s'y retrouvent pas et demandent la carte Google Maps...

                                            -

                                            Robin, tu crois que c'est seulement possible d'avoir des cercles arbitrairement grands qui ont une tête de cercle sur la projection ? Quelle que soit la projection d'ailleurs ? Mon intuition me crie que non.

                                            -
                                            Edité par tabouretBleu 30 août 2017 à 18:51:00

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              30 août 2017 à 20:03:34

                                              Super ce site tabouretBleu :) d’ailleurs l'equirectangular(0°) m'interpelle, elle m'a l'aire trop parfaite il doit y avoir un truc tordu!

                                              >Ah, donc les cercles doivent être conservés ! Donc il y a un problème quelque part puisque Franz98 obtient des espèces d'« œufs » ?

                                              Non on ne doit surement pas obtenir des cercles! Un carré donne un rectangle donc non. De plus mais aires sont bonnes en "aire réelles".

                                              > Pour la coordonnée y je fais comme si c'était une latitude mais avec le même lien de proportionnalité que pour les longitudes.

                                              Cette phrase est une tentative (ratée) pour expliquer avec des mots le code que j'ai publié aux dessus de mes images. Je vais faire des exemple ça sera plus compréhensible:

                                              -
                                              Edité par Franz98 30 août 2017 à 21:17:36

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                30 août 2017 à 20:26:58

                                                tabouretBleu a écrit:

                                                Robin, tu crois que c'est seulement possible d'avoir des cercles arbitrairement grands qui ont une tête de cercle sur la projection ? Quelle que soit la projection d'ailleurs ? Mon intuition me crie que non.

                                                Je ne sais pas. Mais je viens de trouver un raisonnement qui prouve qu'un cercle sur la sphère n'est pas un cercle sur la projection de Mercator : on trace un cercle avec deux diamètres perpendiculaires, un selon les longitudes et un selon les latitudes ; Mercator conserve les angles donc ces deux diamètres doivent rester perpendiculaires entre eux, et perpendiculaires aux tangentes du cercle ; comme les deux rayons verticaux (en latitude) n'ont pas la même distance, on ne peut pas avoir de cercle mais en effet une sorte d'œuf comme Franz98 a trouvé ‒ du coup ce soir je lui fais confiance.

                                                ---------------

                                                > Un carré donne un losange donc non

                                                Ça existe, un carré sur une sphère ?

                                                -
                                                Edité par robun 30 août 2017 à 20:28:48

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  30 août 2017 à 21:30:11

                                                  J'ai changé dans mon message je voulais dire "un carré donne un rectangle" :-°, c'est-à-dire la projection de la surface délimitée par le même écart de latitude et de longitude donne en projection de Mercator un rectangle. Ca rejoint exactement ton raisonnement sur les diamètres.

                                                  Il est sur qu'un cercle devient un 'œuf' c'est pour ça que j'ai précisé plus haut que les apparents cercles (qui en sont je crois, ou alors ils sont peut-être trop petits pour que les déformations soient significatives) des indices de Tissot montrent par leur taille l'importance de la déformation en une certaine latitude mais pas la déformation d'un cercle tout entier.

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    30 août 2017 à 21:50:50

                                                    Attention, la surface délimitée par le même écart de longitude et de latitude n'est ni un carré ni un rectangle. Elle l'est dans certaines projections, mais pas sur le globe terrestre.

                                                    C'est pour ça que j'ai peur que tu fasses une confusion avec la définition d'un cercle. L'ensemble des points qui sont situés à une distance donnée d'un point central est un cercle défini sur une sphère (à partir de la distance calculée sur une sphère), pas un cercle défini sur un plan.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      30 août 2017 à 22:47:23

                                                      C'est vrai que la rigueur voudrait que je face attention à mon vocabulaire, mais c'est un peu lourd dans mes explications de parler de  "la surface délimitée par le même écart de longitude et de latitude";) je m'en excuse et tu as très bien fais de me faire la remarque.

                                                      En pratique lorsque je veux tracer un rayon d'action, je ne fais à aucun moment une projection, c'est pour ça que je n'ai pas besoin de me soucier de ce que j'ai avant mon cercle (de rayon 100) que je ne fais qu'adapter pour qu'il conserve ses propriétés (l'équidistance) en fonction de sa position.

                                                      Si désormais je résonne dès la projection, dans tous les cas les points de la sphère à équidistance d'un centre formeront dans la projection un cercle  car: Si j'imagine l'intersection d'une sphère avec un plan (je récupère les points équidistants d'un centre), le cercle ainsi dessiné sur la sphère coupera des longitudes et latitudes. Si je garde en tête ces points d'intersections et que je fais une projection de Mercator, les écarts de longitude entre les points sont les mêmes que les écarts sur la projection. Seuls les écarts de latitudes sont amplifiés par l'échelle croissante des latitudes, vraiment on se convainc qu'on obtient un œuf.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        30 août 2017 à 23:25:54

                                                        > Ça existe, un carré sur une sphère ?

                                                        Bah c'est une bonne question. En prenant une définition large, si tu peux visualiser un triangle sphérique (3 grands cercles à 90°), c'est pas facile d'imaginer un carré et j'ai envie de répondre non.

                                                        D'un autre côté, en topologie tu peux représenter une sphère par un genre de carré élastique qui boucle sur lui-même (contrairement à pacman, le bord haut mène au bord gauche et pas au bord bas), donc n'importe quelle forme 2D bornée devrait exister sur une sphère.

                                                        À noter qu'aucune de ces "définitions" ne ressemble à ce à quoi on pense quand on imagine un carré posé sur la surface de la Terre, sphérique :p

                                                        Concernant le cercle sur une sphère, il me semble que les physiciens travaillent mathématiquement sur des boules à facettes avec des facettes très petites quand ils doivent considérer des points au voisinage d'un autre point, parce que c'est casse noix de faire ça sur une vrai sphère. Ça n'a pas l'air évident.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          30 août 2017 à 23:28:47

                                                          > Si j'imagine l'intersection d'une sphère avec un plan (je récupère les points équidistants d'un centre), le cercle ainsi dessiné sur la sphère coupera des longitudes et latitudes.

                                                          Ah, c'est comme ça que tu procèdes ? OK. Mais n'oublie pas que le cercle obtenu par cette intersection n'a pas le même diamètre que le cercle d'origine (son diamètre est légèrement inférieur, à cause de la courbure du globe terrestre).

                                                          > vraiment on se convainc qu'on obtient un œuf.

                                                          Oui, j'en suis convaincu aussi. Mais je ne suis pas convaincu que tu traces le bon ensemble. Mais bon, je ne veux pas te faire perdre du temps, et peut-être que c'est parce que j'ai mal compris ta technique.

                                                          -------

                                                          (Question hors-sujet mais intéressante)

                                                          Je crois avoir une démonstration de l'inexistence d'un carré sur la sphère. Un carré est un losange (quatre côtés de même longueur) droit (tous les angles sont droits). Je veux tracer un carré ABCD. Donc je commence par tracer AB. AB est un segment appartenant à un grand cercle, que je décide de nommer l'équateur (je le nomme comme je veux). La longueur AB, c'est la longueur de l'arc d'équateur. Pour tracer C, je dois partir à angle droit, donc en suivant un méridien (les méridiens sont les grands-cercles qui coupent l'équateur à angle droit). J'ai deux choix possibles, un par hémisphère (l'équateur délimite deux hémisphères). Mettons que j'en choisisse un. Je place C sur le même méridien que B, et de façon que la différence de latitude BC soit égale à la différence de longitude AB. De même je place D sur le même méridien que A avec deux choix possibles.

                                                          Si C et D sont sur le même hémisphère, en les rejoignant j'obtiens un trapèze droit ‒ droit par rapport à ses quatre angles (ça n'existe pas dans le plan où un trapèze ne peut être droit que pour trois angles au plus). Mais ce n'est pas un carré car, nécessairement, la distance CD est inférieure à AB (elle tend vers zéro quand on s'approche du pôle). [Attention : (CD) n'est pas un parallèle mais un arc de grand cercle.]

                                                          Si C et D ne sont pas sur le même hémisphère... Ah, zut, je n'arrive pas à prouver que c'est impossible (avec des petites distances, ça a l'air trivial, mais si A et B sont séparés de 120° par exemple, j'ai du mal à visualiser...)

                                                          Tant pis, pas le temps d'approfondir.

                                                          -
                                                          Edité par robun 30 août 2017 à 23:43:41

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            30 août 2017 à 23:41:11

                                                            robun a écrit:

                                                            Ah, donc les cercles doivent être conservés ! Donc il y a un problème quelque part puisque Franz98 obtient des espèces d'« œufs » ?

                                                            -----------

                                                            Ce que j'appelle une cercle sur une sphère, c'est l'ensemble des points qui sont à la même distance sphérique du centre, et non pas à la même distance spatiale. C'est-à-dire que la distance est comptée à vol d'oiseau, en suivant la courbure du globe, et non pas directement en 3-D, quitte à creuser à l'intérieur. Ainsi, la distance d'un pôle à l'autre est de 20.000 km et non pas 12.756 km. J'ai lu en diagonale ton dernier message, mais j'ai peur que tu aies défini des cercles de la mauvaise manière.

                                                            Si des points forment un cercle à la surface de la terre, "en utilisant les distance à vol d'oiseau", alors ils forment aussi un cercle en utilisant la distance "via des tunnels". Et inversement. Pourquoi faire la distinction ?

                                                            Des carrés sur la surface d'une sphère ? Oui, pas de difficulté : les points (10,1,1), (10,1,-1), (10,-1,-1), (10,-1,1) forment un carré à la surface de la sphère de centre O et de rayon ...  Par contre, un pavage constitué de carrés, effectivement, non.

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              31 août 2017 à 0:04:47

                                                              > Si des points forment un cercle à la surface de la terre, "en utilisant les distance à vol d'oiseau", alors ils forment aussi un cercle en utilisant la distance "via des tunnels". Et inversement. Pourquoi faire la distinction ?

                                                              Parce que selon la définition ils n'ont pas le même diamètre ! (*) Le but de Franz98 est de tracer l'ensemble des points qui sont à une certaine distance (terrestre) d'un certain point, donc il doit tracer des cercles en géométrie sphérique, pas des cercles dans le plan ou l'espace.

                                                              > les points (10,1,1), (10,1,-1), (10,-1,-1), (10,-1,1) forment un carré à la surface de la sphère de centre O et de rayon ... 

                                                              Ah non, ce n'est pas un carré à la surface du globe mais un losange (sur la sphère, les angles des coins sont supérieurs à l'angle droit). C'est seulement un carré dans l'espace.

                                                              ------

                                                              (*) L'ensemble des points situés à 10.000 km du pôle nord est l'équateur. C'est donc un cercle de 10.000 km de rayon (sur la sphère). Dans l'espace, il ne fait que 6.370 km de rayon.

                                                              -
                                                              Edité par robun 31 août 2017 à 0:08:35

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Carte de Mercator: passage de (lat,long) à x,y

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown