Primero debo aclarar que no tengo experiencia previa en el campo, por lo que no conozco la terminología técnica. Mi pregunta es la siguiente:
Tengo dos conjuntos de datos meteorológicos:
El primero tiene el sistema de coordenadas regular (no sé si tiene un nombre específico), que va desde -90 a 90 y -180 a 180, y los polos están en las latitudes -90 y 90.
En el segundo, aunque debería corresponder a la misma región, noté algo diferente: la latitud y la longitud no eran las mismas, ya que tienen otro punto de referencia (en la descripción se llama una cuadrícula girada ). Junto con los pares lat / lon, viene la siguiente información: lat del polo sur: -35.00, polo sur lon: -15.00, ángulo: 0.0.
Necesito transformar el segundo par de lon / lat en el primero. Podría ser tan simple como agregar 35 a las latitudes y 15 a las longitudes, ya que el ángulo es 0 y parece un cambio simple, pero no estoy seguro.
Editar: la información que tengo sobre las coordenadas es la siguiente
http://rda.ucar.edu/docs/formats/grib/gribdoc/llgrid.html
Aparentemente, el segundo sistema de coordenadas está definido por una rotación general de la esfera.
"Una opción para estos parámetros es:
La latitud geográfica en grados del polo sur del sistema de coordenadas, por ejemplo, el toque;
La longitud geográfica en grados del polo sur del sistema de coordenadas, lambdap por ejemplo;
El ángulo de rotación en grados sobre el nuevo eje polar (medido en el sentido de las agujas del reloj cuando se mira desde el polo sur al polo norte) del sistema de coordenadas, suponiendo que el nuevo eje se haya obtenido primero girando la esfera a través de grados lambdap sobre el eje polar geográfico , y luego girando (90 + thetap) grados para que el polo sur se moviera a lo largo del meridiano de Greenwich (previamente girado) ".
pero aún no sé cómo convertir esto al primero.
angle=0.0
, ¿te refieres al rodamiento ? Tengo un archivo netcdf con las coordenadas del polo girado, pero no se menciona ningún ángulo.Respuestas:
Invertir manualmente la rotación debería hacer el truco; debería haber una fórmula para rotar los sistemas de coordenadas esféricas en alguna parte, pero como no puedo encontrarla, aquí está la derivación ( ' marca el sistema de coordenadas rotado; las coordenadas geográficas normales usan símbolos simples):
Primero convierta los datos en el segundo conjunto de datos de esférico (lon ', lat') a (x ', y', z ') usando:
Luego use dos matrices de rotación para rotar el segundo sistema de coordenadas para que coincida con el primero 'normal'. Vamos a girar los ejes de coordenadas, por lo que podemos usar las matrices de rotación de ejes . Necesitamos invertir el signo en la matriz ϑ para que coincida con el sentido de rotación utilizado en la definición ECMWF, que parece ser diferente de la dirección positiva estándar.
Como estamos deshaciendo la rotación descrita en la definición del sistema de coordenadas, primero rotamos por ϑ = - (90 + lat0) = -55 grados alrededor del eje y '(a lo largo del meridiano de Greenwich rotado) y luego por φ = - lon0 = +15 grados alrededor del eje z):
Ampliado, esto se convierte en:
Luego convierta nuevamente a 'normal' (lat, lon)
Si no tiene atan2, puede implementarlo usted mismo usando atan (y / x) y examinando los signos de x e y
Asegúrese de convertir todos los ángulos a radianes antes de usar las funciones trigonométricas, o obtendrá resultados extraños; convertir de nuevo a grados al final si eso es lo que prefieres ...
Ejemplo (coordenadas de esfera rotadas ==> coordenadas geográficas estándar):
el polo sur del CS rotado es (lat0, lon0)
(-90 °, *) ==> (-35 °, -15 °)
el primer meridiano del CS rotado es el meridiano -15 ° en posición geográfica (girado 55 ° hacia el norte)
(0 °, 0 °) ==> (55 °, -15 °)
la simetría requiere que ambos ecuadores se crucen a 90 ° / -90 ° en el nuevo CS, o 75 ° / -105 ° en coordenadas geográficas
(0 °, 90 °) ==> (0 °, 75 °)
(0 °, -90 °) ==> (0 °, -105 °)
EDITAR: reescribió la respuesta gracias a un comentario muy constructivo de whuber: las matrices y la expansión ahora están sincronizadas, utilizando signos adecuados para los parámetros de rotación; referencia agregada a la definición de las matrices; eliminó atan (y / x) de la respuesta; ejemplos agregados de conversión.
EDIT 2: es posible derivar expresiones para el mismo resultado sin una transformación explícita en el espacio cartesiano. El
x
,y
,z
en el resultado puede estar sustituido con sus correspondientes expresiones, y el mismo se puede repetir parax'
,y'
yz'
. Después de aplicar algunas identidades trigonométricas, surgen las siguientes expresiones de un solo paso:fuente
En caso de que alguien esté interesado, he compartido un script MATLAB en el intercambio de archivos transformando lat / lon regular a lat / lon girado y viceversa: transformación de cuadrícula girada
fuente
Esta transformación también se puede calcular con proj de software (ya sea usando la línea de comandos o mediante programación) mediante el empleo de lo que llama proj traducción oblicua (
ob_tran
) aplicada a una transformación LatLon. Los parámetros de proyección a configurar son:o_lat_p
= latitud del polo norte => 35 ° en el ejemplolon_0
= longitud del polo sur => -15 ° en el ejemploo_lon_p
= 0además,
-m 57.2957795130823
se requiere (180 / pi) para considerar los valores proyectados en grados.Al replicar los ejemplos propuestos por mkadunc se obtiene el mismo resultado (observe que aquí el orden
lon lat
no es(lat,lon)
, las coordenadas se escriben en la entrada estándar, la salida se marca con=>
):invproj
El comando se utiliza para convertir de coordenadas "proyectadas" (es decir, rotadas) a geográficas, mientras queproj
para hacer lo contrario.fuente
He desarrollado una página asp.net para convertir coordenadas de rotadas a no rotadas en función de los dominios CORDEX.
Se basa en los métodos anteriores. Puedes usarlo libremente en este enlace:
Transformación manual de lat / lon girado a lat / lon regular
fuente
https://www.mathworks.com/matlabcentral/fileexchange/43435-rotated-grid-transform
PITÓN:
fuente
¿Qué software estás usando? Cada software SIG tendrá la facilidad de mostrarle el sistema actual de Cordinate / información de proyección. , que puede ayudarlo a obtener el nombre de su sistema de coordenadas actual.
Además, si está utilizando ArcGIS, puede usar la herramienta Proyecto para volver a proyectar el segundo conjunto de datos, importando la configuración del primero.
fuente
El módulo de cartopy para python tiene una instalación de poste girado. Entiende las transformaciones que parece.
https://scitools.org.uk/cartopy/docs/latest/gallery/rotated_pole.html#sphx-glr-gallery-rotated-pole-py
Podría ser útil, supongo.
fuente