¿Cómo se calcula la distorsión en la proyección equirectangular?

28

Estoy tratando de calcular la distorsión para poder distorsionar el texto superpuesto y los formularios para que coincidan con precisión con la imagen de una proyección equirrectangular.

Entonces, ¿cómo se calcula la distorsión en una latitud dada en una proyección equirectangular 1: 45,000,000 (por ejemplo, 2000 píxeles de ancho x 1000 píxeles de alto)?

He estado tratando de resolver esta publicación y sus enlaces en vano: ¿Cómo crear una Tissot Indicatrix precisa?

No soy un profesional, solo un aficionado muy interesado, ¡así que por favor muéstrenlo!

¡Muchas gracias!


Gracias por las prontas respuestas! Aquí está la larga historia; Espero que sea más claro.

Estoy visualizando / mapeando datos usando el lenguaje de programación Processing y me gustaría que los datos mapeados en 2D (fuentes y círculos de diferentes tamaños) aparezcan sin distorsión cuando se envuelvan en un globo 3D. Los datos se mapean usando x, y's equirrectangulares y los mapas que quiero usar como telones de fondo son toda esta proyección, por lo que supongo que quiero "igualar" esta distorsión (por ejemplo, ¿calculando la distorsión a través de la latitud usando ecuaciones de Tissot?). Usando el lenguaje de programación, puedo distorsionar con precisión tanto el texto como los círculos. Creo que todo lo que necesito son las ecuaciones para hacerlo correctamente.

Aquí está el mapa de datos 2D original:

ingrese la descripción de la imagen aquí

Cuando está envuelto se ve distorsionado, así:

ingrese la descripción de la imagen aquí

La pregunta de $ 10,000: ¿Cómo puedo hacer que mi imagen 2D se vea sin distorsión cuando se envuelve en la esfera 3D?

Como referencia, aquí está la misma pregunta hecha de manera diferente en el foro de procesamiento.

¡Gracias de nuevo!


Si te entiendo correctamente, no estoy seguro de querer volver a proyectar a una proyección ortográfica. Quiero que mi mapa de datos 2D se ajuste a un modelo de esfera 3D con el que se pueda interactuar (es decir, girar).

Estoy usando un programa de modelado 3D (Cinema 4D) para envolver una esfera con una imagen de "Mármol Azul" de 2MB (proyección equirectangular) de la NASA.

Cuando está envuelto, aparece sin distorsión de todos los hemisferios (¿no solo de un hemisferio, como lo sería una proyección ortográfica?), Vea: todavía del modelo 3D anterior. (Supongo que el programa de modelado está haciendo la proyección ortográfica para mí a medida que giro el objeto). Por lo tanto, creo que si distorsiono mi mapa de datos 2D de manera similar, también aparecerá sin distorsión en la esfera 3D. Aquí hay una foto que tomé con una ecuación que se aproxima a la distorsión equirectangular. Notarás que las elipses en forma de huevo de la imagen 2D se ven como un círculo cuando se envuelven en la esfera 3D. Del mismo modo, las elipses de Tissot también aparecen como círculos en la esfera 3D.

Tissot Indicatrix con círculos distorsionados Círculos distorsionados envueltos en una esfera 3D.

Es por eso que estaba mirando las ecuaciones de Tissot ... para descubrir con mayor precisión la distorsión de la proyección equirrectangular en diferentes latitudes para poder distorsionar mi superposición en consecuencia.

Espero que todo esto tenga sentido.

Quizás tengas razón en que debería usar un programa SIG. Acabo de descargar Cartographica y veré si puedo resolverlo. ¿Alguna sugerencia de software para Mac para un novato que realiza esta tarea?

Gracias de nuevo.

