J'essaie de calculer la distorsion afin de pouvoir déformer le texte et les formulaires superposés pour correspondre précisément à une image d'une projection équirectangulaire.
Alors, comment calculer la distorsion à une latitude donnée sur une projection équirectangulaire au 1: 45 000 000 (disons 2000 pixels de large x 1000 pixels de haut)?
J'ai essayé de comprendre ce message et ses liens en vain: Comment créer un Indicatrix Tissot précis?
Je ne suis pas un professionnel, juste un amateur très intéressé, alors je vous en prie!
Merci beaucoup!
Merci pour les réponses rapides! Voici la longue histoire; J'espère que c'est plus clair.
Je visualise / mappe des données à l'aide du langage de programmation de traitement et j'aimerais que les données mappées 2D (polices et cercles de tailles différentes) apparaissent sans distorsion lorsqu'elles sont enveloppées dans un globe 3D. Les données sont mappées en utilisant des x, y équirectangulaires et les cartes que je veux utiliser comme toile de fond sont toutes ces projections, donc je suppose que je veux "faire correspondre" cette distorsion (par exemple en calculant la distorsion via la latitude en utilisant les équations de Tissot?). En utilisant le langage de programmation, je peux déformer avec précision le texte et les cercles. Je pense que tout ce dont j'ai besoin, ce sont les équations pour le faire correctement.
Voici la carte de données 2D originale:
Une fois enveloppé, il semble déformé, comme ceci:
La question à 10 000 $: Comment puis-je donner à mon image 2D une apparence non déformée lorsqu'elle est enveloppée dans la sphère 3D?
Pour référence, voici la même question posée différemment sur le forum Processing.
Merci encore!
Si je vous comprends bien, je ne suis pas sûr de vouloir reprojeter à une projection orthographique. Je souhaite que ma carte de données 2D soit enveloppée dans un modèle de sphère 3D avec lequel il est possible d'interagir (c'est-à-dire tourné).
J'utilise un programme de modélisation 3D (Cinema 4D) pour envelopper une sphère avec une image "Blue Marble" de 2 Mo (projection équirectangulaire) de la NASA.
Une fois enveloppé, il n'apparaît pas déformé de tous les hémisphères (pas seulement d'un hémisphère, comme le serait une projection orthographique?), Voir: toujours à partir du modèle 3D ci-dessus. (Le programme de modélisation fait la projection orthographique pour moi lorsque je fais pivoter l'objet, je suppose.) Par conséquent, je pense que si je déforme ma carte de données 2D de la même manière, elle apparaîtra également sans distorsion sur la sphère 3D. Voici une photo que j'ai prise avec une équation qui se rapproche de la distorsion équirectangulaire. Vous remarquerez que les ellipses en forme d'oeuf de l'image 2D ressemblent à un cercle lorsqu'elles sont enveloppées dans la sphère 3D. De même, les ellipses de Tissot apparaissent également sous forme de cercles sur la sphère 3D.
C'est pourquoi je regardais les équations de Tissot ... pour déterminer plus précisément la distorsion de la projection équirectangulaire à différentes latitudes afin de pouvoir déformer ma superposition en conséquence.
J'espère que tout cela a du sens.
Vous avez peut-être raison de dire que je devrais utiliser un programme SIG. Je viens de télécharger Cartographica et je verrai si je peux le découvrir. Des suggestions de logiciels Mac pour un débutant entreprenant cette tâche?
Merci encore.
la source
Réponses:
Les coordonnées de l'image sont la latitude et la longitude, vous pouvez donc
a) Déprojetez-le et reprojetez-le à l' aide d'une projection orthographique ou verticale proche (c'est-à-dire des projections qui ressemblent au monde depuis l'espace) ou
(b) Texture-mappez-le sur un modèle 3D d'une sphère en utilisant lat-lon comme coordonnées de texture et affichez cette sphère avec un dispositif de rendu graphique 3D.
La plupart des SIG le font (a) régulièrement. Pour illustrer (b), voici un ensemble d'images dérivées de la carte "plate" dans la question prise d'un point de vue en orbite autour de la sphère cartographiée par texture:
(Si vous regardez attentivement l'image la plus à droite, vous pouvez voir un méridien proéminent à travers l'océan Pacifique: c'est la "couture" formée en enveloppant les côtés gauche et droit de la carte ensemble.)
La commande de base de Mathematica pour produire l’une d’elles est
Cela réduit le problème d'origine (de dessiner des "cartes de données" sur une sphère) à générer une carte qui montre correctement les cercles. La meilleure projection pour cela est la stéréographie, car elle projette tous les cercles de la sphère - quelle que soit leur taille - en cercles sur la carte. Ainsi, une procédure pour dessiner correctement de grands cercles dans une projection équirectangulaire , comme indiqué dans la question, consiste à les créer dans une projection stéréographique puis à les dé-projeter en coordonnées géographiques (lat, lon). L'utilisation de (lon, lat) comme coordonnées cartésiennes (x, y) pour créer la carte équivaut à la projection équirectangulaire et convient donc pour le mappage de texture sur la sphère ou pour appliquer une projection orthographique.
Notez que les indicatrices de Tissot ne conviennent pas comme solution: elles ne représentent que des distorsions locales de cercles infinitésimaux . Les cercles suffisamment grands pour être vus à l'échelle mondiale n'apparaîtront même plus circulaires dans la plupart des projections: voyez leur apparence blob dans la carte de la question. C'est pourquoi jouer à des jeux avec des projections, comme indiqué ici, est essentiel à une bonne solution.
la source
En supposant que les formes dessinées couvrent une petite partie de la sphère, vous devriez pouvoir vous en tirer avec une échelle de 1 / cos (lat) et en laissant la hauteur seule.
Plus la forme est grande et plus vous vous rapprochez des pôles, moins cela fonctionnera bien.
la source
Je ne sais pas comment ajouter un commentaire, je vais donc mettre cela dans la solution et laisser les modérateurs se démener pour comprendre pourquoi je ne peux pas commenter.
Ma première impression en lisant votre question était "Pourquoi ne concevez-vous pas vos cercles dans une projection conforme comme Mercator". Vous pouvez projeter cette carte dans une projection Mercator et voir votre cercle et la distorsion du texte, tout corriger pour être joli et lorsque vous la projetez sur votre globe, les formes doivent rester correctes (c'est la définition d'une projection conforme).
la source
Vous voyez, votre première carte 2D n'a pas d'entités géographiques dessinées. Ajoutez-les à cette carte (par exemple contour d'Afrique) et appliquez la distorsion à laquelle vous pensez à tout à la fois. La géographie deviendrait également modifiée, et lorsque vous la mettriez sur la sphère, ce serait faux. Par conséquent, je pense que cette idée d'avoir une certaine distorsion appliquée ne fonctionnerait pas.
Vous pouvez vous débrouiller en 2D, en dessinant des graphiques dans de petites cartes 2D qui ont une zone limitée et une distorsion acceptable. Vous pouvez couper votre carte 2D en tuiles et pour chaque tuile utiliser sa propre "meilleure" projection.
D'un autre côté, il est facile de créer des points sur un cercle géodésique de rayon donné sur la carte 2D. Pour cela, vous devez trouver une fonction qui calcule le lat / long d'un point à une distance donnée et l'azimut d'un autre point (recherchez "problème direct Vincenty"). Une fois que vous avez obtenu cela, vous pouvez générer un tas de points équidistants à une distance donnée du point en changeant l'azimut de 0 à 360. La création d'un polygone à partir de ces points en 2D nécessite plus de travail lorsque le cercle géodésique contient un pôle ou intersecte limite gauche ou droite de la carte. Découvrez à quoi peuvent ressembler les cercles géodésiques sur une carte plate ici .
la source