Más

¿Cómo se puede hacer un netcdf con subgrupos más pequeños?

¿Cómo se puede hacer un netcdf con subgrupos más pequeños?


Estoy tratando de escribir una prueba de código que funcione con los datos de circulación oceánica global de hycom netcdf. Los subdatasets del archivo de origen 2:

gdalinfo hycom_glb_911_2015110200_t000_uv3z.nc | grep _NAME SUBDATASET_1_NAME = NETCDF: "hycom_glb_911_2015110200_t000_uv3z.nc": water_u SUBDATASET_2_NAME = NETCDF: "hycom_glb_911_2015110200_t000_uv3z.nc": water_v

Con 40 bandas de profundidad:

gdalinfo NETCDF: hycom_glb_911_2015110200_t000_uv3z.nc: water_u | grep '^ Band' | head -3 Band 1 Block = 4500x1 Type = Int16, ColorInterp = Indefinido Band 2 Block = 4500x1 Type = Int16, ColorInterp = Indefinido Band 3 Block = 4500x1 Type = Int16, ColorInterp = Undefined

Tengo un código escrito que hace cosas como calcular la velocidad en m / s desde el UV y crea un geotiff, etc. Los archivos originales son demasiado grandes para usarlos en pruebas unitarias. ¿Existe una forma fácil con gdal, nco o? para mantener la estructura y los metadatos, pero crear un archivo mucho más pequeño? Estoy dispuesto a eliminar todas las bandas menos las dos primeras y escribir un valor constante en cada banda + activar la compresión de desinflado.

Probar con GDAL:

gdal_translate --version # At head -> r31584 GDAL 2.1.0dev, lanzado 2015/99/99 gdal_translate hycom_glb_911_2015110200_t000_uv3z.nc hycom_glb_911_2015110200_t000_uv3z-try2.nc contiene -of netcdf -co compress = defdatasets. Por favor, seleccione uno de ellos para leer.

Los originales son bastante grandes para las pruebas:

wget ftp://ftp.hycom.org/datasets/GLBu0.08/expt_91.1/data/hindcasts/2015/hycom_glb_911_2015110200_t000_uv3z.nc ls -lh hycom_glb_911_2015110200_t000_uv3z.nc -rw-r grupo 1.4- 1 19 de noviembre 09:13 hycom_glb_911_2015110200_t000_uv3z.nc

Los detalles del archivo netcdf de origen:

ncdump -h hycom_glb_911_2015110200_t000_uv3z.nc netcdf hycom_glb_911_2015110200_t000_uv3z {dimensiones: lat = 2001; lon = 4500; profundidad = 40; tiempo = ILIMITADO; // (1 actualmente) variables: double time (time); time: long_name = "Tiempo válido"; hora: unidades = "horas desde 2000-01-01 00:00:00"; hora: time_origin = "2000-01-01 00:00:00"; tiempo: calendario = "gregoriano"; tiempo: eje = "T"; hora: NAVO_code = 13; doble tau (tiempo); tau: nombre_largo = "Tau"; tau: unidades = "horas desde el análisis"; tau: time_origin = "2015-11-02 00:00:00"; tau: NAVO_code = 56; doble profundidad (profundidad); profundidad: nombre_largo = "Profundidad"; profundidad: nombre_estándar = "profundidad"; profundidad: unidades = "m"; profundidad: positivo = "abajo"; profundidad: eje = "Z"; profundidad: NAVO_code = 5; doble lat (lat); lat: long_name = "Latitud"; lat: standard_name = "latitud"; lat: unidades = "grados_norte"; lat: point_spacing = "even"; lat: eje = "Y"; lat: NAVO_code = 1; doble lon (lon); lon: long_name = "Longitud"; lon: standard_name = "longitud"; lon: unidades = "grados_east"; lon: modulo = "360 grados"; lon: eje = "X"; lon: NAVO_code = 2; short water_u (tiempo, profundidad, lat, lon); water_u: long_name = "Velocidad del agua hacia el este"; water_u: standard_name = "Eastward_sea_water_velocity"; water_u: unidades = "m / s"; water_u: _FillValue = -30000s; water_u: missing_value = -30000s; water_u: scale_factor = 0.001f; water_u: add_offset = 0.f; water_u: NAVO_code = 17; short water_v (tiempo, profundidad, lat, lon); water_v: long_name = "Velocidad del agua hacia el norte"; water_v: nombre_estándar = "velocidad_agua_marina_hacia el norte"; water_v: unidades = "m / s"; water_v: _FillValue = -30000s; water_v: missing_value = -30000s; water_v: scale_factor = 0.001f; water_v: add_offset = 0.f; water_v: NAVO_code = 18; // atributos globales:: class_level = "UNCLASSIFIED"; : distribution_statement = "Aprobado para su lanzamiento público. Distribución ilimitada". ; : downgrade_date = "no aplicable"; : class_authority = "no aplicable"; : institución = "Oficina Oceanográfica Naval"; : fuente = "archivo de almacenamiento HYCOM"; : historia = "archv2ncdf3z"; : field_type = "instantáneo"; : Convenciones = "CF-1.0 NAVO_netcdf_v1.0";

Usaría ncks de suboficiales:

ncks -v agua_u, agua_v -d, profundidad, 1,2,1 hycom_glb_911_2015110200_t000_uv3z.nc out.nc

siendo "profundidad" cualquiera que sea la dimensión de profundidad / banda.


Ver el vídeo: Netcdf files in MATLAB to produce Tiff file