NCashew
fuente
1
¿Realmente te refieres a calcular la distorsión o realmente quieres saber cómo calcular la proyección en sí? Tal vez podría hacer que una imagen esté disponible en la Web para ilustrar lo que está tratando de lograr. Su uso de "coincidencia" sugiere que le gustaría determinar cómo transformar una imagen en otra, lo que indica que necesita especificar con qué está comenzando y con qué quiere terminar.
whuber
1
Entendemos que es difícil describir lo que quiere hacer sin conocer la jerga, pero parece que está tratando de describir el proceso en lugar del resultado. Trate de comenzar con un problema que desea resolver, a continuación, los resultados que desea, y vamos a tratar de llenar los vacíos :)
MerseyViking
En términos técnicos: desea reproyectar desde la proyección cilíndrica equidistante a un ortográfica ( "mundo desde el espacio") de proyección. ¿Qué software puedes usar? Si tiene un software SIG o está dispuesto a codificar contra una biblioteca de proyección, el trabajo básicamente está hecho para usted. De lo contrario, debe implementar las ecuaciones para desproyectar la proyección equirrectangular (fácil) y proyectar la proyección ortográfica (no demasiado difícil, pero requiere algunas habilidades para codificar rutinas numéricas).
whuber
1
Vi esta publicación y estoy tratando básicamente de hacer exactamente lo mismo. Quiero dibujar círculos 2D que se distorsionen correctamente cuando se proyectan en una esfera 3D. Me preguntaba si estaría dispuesto a compartir el algoritmo que utilizó para la distorsión de los círculos 2D. Realmente debería haber sido un comentario, no una respuesta, pero lo escribí en el lugar equivocado. Lo siento.
HankTurbo
Debes dibujar tus datos en el espacio 3D y luego proyectarlos nuevamente en la esfera.
AngelLeliel

Respuestas:

5

¿Cómo puedo hacer que mi imagen 2D se vea sin distorsión cuando se ajusta a la esfera 3D?

Las coordenadas de la imagen son latitud y longitud, por lo que

(a) Desproyecte y reproyecte usando una proyección ortográfica o vertical del lado cercano (es decir, proyecciones que se parecen al mundo desde el espacio) o

(b) Haga un mapa de textura en un modelo 3D de una esfera usando lat-lon como coordenadas de textura y visualice esa esfera con un dispositivo de representación de gráficos 3D.

La mayoría de los SIG hacen (a) rutinariamente. Para ilustrar (b), aquí hay un conjunto de imágenes derivadas del mapa "plano" en la pregunta tomada desde un punto de vista que orbita la esfera mapeada de textura:

Mundo desde el espacio

(Si observa de cerca la imagen más a la derecha, puede ver un meridiano prominente a través del Océano Pacífico: esta es la "costura" formada al unir los lados izquierdo y derecho del mapa).

El comando básico de Mathematica para producir uno de estos es

