Estou tentando calcular a distorção para distorcer o texto e os formulários sobrepostos para corresponder com precisão à imagem de uma projeção equiretangular.
Então, como calcular a distorção em uma determinada latitude em uma projeção equiretangular 1: 45.000.000 (digamos, 2000 pixels de largura x 1000 pixels de altura)?
Eu tenho tentado descobrir este post e seus links sem sucesso: Como criar um Indicatrix Tissot preciso?
Eu não sou um profissional, apenas um amador muito interessado, então, por favor, faça o menor para mim!
Muito Obrigado!
Obrigado pelas respostas rápidas! Aqui está a longa história; Espero que seja mais claro.
Estou visualizando / mapeando dados usando a linguagem de programação Processing e gostaria que os dados mapeados em 2D (fontes e círculos de tamanhos diferentes) aparecessem sem distorção quando agrupados em um globo 3D. Os dados são mapeados usando x, y equiretangular e os mapas que eu quero usar como pano de fundo são toda essa projeção, então estou assumindo que quero "corresponder" a essa distorção (por exemplo, calculando a distorção via latitude usando as equações de Tissot?). Usando a linguagem de programação, posso distorcer com precisão o texto e os círculos. Penso que tudo o que preciso são as equações para fazê-lo corretamente.
Aqui está o mapa de dados 2D original:
Quando embrulhado, parece distorcido, assim:
A pergunta de US $ 10.000: Como fazer com que minha imagem 2D pareça não distorcida quando envolvida na esfera 3D?
Para referência, aqui está a mesma pergunta feita de maneira diferente no fórum Processamento.
Obrigado novamente!
Se entendi direito, não tenho certeza se quero reprojetar para uma projeção ortográfica. Quero que meu mapa de dados 2D seja agrupado em um modelo de esfera 3D que possa ser interagido (ou seja, girado).
Estou usando um programa de modelagem 3D (Cinema 4D) para envolver uma esfera com uma imagem de 2 MB "Blue Marble" (projeção equiretangular) da NASA.
Quando embrulhado, parece não distorcido de todos os hemisférios (não apenas um hemisfério, como seria uma projeção ortográfica?), Veja: ainda do modelo 3D acima. (O programa de modelagem está fazendo a projeção ortográfica para mim enquanto eu giro o objeto, suponho.) Portanto, acho que se distorcer meu mapa de dados 2D de maneira semelhante, ele também aparecerá sem distorção na esfera 3D. Aqui está uma foto que tirei com uma equação que se aproxima da distorção equiretangular. Você notará que as elipses em forma de ovo da imagem 2D parecem um círculo quando enroladas na esfera 3D. Da mesma forma, as elipses de Tissot também aparecem como círculos na esfera 3D.
É por isso que eu estava olhando as equações de Tissot ... para descobrir com mais precisão a distorção da projeção equiretangular em diferentes latitudes, para que eu pudesse distorcer minha sobreposição de acordo.
Espero que tudo isso faça sentido.
Talvez você esteja certo que eu deveria usar um programa GIS. Acabei de baixar o Cartographica e vou ver se consigo descobrir. Alguma sugestão de software para Mac para um novato que está realizando essa tarefa?
Obrigado novamente.
fonte
Respostas:
As coordenadas da imagem são latitude e longitude, então você pode
(a) Desprojete e reprojete-o usando uma projeção ortográfica ou vertical próxima ao lado (ou seja, projeções que se parecem com o mundo do espaço) ou
(b) Mapeie a textura para um modelo 3D de uma esfera usando lat-lon como coordenada da textura e exiba essa esfera com um dispositivo de renderização de gráficos 3D.
A maioria dos GIS faz (a) rotineiramente. Para ilustrar (b), aqui está um conjunto de imagens derivadas do mapa "plano" na pergunta feita de um ponto de vista que orbita a esfera mapeada pela textura:
(Se você observar atentamente a imagem mais à direita, poderá ver um meridiano de destaque no Oceano Pacífico: essa é a "costura" formada ao envolver os lados esquerdo e direito do mapa.)
O comando básico do Mathematica para produzir um desses é
Isso reduz o problema original (de desenhar "mapas de dados" em uma esfera) para gerar um mapa que mostra círculos corretamente. A melhor projeção para isso é o Stereographic, porque projeta todos os círculos na esfera - independentemente do tamanho - em círculos no mapa. Assim, um procedimento para desenhar círculos grandes corretamente em uma projeção equiretangular , como mostrado na pergunta, é criá-los em uma projeção estereográfica e depois projetá-los em coordenadas geográficas (lat, lon). Usar (lon, lat) como (x, y) coordenadas cartesianas para fazer o mapa é equivalente à projeção equiretangular e, portanto, é adequado para o mapeamento de texturas na esfera ou para aplicar uma projeção ortográfica.
Observe que os indicadores de Tissot não são adequados como solução: eles representam apenas distorções locais de círculos infinitesimais . Círculos grandes o suficiente para serem vistos em escala global não aparecerão mais circulares na maioria das projeções: testemunhe sua aparição desajeitada no mapa da pergunta. É por isso que jogar com projeções, como mostrado aqui, é essencial para uma boa solução.
fonte
Supondo que as formas desenhadas cubram uma pequena parte da esfera, você poderá escalar a largura em 1 / cos (lat) e deixar a altura sozinha.
Quanto maior a forma e mais perto você chegar dos postes, menos isso funcionará.
fonte
Não consigo descobrir como adicionar um comentário, então colocarei isso na solução e deixarei os moderadores se esforçarem para descobrir por que não posso comentar.
Minha primeira impressão ao ler sua pergunta foi "Por que você não está projetando seus círculos em uma projeção conforme o Mercator". Você pode projetar esse mapa em uma projeção Mercator e ver sua distorção de círculo e texto, corrigir tudo para ficar bonito e quando você projetá-lo em seu globo, as formas devem permanecer corretas (que é a definição de uma projeção conforme).
fonte
Veja, seu primeiro mapa 2D não possui recursos geográficos desenhados. Adicione-os a este mapa (por exemplo, contorno da África) e aplique a distorção em que você está pensando em tudo de uma vez. A geografia também se modificaria e, quando você a colocasse na esfera, estaria errada. Portanto, acredito que essa ideia de aplicar alguma distorção não funcionaria.
Você pode se dar bem em 2D, desenhando gráficos em pequenos mapas 2D com área limitada e distorção aceitável. Você pode cortar seu mapa 2D em ladrilhos e, para cada ladrilho, usar sua própria "melhor" projeção.
Por outro lado, é fácil criar pontos em um círculo geodésico de determinado raio no mapa 2D. Para isso, você precisará encontrar uma função que calcule lat / long de um ponto a uma determinada distância e azimute a partir de outro ponto (procure por "problema direto Vincenty"). Quando você conseguir isso, poderá gerar vários pontos equidistantes a uma determinada distância do ponto, alterando o azimute de 0 para 360. Criar um polígono com esses pontos em 2D exige mais trabalho quando o círculo geodésico contém um polo ou cruza limite esquerdo ou direito do mapa. Confira como os círculos geodésicos podem parecer em um mapa plano aqui .
fonte