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