GNU/Linux >> Znalost Linux >  >> Linux

Existuje způsob, jak oříznout soubor NETCDF?

Ano, pomocí ncks z NCO balíček:http://nco.sourceforge.net/nco.html

Pokud znáte indexy odpovídající požadovanému rozsahu šířky/délky, řekněme, že jsou 30-40 v zeměpisné šířce a 25-50 pro zeměpisnou délku, pak můžete soubor netCDF oříznout pomocí

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

ujistěte se, že zadáváte indexy s celočíselnými hodnotami.

Jinak můžete také přímo zadat požadovaný rozsah hodnot zeměpisné šířky a délky, ale v tomto případě musíte ujistěte se, že používáte desetinné čárky k předání rozsahu jako plovoucí.

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

nco funguje dobře, ale jen pro uvedení alternativy to lze udělat také pomocí cdo (operátoři klimatických dat), které se mi snadněji pamatují. Hodnoty zeměpisné délky a šířky můžete zadat přímo tímto způsobem:

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

kde lon1, lon2, lat1, lat2 definují hranice oblasti, kterou požadujete.

Všimněte si, že zeměpisnou délku lze zadat pomocí konvencí 0:360 nebo také -180:180 bez ohledu na to, které je použito ve vstupním souboru. Výstupní konvence se budou řídit konvencemi použitými v příkazu cdo. Tento příkaz lze také použít k převodu souboru z jednoho formátu do druhého.

Pro více podrobností o extrakci podoblastí jsem zveřejnil tento video tutoriál na youtube

Pokud nemáte cdo již nainstalovaný, můžete jej získat na Ubuntu s

sudo apt-get install cdo

cdo má mnoho dalších funkcí pro zpracování, kombinování a rozdělování souborů a vynikající online dokumentaci. Všimněte si, že pro cdo aby fungovaly souřadnicové proměnné (šířka/délka), musí být definovány podle konvencí CF, takže nco řešení je robustnější.


Pokud používáte Linux nebo macOS, můžete to snadno provést pomocí nctoolkit (https://nctoolkit.readthedocs.io/en/latest/) v Pythonu.

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

Pod kapotou nctoolkit používá CDO. Výše uvedené je tedy ekvivalentem výše zmíněného přístupu CDO:

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

Linux
  1. Existuje způsob, jak restartovat špatné bloky?

  2. Existuje způsob, jak zkopírovat text v htop?

  3. Existuje správný způsob, jak vymazat protokoly?

  1. Jak upravit soubor na místě?

  2. Linux – synchronizace souborů v reálném čase?

  3. Přenosný způsob, jak získat velikost souboru (v bajtech) v shellu?

  1. Existuje způsob, jak „uniq“ podle sloupce?

  2. Existuje způsob, jak zkontrolovat aktuální rpath v Linuxu?

  3. Existuje způsob, jak určit dekomprimovanou velikost souboru .bz2?