27 votos

Cálculo de la distorsión en la proyección equirectangular

Estoy tratando de calcular la distorsión para poder distorsionar el texto y las formas superpuestas para que coincidan exactamente con una imagen de una proyección equirectangular.

¿Cómo se calcula la distorsión en una latitud determinada en una proyección equirectangular 1:45.000.000 (digamos, 2000 píxeles de ancho x 1000 píxeles de alto)?

He tratado de entender este post y sus enlaces sin éxito: ¿Cómo crear un Tissot Indicatrix preciso?

No soy un profesional, sólo un aficionado muy interesado.


Esta es la larga historia.

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) aparecieran sin distorsión cuando se envuelven en un globo terráqueo en 3D. Los datos están mapeados usando x, y equirectangulares y los mapas que quiero usar como fondos son todos de esta proyección, así que asumo que quiero "igualar" esta distorsión (por ejemplo, calculando la distorsión a través de la latitud usando las ecuaciones de Tissot). Utilizando el lenguaje de programación puedo distorsionar con precisión tanto el texto como los círculos. Creo que lo único que necesito son las ecuaciones para hacerlo correctamente.

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

enter image description here

Cuando se envuelve se ve distorsionado, así:

enter image description here

¿Cómo puedo hacer que mi imagen 2D no se vea distorsionada al envolverla en la esfera 3D?

Como referencia, esta es la misma pregunta formulada de manera diferente en el foro de Procesamiento.


No estoy seguro de querer reproyectar a una proyección ortográfica. Quiero que mi mapa de datos 2D se envuelva en un modelo de esfera 3D con el que se pueda interactuar (es decir, girar).

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

Cuando se envuelve aparece sin distorsión desde todos los hemisferios (no sólo un hemisferio, como sería una proyección ortográfica ), ver: fotograma del modelo 3D arriba. (Supongo que el programa de modelado hace la proyección ortográfica por mí al girar 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 toma que hice con una ecuación que aproxima la distorsión equirectangular. Notarás que las elipses en forma de huevo de la imagen 2D parecen 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 with distorted circles Distorted circles wrapped to 3D sphere

Por eso estaba mirando las ecuaciones de Tissot... para averiguar con más precisión la distorsión de la proyección equirectangular en diferentes latitudes y así poder distorsionar mi superposición en consecuencia.

Quizás debería utilizar un programa GIS. Acabo de descargarme Cartographica y voy a ver si lo resuelvo.

¿Alguna sugerencia de software para Mac para alguien que no haya emprendido esta tarea?

1 votos

¿Te refieres realmente a calcular la distorsión o quieres saber cómo calcular la proyección en sí? Tal vez podrías poner una imagen en la Web para ilustrar lo que intentas conseguir. El uso que haces de la palabra "match" sugiere que te gustaría determinar cómo transformar una imagen en otra, lo que indica que necesitas especificar de qué partes y con qué quieres terminar.

1 votos

Entendemos que es difícil describir lo que quieres hacer sin conocer la jerga, pero parece que intentas describir el proceso más que el resultado. Intenta empezar con el problema que quieres resolver y luego con los resultados que te gustaría obtener, e intentaremos rellenar los huecos :)

0 votos

En términos técnicos: quiere reproyectar de la proyección equirectangular a un ortográfico ("el mundo desde el espacio"). ¿Qué programas puede utilizar? Si dispones de un programa SIG o estás dispuesto a codificar con una biblioteca de proyecciones, el trabajo ya está hecho. De lo contrario, tendrá que aplicar las ecuaciones para sin proyectar la proyección equirectangular (fácil) y proyectando la proyección ortográfica (no es demasiado difícil, pero requiere cierta destreza en la codificación de rutinas numéricas).

6voto

cjstehno Puntos 131

¿Cómo puedo hacer que mi imagen 2D no se vea distorsionada al envolverla en la esfera 3D?

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

(a) Desproyéctalo y vuelve a proyectarlo utilizando una proyección ortográfica o vertical cercana (es decir, proyecciones que se parecen al mundo desde el espacio) o

(b) Mapeo de texturas en un modelo 3D de una esfera utilizando lat-lon como coordenadas de la textura y mostrar esa esfera con un dispositivo de renderizado de gráficos 3D.

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

World from space

(Si se observa con atención la imagen de la derecha, se puede ver un meridiano prominente que atraviesa el Océano Pacífico: es la "costura" que se forma al juntar los lados izquierdo y derecho del mapa).

