GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il un moyen de recadrer un fichier NETCDF ?

Oui, en utilisant ncks du NCO paquet :http://nco.sourceforge.net/nco.html

Si vous connaissez les indices correspondant à la plage lat/lon que vous voulez, disons qu'ils sont 30-40 en latitude et 25-50 en longitude par exemple, alors vous pouvez recadrer le fichier netCDF avec

ncks -d lat,30,40 -d lon,25,50 example.nc -O cropped_example.nc

assurez-vous de spécifier les indices avec des valeurs entières.

Sinon, vous pouvez également spécifier directement la plage des valeurs lat et lon que vous souhaitez, mais dans ce cas, vous devez assurez-vous d'utiliser des points décimaux pour passer la plage sous forme de flottants.

 ncks -d lat,30.,-10. -d lon,-30.,60. example.nc -O cropped_example.nc

nco fonctionne bien, mais juste pour lister une alternative, on peut aussi le faire en utilisant cdo (opérateurs de données climatiques), que je trouve plus facile à retenir. Vous pouvez spécifier directement les valeurs de longitude et de latitude de cette manière :

cdo sellonlatbox,lon1,lon2,lat1,lat2 infile.nc outfile.nc

où lon1, lon2, lat1, lat2 définissent les limites de la zone dont vous avez besoin.

Notez que la longitude peut être spécifiée en utilisant les conventions 0:360 ou -180:180 indépendamment de celle utilisée dans le fichier d'entrée. Les conventions de sortie suivront celles utilisées dans la commande cdo. Cette commande peut également être utilisée pour convertir un fichier d'un format à l'autre.

Pour plus de détails sur l'extraction des sous-régions, j'ai posté ce tutoriel vidéo sur youtube

Si vous n'avez pas cdo déjà installé, vous pouvez l'obtenir sur Ubuntu avec

sudo apt-get install cdo

cdo a de nombreuses autres fonctions pour traiter, combiner et diviser des fichiers et une excellente documentation en ligne. Notez que pour cdo pour travailler les variables de coordonnées (lat/lon) doivent être définies selon les conventions CF, donc de cette façon le nco solution est plus robuste.


Si vous utilisez Linux ou macOS, vous pouvez le faire facilement en utilisant nctoolkit (https://nctoolkit.readthedocs.io/en/latest/) sur Python.

import nctoolkit as nc
data = nc.open_data("example.nc")
data.crop(lon = [25, 50], lat = [30, 40])
data.to_nc("output.nc")

Sous le capot, nctoolkit utilise CDO. Ce qui précède est donc l'équivalent de l'approche CDO mentionnée ci-dessus :

cdo sellonlatbox,lon1,lon2,lat1,lat2 infile.nc outfile.nc

Linux
  1. Linux – Synchronisation de fichiers en temps réel ?

  2. Un moyen portable d'obtenir la taille du fichier (en octets) dans le shell ?

  3. Existe-t-il un moyen de 'uniq' par colonne?

  4. Existe-t-il un moyen d'inspecter le rpath actuel sous Linux ?

  5. Existe-t-il un moyen de déterminer la taille décompressée d'un fichier .bz2 ?

Existe-t-il un moyen de modifier des fichiers à l'intérieur d'un fichier zip sans les extraire explicitement au préalable ?

Existe-t-il un moyen de redémarrer les badblocks ?

Existe-t-il un moyen de sélectionner plusieurs conditions dans 'ps' ?

Existe-t-il un moyen d'écouter le processus ?

Le moyen le plus sûr de forcer la fermeture d'un descripteur de fichier

Existe-t-il un moyen rapide d'obtenir le tout dernier fichier dans un grand TAR ?