SphericalPlot3D[1, {a, 0, \[Pi]}, {b, 0, 2 \[Pi]}, Mesh -> None, 
 PlotStyle -> {Texture[i]}, TextureCoordinateFunction -> ({#5, -#4} &), 
 Lighting -> {{"Ambient", White}}, 
 Boxed -> False, Axes -> False, Background -> Black]

Esto reduce el problema original (de dibujar "mapas de datos" en una esfera) para generar un mapa que muestre círculos correctamente. La mejor proyección para esto es la Estereográfica, porque proyecta todos los círculos en la esfera, sin importar su tamaño, en círculos en el mapa. Por lo tanto, un procedimiento para dibujar círculos grandes correctamente en una proyección equirrectangular , como se muestra en la pregunta, es crearlos en una proyección estereográfica y luego desproyectarlos a coordenadas geográficas (lat, lon). Usar (lon, lat) como (x, y) coordenadas cartesianas para hacer el mapa equivale a la proyección equirrectangular y, por lo tanto, es adecuado para mapear texturas en la esfera o para aplicar una proyección ortográfica.


Tenga en cuenta que los indicadores de Tissot no son adecuados como solución: solo representan distorsiones locales de círculos infinitesimales . Los círculos lo suficientemente grandes como para ver a escala global ya no aparecerán circulares en la mayoría de las proyecciones: sea testigo de su aparición en el mapa en la pregunta. Es por eso que jugar juegos con proyecciones, como se muestra aquí, es esencial para una buena solución.

whuber
fuente
Gracias por la publicación muy informativa! Estoy tomando (b) como mi enfoque y tengo a mano un mapa equirectangular correctamente generado, pero obtengo distorsiones de los polos feos mientras mapeo el mapa a la esfera 3D. ¿Me ayudarías muy amablemente? gis.stackexchange.com/questions/245315/…
Sibbs Gambling
2

Suponiendo que las formas que se dibujan cubren una pequeña porción de la esfera, debería ser capaz de escalar el ancho en 1 / cos (lat) y dejar solo la altura.

Sin embargo, cuanto más grande sea la forma y más cerca esté de los polos, menos funcionará.

smithkm
fuente
¿Podría explicar por qué esto funcionaría? Parece que fallaría dramáticamente incluso en pequeñas porciones de la esfera cerca del borde de su representación en las imágenes de ejemplo.
whuber
Gracias por la edición En consecuencia, eliminé el voto negativo porque su respuesta me parece correcta y podría ser útil para alguien en el futuro. Sin embargo, al revisar la pregunta, parece poco probable que alguien esté envolviendo formas tan pequeñas alrededor de la esfera, y cuando lo hagan, tendrán que lidiar con los polos y también en cualquier otro lugar, me imagino.
whuber
0

No puedo entender cómo agregar un comentario, así que pondré esto en la solución y dejaré que los moderadores se esfuercen por averiguar por qué no puedo comentar.

Mi primera impresión al leer su pregunta fue "¿Por qué no diseña sus círculos en una proyección conforme como Mercator?". Podría proyectar este mapa en una proyección de Mercator y ver su distorsión de círculo y texto, arreglar todo para que se vea bien y cuando lo proyecte en su globo, las formas deben permanecer correctas (esa es la definición de una proyección conforme).

brenth
fuente
2
Esto se lee como una respuesta para mí, así que lo dejaré. Pero es incorrecto, ya que se basa en un malentendido: las proyecciones conformes no proyectan todos los círculos en círculos. Lo hacen solo infinitesimalmente. La distinción es enorme: considere lo que el Mercator hace a cualquier círculo que rodea el eje de la Tierra, por ejemplo. No puede mapearlo como un círculo, debe romperlo en alguna parte. Para más discusión sobre esto, busque en nuestro sitio Tissot .
whuber
1
"Lo hacen solo infinitesimalmente". -> "Lo hacen solo para los infinitesimalmente pequeños".
Martin F
0

Vea, su primer mapa 2D no tiene características geográficas dibujadas. Agréguelos a este mapa (digamos el contorno de África) y aplique la distorsión en la que está pensando a todo de una vez. La geografía también se modificaría, y cuando la pones en la esfera, estaría mal. Por lo tanto, creo que esta idea de aplicar cierta distorsión no funcionaría.

Puede pasar en 2D dibujando gráficos en pequeños mapas 2D que tienen un área limitada y una distorsión aceptable. Puede cortar su mapa 2D en mosaicos y para cada mosaico usar su propia "mejor" proyección.

Por otro lado, es fácil crear puntos en un círculo geodésico de radio dado en el mapa 2D. Para eso, necesitaría encontrar una función que calcule el lat / long de un punto a una distancia dada y el acimut desde otro punto (busque "problema directo Vincenty"). Una vez que tenga eso, puede generar un montón de puntos equidistantes a una distancia dada del punto cambiando el acimut de 0 a 360. Hacer un polígono de esos puntos en 2D requiere más trabajo cuando el círculo geodésico contiene un polo o se intersecta límite izquierdo o derecho del mapa. Mira cómo pueden verse los círculos geodésicos en un mapa plano aquí .

0kcats
fuente