Este es el comando nccopy que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
nccopy: copia un archivo netCDF, opcionalmente cambiando el formato, la compresión o la fragmentación en el
salida.
SINOPSIS
nccopiar [-k tipo_nombre ] [-código_tipo] [-D n ] [-s] [-c fragmentoespecífico ] [-u] [-w] [- [v | V]
var1, ...] [- [g | G] grp1, ...] [-m tamaño buf ] [-h caché_fragmento ] [-e cache_elements ]
[-r] en archivo archivar
DESCRIPCIÓN
Los nccopiar La utilidad copia un archivo netCDF de entrada en cualquier variante de formato compatible en un
Salida de archivo netCDF, que opcionalmente convierte la salida a cualquier formato netCDF compatible
variante, comprimiendo los datos o reagrupando los datos. Por ejemplo, si se construye con el
biblioteca netCDF-3, un archivo clásico netCDF se puede copiar a un archivo de compensación netCDF de 64 bits,
permitiendo variables mayores. Si se creó con la biblioteca netCDF-4, un archivo clásico netCDF
puede copiarse en un archivo netCDF-4 o en un archivo de modelo clásico netCDF-4, lo que permite
compresión de datos, cambios de esquema eficientes, tamaños de variables más grandes y uso de otros
características netCDF-4.
Si no se especifica ningún formato de salida, con -k tipo_nombre or -código_tipo, luego la salida
utilizará el mismo formato que la entrada, a menos que la entrada sea clásica o con desplazamiento de 64 bits y
se especifica fragmentación o compresión, en cuyo caso la salida será netCDF-4
formato de modelo clásico. Intentar algunos tipos de conversión de formato resultará en un error,
si la conversión no es posible. Por ejemplo, un intento de copiar un archivo netCDF-4 que
utiliza características del modelo mejorado, como grupos o cadenas de longitud variable, para cualquiera de
los otros tipos de formatos netCDF que utilizan el modelo clásico darán como resultado un error.
nccopiar también sirve como ejemplo de un programa genérico netCDF-4, con su capacidad para leer
cualquier archivo netCDF válido y manejar grupos anidados, cadenas y tipos definidos por el usuario, incluidos
tipos de compuestos anidados arbitrariamente, tipos de longitud variable y datos de cualquier netCDF-4 válido
tipo.
Si el soporte DAP estaba habilitado cuando nccopiar fue creado, el nombre del archivo puede especificar una URL DAP.
Esto se puede utilizar para convertir datos en servidores DAP a archivos netCDF locales.
OPCIONES
-k tipo_nombre
Utilice el nombre del formato para especificar el tipo de archivo que se creará y, por inferencia, la
modelo de datos (es decir, netcdf-3 (clásico) o netcdf-4 (mejorado)). Lo posible
los argumentos son:
'nc3' o 'classic' => formato clásico netCDF
'nc6' o 'desplazamiento de 64 bits' => formato netCDF de 64 bits
'nc4' o 'netCDF-4' => formato netCDF-4 (modelo de datos mejorado)
'nc7' o 'netCDF-4 classic model' => formato de modelo netCDF-4 classic
Nota: Los números de formato antiguo '1', '2', '3', '4', equivalen a los nombres de formato
'nc3', 'nc6', 'nc4' o 'nc7' respectivamente, también se siguen aceptando pero están en desuso,
debido a la fácil confusión entre los números de formato y los nombres de formato.
[-código_tipo]
Utilice código numérico de formato (en lugar de nombre de formato) para especificar el tipo de archivo que se
creado y, por inferencia, el modelo de datos (es decir, netcdf-3 (clásico) versus netcdf-4
(mejorado)). Los códigos numéricos son:
3 => formato clásico netcdf
6 => formato netCDF de 64 bits
4 => formato netCDF-4 (modelo de datos mejorado)
7 => formato de modelo clásico netCDF-4
El código numérico "7" se usa porque "7 = 3 + 4", especificando el formato que usa el netCDF-3
modelo de datos para compatibilidad con el formato de almacenamiento netCDF-4 para rendimiento. El crédito es
debido al NCO por el uso de estos códigos numéricos en lugar de los antiguos y confusos números de formato.
-d n
Para la salida netCDF-4, incluido el modelo clásico netCDF-4, especifique el nivel de deflación
(nivel de compresión) para salida de datos variables. 0 corresponde a ninguna compresión
y 9 a la compresión máxima, con niveles más altos de compresión que requieren
un poco más de tiempo para comprimir o descomprimir que los niveles inferiores. Compresión
logrado también puede depender de los parámetros de fragmentación de salida. Si esta opcion es
especificado para un archivo de entrada de formato clásico o formato de desplazamiento de 64 bits, no es
También es necesario especificar que la salida debe ser netCDF-4 classic model, ya que
será el predeterminado. Si no se especifica esta opción y el archivo de entrada tiene
variables comprimidas, la compresión aún se conservará en la salida, utilizando
el mismo fragmento que en la entrada por defecto.
Tenga en cuenta que nccopiar Requiere que todas las variables sean comprimidas usando la misma compresión
nivel, pero la API no tiene tal restricción. Con un programa que puedes personalizar
compresión para cada variable de forma independiente.
-s Para la salida netCDF-4, incluido el modelo clásico netCDF-4, especifique la reproducción aleatoria de
bytes de datos variables antes de la compresión o después de la descompresión. Barajar se refiere a
entrelazado de bytes en un fragmento de modo que los primeros bytes de todos los valores sean
contiguos en el almacenamiento, seguidos de todos los segundos bytes, y así sucesivamente, que a menudo
mejora la compresión. Esta opción se ignora a menos que se establezca un nivel de deflación distinto de cero.
especificado. Usar -d0 para especificar que no haya deflación en los datos de entrada que se han
compressed and shuffled desactiva tanto la compresión como la reproducción aleatoria en la salida.
-u Convierta cualquier dimensión de tamaño ilimitado en la entrada a dimensiones de tamaño fijo en el
producción. Esto puede acelerar el acceso variable a la vez, pero ralentizar el registro a la vez.
tiempo de acceso a múltiples variables a lo largo de una dimensión ilimitada.
-w Mantenga la salida en la memoria (como un archivo netCDF sin disco) hasta que se cierre la salida,
El archivo de salida de tiempo se escribe en el disco. Esto puede acelerar en gran medida operaciones como
convertir una dimensión ilimitada en un tamaño fijo (opción -u), fragmentar, volver a fragmentar o
comprimiendo la entrada. Requiere que la memoria disponible sea lo suficientemente grande para contener
el archivo de salida. Esta opción puede proporcionar una aceleración mayor que el ajuste cuidadoso de
las opciones -m, -h, o -e, y ciertamente es mucho más simple.
-c fragmentoespecífico
Para la salida netCDF-4, incluido el modelo clásico netCDF-4, especifique fragmentación
(mosaico multidimensional) para datos variables en la salida. Esto es útil para
especifique las unidades de acceso al disco, compresión u otros filtros, como sumas de comprobación.
Cambiar la fragmentación en un archivo netCDF también puede acelerar enormemente el acceso, eligiendo
Formas de trozos que son apropiadas para los patrones de acceso más comunes.
Los fragmentoespecífico El argumento es una cadena de asociaciones separadas por comas, cada una especifica
un nombre de dimensión, un carácter '/' y, opcionalmente, la longitud del fragmento correspondiente
para esa dimensión. No deben aparecer espacios en blanco en la cadena chunkspec, excepto
posiblemente los espacios en blanco escapados que forman parte de un nombre de dimensión. Un nombre de chunkspec en
por lo menos una dimensión, y puede omitir dimensiones que no deben ser fragmentadas o para
que se desea la longitud predeterminada del fragmento. Si el nombre de una dimensión va seguido de un
carácter '/' pero sin longitud de fragmento posterior, la longitud real de la dimensión es
ficticio. Si copia un archivo de modelo clásico a un archivo de salida netCDF-4 y no nombra
todas las dimensiones en el chunkspec, las dimensiones sin nombre también usarán el
longitud de dimensión para la longitud del trozo. Un ejemplo de chunkspec para variables
que usan dimensiones 'm' y 'n' pueden ser 'm / 100, n / 200' para especificar 100 por 200
trozos. Para ver el fragmento resultante de copiar con un chunkspec, use la '-s'
opción de ncdump en el archivo de salida.
El chunkspec '/' que omite todos los nombres de dimensión y las longitudes de los fragmentos correspondientes
especifica que no se producirá ninguna fragmentación en la salida, por lo que se puede utilizar para descomprimir todas las
las variables fragmentadas. Para ver el fragmento resultante de copiar con un
chunkspec, use la opción '-s' de ncdump en el archivo de salida.
Como optimización de E / S, nccopiar tiene un umbral para el tamaño mínimo de no registro
variables que se fragmentan, actualmente 8192 bytes. En el futuro, el uso de este
El umbral y su tamaño se pueden configurar en una opción.
Tenga en cuenta que nccopiar requiere variables que comparten una dimensión para compartir también el fragmento
tamaño asociado con esa dimensión, pero la interfaz de programación no tiene tal
restricción. Si necesita personalizar la fragmentación de las variables de forma independiente,
necesitará utilizar la API de la biblioteca en un programa de utilidad personalizado.
-v var1, ...
La salida incluirá valores de datos para las variables especificadas, además de la
declaraciones de todas las dimensiones, variables y atributos. Una o más variables
debe especificarse por nombre en la lista delimitada por comas que sigue a esta opción. los
La lista debe ser un solo argumento para el comando, por lo tanto, no puede contener un escape
espacios en blanco u otros caracteres de espacio en blanco. Las variables nombradas deben ser netCDF válidas
variables en el archivo de entrada. Una variable dentro de un grupo en un archivo netCDF-4 puede ser
especificado con un nombre de ruta absoluto, como "/ GroupA / GroupA2 / var". Uso de un
el nombre de la ruta relativa como 'var' o "grp / var" especifica todos los nombres de variables coincidentes
en el archivo. El valor predeterminado, sin esta opción, es incluir valores de datos para all
variables en la salida.
-V var1, ...
La salida incluirá solo las variables especificadas, pero todas las dimensiones y globales
o atributos de grupo. Una o más variables deben especificarse por nombre en la coma.
lista delimitada siguiendo esta opción. La lista debe ser un solo argumento para el
comando, por lo tanto, no puede contener espacios en blanco sin escape u otros caracteres de espacio en blanco. los
las variables nombradas deben ser variables netCDF válidas en el archivo de entrada. Una variable dentro
un grupo en un archivo netCDF-4 se puede especificar con un nombre de ruta absoluto, como
'/ GrupoA / GrupoA2 / var'. Uso de un nombre de ruta relativo como 'var' o 'grp / var'
especifica todos los nombres de variables coincidentes en el archivo. El predeterminado, sin esto
opción, es incluir all variables en la salida.
-g grp1, ...
La salida incluirá valores de datos solo para los grupos especificados. Uno o mas
los grupos deben especificarse por nombre en la lista delimitada por comas que sigue a esta opción.
La lista debe ser un solo argumento para el comando. Los grupos nombrados deben ser válidos
grupos netCDF en el archivo de entrada. El valor predeterminado, sin esta opción, es incluir
valores de datos para todos los grupos en la salida.
-G grp1, ...
La salida incluirá solo los grupos especificados. Uno o más grupos deben estar
especificado por nombre en la lista delimitada por comas que sigue a esta opción. La lista debe
ser un solo argumento para el comando. Los grupos nombrados deben ser grupos netCDF válidos
en el archivo de entrada. El valor predeterminado, sin esta opción, es incluir todos los grupos en
La salida.
-m tamaño buf
Un número entero o de punto flotante que especifica el tamaño, en bytes, de la copia.
búfer utilizado para copiar grandes variables. Un sufijo de K, M, G o T multiplica la copia
tamaño del búfer en mil, millones, mil millones o billones, respectivamente. los
el valor predeterminado es 5 Mbytes, pero se incrementará si es necesario para contener al menos un fragmento
de variables fragmentadas netCDF-4 en el archivo de entrada. Es posible que desee especificar un valor
más grande que el predeterminado para copiar archivos grandes en redes de alta latencia. Utilizando
la opción '-w' puede proporcionar un mejor rendimiento, si la salida cabe en la memoria.
-h caché_fragmento
Para salida netCDF-4, incluido el modelo clásico netCDF-4, un entero o un punto flotante
número que especifica el tamaño en bytes del caché de fragmentos asignado para cada fragmento
variable. Esta no es una propiedad del archivo, sino simplemente un ajuste de rendimiento.
parámetro para evitar comprimir o descomprimir los mismos datos varias veces
mientras copia y cambia las formas de los fragmentos. Un sufijo de K, M, G o T multiplica el
tamaño de la caché de fragmentos en mil, millones, mil millones o billones, respectivamente. los
el valor predeterminado es 4.194304 Mbytes (o lo que se haya especificado para el tiempo de configuración
constante CHUNK_CACHE_SIZE cuando se construyó la biblioteca netCDF). Idealmente, el nccopiar
La utilidad debe aceptar solo un tamaño de búfer de memoria y dividirlo de manera óptima entre un
copia búfer y caché de fragmentos, pero no un algoritmo general para calcular el óptimo
El tamaño de la caché de fragmentos aún se ha implementado. El uso de la opción '-w' puede proporcionar una mejor
rendimiento, si la salida cabe en la memoria.
-e cache_elements
Para la salida netCDF-4, incluido el modelo clásico netCDF-4, especifica el número de fragmentos
que puede contener la caché de fragmentos. Un sufijo de K, M, G o T multiplica el número de
fragmentos que se pueden mantener en la caché por mil, millones, mil millones o
billones, respectivamente. Esta no es una propiedad del archivo, sino simplemente una
parámetro de ajuste de rendimiento para evitar comprimir o descomprimir el mismo
datos varias veces mientras copia y cambia las formas de los fragmentos. El valor predeterminado es 1009
(o lo que se haya especificado para la constante de tiempo de configuración CHUNK_CACHE_NELEMS cuando
se construyó la biblioteca netCDF). Idealmente, el nccopiar La utilidad debe determinar un
valor óptimo para este parámetro, pero no hay un algoritmo general para calcular el
aún se ha implementado el número óptimo de elementos de caché de fragmentos.
-r Lea el archivo de entrada de compensación netCDF classic o de 64 bits en un archivo netCDF sin disco en
memoria antes de copiar. Requiere que el archivo de entrada sea lo suficientemente pequeño para caber en
memoria. Para nccopiar, esto no parece proporcionar una aceleración significativa, por lo que
no será una opción útil.
EJEMPLOS
Haga una copia de foo1.nc, un archivo netCDF de cualquier tipo, a foo2.nc, un archivo netCDF del mismo
tipo:
nccopia foo1.nc foo2.nc
Tenga en cuenta que la copia anterior no será tan rápida como el uso de cp u otra utilidad de copia simple,
porque el archivo se copia utilizando solo la API netCDF. Si el archivo de entrada tiene bytes adicionales
después del final de los datos netCDF, no se copiarán, porque no son
accesible a través de la interfaz netCDF. Si el archivo original se generó en "Sin relleno"
modo para que los valores de relleno no se almacenen para el relleno para la alineación de datos, el archivo de salida
puede tener diferentes bytes de relleno.
Convierta un archivo de modelo clásico netCDF-4, compressed.nc, que usa compresión, en un netCDF-3
archivo classic.nc:
nccopy -k clásico comprimido.nc clásico.nc
Tenga en cuenta que 'nc3' podría usarse en lugar de 'clásico'.
Descargue la variable 'time_bnds' y sus atributos asociados desde un servidor OPeNDAP y
copie el resultado a un archivo netCDF llamado 'tb.nc':
nccopy 'http://test.opendap.org/opendap/data/nc/sst.mnmean.nc.gz? time_bnds 'tb.nc
Tenga en cuenta que las URL que nombran variables específicas como argumentos de línea de comandos generalmente deben ser
entre comillas, para evitar que el shell interprete caracteres especiales como '?'.
Comprima todas las variables en el archivo de entrada foo.nc, un archivo netCDF de cualquier tipo, al
archivo de salida bar.nc:
nccopy -d1 foo.nc bar.nc
Si foo.nc era un archivo netCDF de desplazamiento clásico o de 64 bits, bar.nc será un clásico de netCDF-4
modelo de archivo netCDF, porque las variantes de formato de desplazamiento clásico y de 64 bits no admiten
compresión. Si foo.nc era un archivo netCDF-4 con algunas variables comprimidas usando varios
niveles de deflación, la salida también será un archivo netCDF-4 del mismo tipo, pero todos los
las variables, incluidas las variables sin comprimir en la entrada, ahora usarán el nivel de deflación
1.
Suponga que los datos de entrada incluyen variables cuadriculadas que usan dimensiones de tiempo, latitud y longitud, con
1000 veces por 1000 latitudes por 1000 longitudes, y que la dimensión del tiempo varía más
despacio. Suponga también que los usuarios desean un acceso rápido a los datos en todo momento para un pequeño conjunto de
puntos lat-lon. Acceder a los datos 1000 veces normalmente requeriría acceder a 1000 discos
bloques, que pueden ser lentos.
Reorganizar los datos en fragmentos en el disco que tienen todo el tiempo en cada fragmento durante unos pocos
las coordenadas lat y lon acelerarían enormemente dicho acceso. Para fragmentar los datos en el
archivo de entrada slow.nc, un archivo netCDF de cualquier tipo, al archivo de salida fast.nc, puede usar;
nccopy -c tiempo / 1000, lat / 40, lon / 40 slow.nc fast.nc
para especificar fragmentos de datos de 1000 tiempos, 40 latitudes y 40 longitudes. Si tuvieras suficiente
memoria para contener el archivo de salida, puede acelerar la operación de reagrupamiento
significativamente al crear la salida en la memoria antes de escribirla en el disco al cerrar:
nccopy -w -c tiempo / 1000, lat / 40, lon / 40 slow.nc fast.nc
Use nccopy en línea usando los servicios de onworks.net