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