Lo básico Mathematica El comando 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) a generar un mapa que muestre los círculos correctamente. La mejor proyección para ello es la estereográfica, porque proyecta todos los círculos de la esfera -sin importar su tamaño- en círculos del mapa. Así, un procedimiento para dibujar correctamente círculos grandes en una Equirectangular como se muestra en la pregunta, es crearlas en una proyección estereográfica y luego desproyectarlas a coordenadas geográficas (lat, lon). El uso de (lon, lat) como coordenadas cartesianas (x,y) para hacer el mapa equivale a la proyección Equirectangular y, por lo tanto, es adecuado para mapear texturas en la esfera o para aplicar una proyección Ortográfica.


Tenga en cuenta que las indicatrices de Tissot no son adecuadas como solución: sólo representan local distorsiones de infinitesimal círculos. Los círculos lo suficientemente grandes como para ser vistos a escala global ya ni siquiera parecen circulares en la mayoría de las proyecciones: véase su aspecto abultado en el mapa de la pregunta. Por eso, jugar con las proyecciones, como se muestra aquí, es esencial para una buena solución.

0 votos

Gracias por este post tan informativo. Estoy tomando (b) como mi enfoque y tienen un mapa equirectangular generado correctamente a la mano, pero obtener distorsiones polo feo mientras mapear el mapa a la esfera 3D. ¿Sería tan amable de ayudarme? gis.stackexchange.com/questions/245315/

2voto

Jimmy Chandra Puntos 3562

Suponiendo que las formas que se dibujan cubren una pequeña parte de la esfera, deberías poder arreglártelas escalando la anchura en 1/cos(lat) y dejando la altura sola.

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

0 votos

¿Podría explicarme por qué funcionaría? Parece que fallaría drásticamente incluso en pequeñas porciones de la esfera cercanas al borde de su representación en las imágenes de ejemplo.

0 votos

Gracias por la edición; he eliminado el voto negativo porque tu respuesta me parece correcta y podría ser útil para alguien en el futuro. Al revisar la pregunta, sin embargo, parece poco probable que alguien envuelva formas tan pequeñas alrededor de la esfera - y cuando lo hagan, van a tener que lidiar con los polos y en todas partes, también, me imagino.

0voto

user22814 Puntos 196

Verás, tu primer mapa 2D no tiene dibujados los accidentes geográficos. Añádelos a este mapa (digamos el contorno de África), y aplica la distorsión que estás pensando a todo a la vez. La geografía se modificaría también, y cuando la pusieras en la esfera, estaría mal. Por lo tanto, creo que esta idea de aplicar una distorsión no funcionaría.

Puede arreglárselas 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 utilizar para cada mosaico su propia "mejor" proyección.

Por otro lado, es fácil crear puntos en un círculo geodésico de radio determinado en el mapa 2D. Para ello necesitarías encontrar una función que calcule la lat/long de un punto a una distancia y azimut dados desde otro punto (busca "problema directo Vincenty"). Una vez conseguido eso, puedes generar un montón de puntos equidistantes a una distancia determinada del punto cambiando el acimut de 0 a 360. Hacer un polígono a partir de esos puntos en 2D requiere más trabajo cuando el círculo geodésico contiene un polo, o intercepta el límite izquierdo o derecho del mapa. Vea cómo pueden verse los círculos geodésicos en un mapa plano aquí .

-1voto

user19213 Puntos 1

No puedo averiguar cómo añadir un comentario, así que pondré esto en la solución y dejaré que los moderadores se peleen para averiguar por qué no puedo comentar.

Mi primera impresión al leer tu pregunta fue: "¿Por qué no diseñas tus círculos en una proyección conforme como Mercator? Podrías proyectar este mapa en una proyección Mercator y ver tu círculo y la distorsión del texto, arreglar todo para que se vea bien y cuando lo proyectes en tu globo terráqueo, las formas deberían permanecer correctas (esa es la definición de una proyección conforme).

2 votos

Esto me parece una respuesta, así que lo dejaré. Pero es incorrecta, ya que se basa en un malentendido: las proyecciones conformes no proyectan todos los círculos en círculos. Sólo lo hacen infinitesimalmente. La distinción es enorme: considere lo que el Mercator hace a cualquier círculo que gire alrededor del eje de la Tierra, por ejemplo. No puede trazarlo como un círculo, debe romperlo en alguna parte. Para más información sobre este tema, busque en nuestro sitio web Tissot .

1 votos

"Lo hacen sólo infinitesimalmente". --> "Lo hacen sólo infinitesimalmente pequeños".

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X