Xarray: cortando latitud y longitud utilizando el nombre de la dimensión
Estoy escribiendo un programa que abrirá datos NetCDF meteorológicos en una red meteorológica, los rebanará para una región dada y luego realizará algunos cálculos, por ejemplo:
data = xr.open_dataset(SomeFile)
DatosRebanados = data.sel(lat=slice(max_lat,min_lat),
lon=slice(min_lon,max_lon))
ResultadoEjemplo = DatosRebanados.mslp.average('lon')
A continuación se muestra un ejemplo de cómo podría estar estructurado ‘data’:
<xarray.dataset>
Dimensions: (lon: 144, lat: 37, level: 17, time: 25)
Coordinates:
* lon (lon) float32 -180.0 -177.5 -175.0 -172.5 ... 172.5 175.0 177.5
* lat (lat) float32 0.0 -2.5 -5.0 -7.5 -10.0 ... -82.5 -85.0 -87.5 -90.0
* level (level) float32 1e+03 925.0 850.0 700.0 ... 50.0 30.0 20.0 10.0
* time (time) datetime64[ns] 2011-05-25 2011-05-25T06:00:00 ... 2011-05-31
Data variables:
air (time, level, lat, lon) float32 ...
hgt (time, level, lat, lon) float32 ...
rhum (time, level, lat, lon) float32 ...
omega (time, level, lat, lon) float32 ...
uwnd (time, level, lat, lon) float32 ...
vwnd (time, level, lat, lon) float32 ...
mslp (time, lat, lon) float32 ...
Sin embargo, distintas fuentes de datos almacenan las coordenadas de latitud y longitud utilizando diferentes indexadores: podría ser, por ejemplo, ya sea latitude/longitude o lat/lon. Entonces, por ejemplo, si los indexadores utilizados son latitude/longitude, lo siguiente:
DatosRebanados = data.sel(lat=slice(max_lat,min_lat),
lon=slice(min_lon,max_lon))
Devolvería:
KeyError: 'lat is not a valid dimension or coordinate'
¿Hay alguna manera de rebanar los datos utilizando Xarray utilizando una cadena como indexador de coordenadas? Por ejemplo:
python
</xarray.dataset>
IndexadorLat, IndexadorLon = 'lat', 'lon'
DatosRebanados = data.sel(IndexadorLat=slice(max_lat,min_lat),
IndexadorLon=slice(min_lon,max_lon))
davy.ai
Sí, puedes cortar los datos utilizando Xarray utilizando una cadena como índice de coordenadas utilizando la notación de corchetes cuadrados de la siguiente manera:
Esta notación es similar a proporcionar los índices de coordenadas como un diccionario. Puedes reemplazar las variables de cadena
LatIndexer
yLonIndexer
con los nombres reales de los indexadores utilizados en tus fuentes de datos, por ejemplo,latitude
ylongitude
.