4 votos

Suma de varios raster netCDF

Por primera vez, estoy utilizando archivos de datos NetCDF que contienen datos diarios sobre la humedad del suelo a nivel global.

Quiero poder obtener el valor medio mensual de la humedad del suelo para cada celda de la cuadrícula.

Hay un archivo NetCDF para cada día, y cada archivo contiene cuatro bandas. Sólo necesito la primera banda, que contiene los datos que quiero.

Utilizando QGIS 1.8, me encuentro con los siguientes problemas:

1. Carga de los raster

Cuando quiero cargar los 31 raster relacionados con enero (ejemplo), puedo seleccionar los 31 archivos, pero luego, tengo que seleccionar la banda que me interesa para cada capa, una por una. ¿Hay alguna forma de cargarlos todos, pero seleccionar automáticamente la banda que quiero?

enter image description here

2. Conversión de las capas

Los datos vienen en formato de número flotante. He detectado algunos problemas a la hora de sumar valores. Sin embargo, cuando convierto la capa en una trama .tiff, parece que transforma el valor en un número entero. Esto es lo que quiero, pero GDAL no quiere convertir por lotes todos los archivos a .tiff, ya sea por los nombres de los archivos o por el problema de la multibanda. ¿Hay alguna forma de convertir por lotes archivos NetCDF a .tiff?

enter image description here

3. Suma por lotes de las capas

Por último, aunque tenga la capa en formato .tiff, me pregunto si hay una forma más fácil de sumar todos los valores que utilizando RasterCalculator. ¿Existe alguna herramienta que sume por lotes los raster dentro de una carpeta? Además, me he dado cuenta de que no puedo utilizar RasterCalculator directamente en las capas NetCDF debido a los nombres de los archivos. Si la solución está en este camino, ¿hay alguna forma de cambiar por lotes el nombre de una capa dentro de un archivo NetCDF?

2voto

Nikola Puntos 21

1. Carga de la trama

Conversión por lotes con gdal_translate los archivos NetCDF diarios de humedad del suelo en Formato GDAL VRT especificando la banda que desea utilizar. Ejemplo (banda 1):

gdal_translate -of VRT -b 1 netcdf:inputfile.nc:variable_name outputfile.vrt

2. Conversión de las capas

Convierte por lotes los VRTs al formato GTiff siempre con gdal_translate, si realmente lo necesitas. Ejemplo:

gdal_translate -ot Int32 inputfile.vrt outputfile.tif

3. Suma por lotes de las capas

¿Existe alguna herramienta que sume por lotes los raster dentro de una carpeta?

Utilice gdal_calc.py . Ejemplo:

gdal_calc.py -A input1.tif -B input2.tif --outfile=result.tif --calc="A+B"

¿Hay alguna forma de cambiar por lotes el nombre de una capa dentro de un archivo NetCDF?

Si utiliza el formato VRT, puede dar a las capas el nombre que desee.

0 votos

Gracias por la respuesta. Estaba explorando la función gdal_translate en este mismo momento. Ahora, soy capaz de elegir la variable que quiero convertir, sin embargo, no sé cómo hacerlo para todos los archivos dentro de un directorio. Por ejemplo, si tengo 31 archivos NetCDF en mi carpeta, ¿cómo puedo pedirle a gdal_translate que convierta cada archivo a VRT sólo con la variable que quiero?

0 votos

Necesita un ciclo FOR basado en una variable: FOR /L %variable IN (start,step,end) DO comando [comando-parámetros]

0 votos

Gracias por el consejo. Debo confesar que soy novato en este tipo de cosas. Por lo que entiendo, debo escribir el bucle en un archivo .bat y ejecutarlo usando el Shell de windows. ¿Estoy en lo cierto? Además, leí un poco en el doc, y me salió esta línea de código: FOR /R C:\Users\ddeltenre\Desktop\Muddyareas\2005\1_January\ %inputfile IN (*.nc) DO gdal_translate -of VRT -b 1 netcdf:%inputfile.nc:sm %inputfile.vrt Sin embargo, cuando ejecuto, tengo mensajes de error diciendo que algunas variables o cadenas son inesperadas. ¿En qué me equivoco?

1voto

ojblass Puntos 431

Los operadores NetCDF ( http://nco.sourceforge.net/nco.html ) tienen los programas ncra o ncea, que pueden calcular la media mensual de un conjunto de archivos netcdf diarios.

ncra file201301*.nc mean201301.nc

ncwa también puede sumar o integrar en un archivo http://nco.sourceforge.net/nco.html#Normalization-and-Integration pero es posible que tenga que concatenar los dailys en un mes para usarlo

ncrcat daily201301*.nc month201301.nc
ncwa -N month201301.nc sum201301.nc  # don't normalize the sum

Puede cambiar las capas/variables en los archivos netcdf con http://nco.sourceforge.net/nco.html#ncrename-netCDF-Renamer como:

ncrename -v badname,bettername myfilename.nc

Los operadores NetCDF son herramientas bastante rápidas para realizar cálculos matemáticos de conjuntos en archivos NetCDF.

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