Primeiro, devo esclarecer que não tenho experiência anterior com o campo, portanto não conheço a terminologia técnica. Minha pergunta é a seguinte:
Eu tenho dois conjuntos de dados climáticos:
O primeiro tem o sistema de coordenadas regular (não sei se tem um nome específico), variando de -90 a 90 e -180 a 180, e os polos estão nas latitudes -90 e 90.
No segundo, embora devesse corresponder à mesma região, notei algo diferente: latitude e longitude não eram iguais, pois têm outro ponto de referência (na descrição é chamado de grade rotativa ). Juntamente com os pares lat / lon, vêm as seguintes informações: pólo sul lat: -35,00, pólo sul lon: -15,00, ângulo: 0,0.
Eu preciso transformar o segundo par de lon / lat no primeiro. Pode ser tão simples quanto adicionar 35 às latitudes e 15 às longitudes, já que o ângulo é 0 e parece uma mudança simples, mas não tenho certeza.
Editar: As informações que tenho sobre as coordenadas são as seguintes
http://rda.ucar.edu/docs/formats/grib/gribdoc/llgrid.html
Aparentemente, o segundo sistema de coordenadas é definido por uma rotação geral da esfera
"Uma opção para esses parâmetros é:
A latitude geográfica em graus do polo sul do sistema de coordenadas, por exemplo;
A longitude geográfica em graus do polo sul do sistema de coordenadas, lambdap por exemplo;
O ângulo de rotação em graus sobre o novo eixo polar (medido no sentido horário ao olhar do polo sul para o polo norte) do sistema de coordenadas, assumindo que o novo eixo tenha sido obtido girando primeiro a esfera através de graus lambdap em torno do eixo polar geográfico e, em seguida, girando através de (90 + batida) graus para que o pólo sul se movesse ao longo do meridiano de Greenwich (anteriormente girado). "
mas ainda não sei como converter isso para o primeiro.
angle=0.0
, você quer dizer o rolamento ? Eu tenho um arquivo netcdf com as coordenadas dos pólos girados, mas não há menção de nenhum ângulo.Respostas:
A reversão manual da rotação deve fazer o truque; deve haver uma fórmula para girar sistemas de coordenadas esféricas em algum lugar, mas como não consigo encontrá-la, aqui está a derivação ( ' marca o sistema de coordenadas giradas; as coordenadas geográficas normais usam símbolos simples):
Primeiro converta os dados no segundo conjunto de dados de esférico (lon ', lat') para (x ', y', z ') usando:
Em seguida, use duas matrizes de rotação para girar o segundo sistema de coordenadas para que coincida com o primeiro sistema 'normal'. Giraremos os eixos das coordenadas, para que possamos usar as matrizes de rotação dos eixos . Precisamos reverter o sinal na matriz to para corresponder ao sentido de rotação usado na definição ECMWF, que parece ser diferente da direção positiva padrão.
Como estamos desfazendo a rotação descrita na definição do sistema de coordenadas, primeiro giramos por ϑ = - (90 + lat0) = -55 graus ao redor do eixo y '(ao longo do meridiano de Greenwich girado) e depois por φ = - lon0 = +15 graus ao redor do eixo z):
Expandido, isso se torna:
Em seguida, converta novamente para 'normal' (lat, lon) usando
Se você não possui atan2, pode implementá-lo usando atan (y / x) e examinando os sinais de x e y
Certifique-se de converter todos os ângulos em radianos antes de usar as funções trigonométricas, ou obterá resultados estranhos; converter de volta para graus no final, se é isso que você prefere ...
Exemplo (coordenadas de esfera girada ==> coordenadas geográficas padrão):
o pólo sul do CS girado é (lat0, lon0)
(-90 °, *) ==> (-35 °, -15 °)
o principal meridiano do CS girado é o meridiano de -15 ° em termos geográficos (girado 55 ° em direção ao norte)
(0 °, 0 °) ==> (55 °, -15 °)
a simetria requer que ambos os equadores se cruzem a 90 ° / -90 ° no novo CS ou a 75 ° / -105 ° em coordenadas geográficas
(0 °, 90 °) ==> (0 °, 75 °)
(0 °, -90 °) ==> (0 °, -105 °)
EDIT: Reescreva a resposta graças a um comentário muito construtivo do whuber: as matrizes e a expansão estão agora sincronizadas, usando sinais adequados para os parâmetros de rotação; referência adicionada à definição das matrizes; removeu atan (y / x) da resposta; adicionados exemplos de conversão.
EDIT 2: É possível derivar expressões para o mesmo resultado sem transformação explícita no espaço cartesiano. A
x
,y
,z
em resultado pode ser substituído com as suas expressões correspondentes, e o mesmo pode ser repetido parax'
,y'
ez'
. Após aplicar algumas identidades trigonométricas, surgem as seguintes expressões de etapa única:fonte
Caso alguém esteja interessado, compartilhei um script MATLAB na troca de arquivos, transformando lat / lon regular em lat / lon girado e vice-versa: transformação de grade rotativa
fonte
Essa transformação também pode ser calculada com o software proj (usando linha de comando ou programaticamente), empregando o que o proj chama de tradução oblíqua (
ob_tran
) aplicada a uma transformação de latlon. Os parâmetros de projeção a serem definidos são:o_lat_p
= latitude do polo norte => 35 ° no exemplolon_0
= longitude do polo sul => -15 ° no exemploo_lon_p
= 0Além disso,
-m 57.2957795130823
é necessário (180 / pi) para considerar os valores projetados em graus.Replicar os exemplos propostos por mkadunc dá o mesmo resultado (observe que aqui a ordem
lon lat
não é(lat,lon)
, os coordenados são digitados na entrada padrão, a saída é marcada por=>
):invproj
O comando é usado para converter coordenadas "projetadas" (ie giradas) em geográficas, enquanto queproj
para fazer o oposto.fonte
Eu desenvolvi uma página asp.net para converter coordenadas de rotação para não rotação com base nos domínios CORDEX.
É baseado nos métodos acima. Você pode usá-lo livremente neste link:
Transformação manual de lat / lon girado em lat / lon regular
fonte
https://www.mathworks.com/matlabcentral/fileexchange/43435-rotated-grid-transform
PYTHON:
fonte
Qual software você está usando? Todo software GIS terá a capacidade de mostrar as informações atuais do sistema / projeção. , o que pode ajudá-lo a obter o nome do seu sistema de coordenadas atual.
Além disso, se você estiver usando o ArcGIS, poderá usar a ferramenta Projeto para reprojetar o segundo conjunto de dados, importando configurações do primeiro.
fonte