Lebih

Bagaimana cara membuat netcdf dengan subkelompok lebih kecil?


Saya mencoba menulis tes untuk kode yang berfungsi dengan data sirkulasi laut global hycom netcdf. File sumber 2 subdataset:

gdalinfo hycom_glb_911_2015110200_t000_uv3z.nc | grep _NAME SUBDATASET_1_NAME=NETCDF:"hycom_glb_911_2015110200_t000_uv3z.nc":water_u SUBDATASET_2_NAME=NETCDF:"hycom_glb_911_2015110200_t000_uv3z.nc":water_v

Dengan 40 band kedalaman:

gdalinfo NETCDF:hycom_glb_911_2015110200_t000_uv3z.nc:water_u | grep '^Band' | head -3 Pita 1 Blok=4500x1 Tipe=Int16, ColorInterp=Blok Tidak Terdefinisi 2 Blok=4500x1 Tipe=Int16, ColorInterp=Band Tidak Terdefinisi 3 Blok=4500x1 Tipe=Int16, ColorInterp=Tidak Terdefinisi

Saya memiliki beberapa kode yang ditulis untuk melakukan hal-hal seperti menghitung kecepatan dalam m/s dari UV dan membuat geotiff, dll. File aslinya terlalu besar untuk digunakan di unittests. Apakah ada cara mudah dengan gdal, nco atau ? untuk menjaga struktur dan metadata, tetapi membuat file yang jauh lebih kecil? Saya terbuka untuk menjatuhkan semua kecuali dua pita pertama dan menulis nilai konstan ke setiap pita + menyalakan kompresi kempis.

Mencoba dengan GDAL:

gdal_translate --version # At head -> r31584 GDAL 2.1.0dev, dirilis 2015/99/99 gdal_translate hycom_glb_911_2015110200_t000_uv3z.nc hycom_glb_911_2015110200_t000_uv3z-try2.nc -of netcdf -co compress=deflate File input berisi subdataset. Silakan, pilih salah satunya untuk dibaca.

Dokumen asli agak besar untuk pengujian:

wget ftp://ftp.hycom.org/datasets/GLBu0.08/expt_91.1/data/hindcasts/2015/hycom_glb_911_2015110200_t000_uv3z.nc ls -lh hycom_glb_911_2015110200_t000_uv3z.nc -rw-r----- 1 grup schwehr 19 Nov 09:13 hycom_glb_911_2015110200_t000_uv3z.nc

Detail file netcdf sumber:

ncdump -h hycom_glb_911_2015110200_t000_uv3z.nc netcdf hycom_glb_911_2015110200_t000_uv3z { dimensi: lat = 2001 ; panjang = 4500 ; kedalaman = 40 ; waktu = TANPA BATAS ; // (1 saat ini) variabel: double time(waktu) ; waktu:long_name = "Waktu yang Berlaku" ; time:units = "jam sejak 01-01-2000 00:00:00" ; time:time_origin = "2000-01-01 00:00:00" ; waktu:kalender = "gregorian" ; waktu:sumbu = "T" ; waktu:NAVO_code = 13 ; tau ganda (waktu); tau:nama_panjang = "Tau" ; tau:unit = "jam sejak analisis" ; tau:time_origin = "2015-11-02 00:00:00" ; tau:NAVO_code = 56 ; kedalaman ganda (kedalaman); kedalaman:nama_panjang = "Kedalaman" ; kedalaman:nama_standar = "kedalaman" ; kedalaman:satuan = "m" ; kedalaman:positif = "turun" ; kedalaman:sumbu = "Z" ; kedalaman:NAVO_code = 5 ; lat ganda (lat) ; lat:long_name = "Lintang" ; lat:nama_standar = "lintang" ; lat:satuan = "derajat_utara" ; lat:point_spacing = "genap" ; lat:sumbu = "Y" ; lat:NAVO_code = 1 ; lon ganda (lon); lon:long_name = "Bujur" ; lon:standard_name = "bujur" ; lon:unit = "derajat_timur" ; lon:modulo = "360 derajat" ; lon:sumbu = "X" ; lon:NAVO_code = 2 ; short water_u(waktu, kedalaman, lat, lon); water_u:long_name = "Kecepatan Air ke Timur" ; water_u:standard_name = "eastward_sea_water_velocity" ; air_u:satuan = "m/s" ; water_u:_FillValue = -30000s ; water_u:missing_value = -30000s ; water_u:scale_factor = 0,001f ; water_u:add_offset = 0.f ; air_u:NAVO_code = 17 ; short water_v(waktu, kedalaman, bujur, bujur); water_v:long_name = "Kecepatan Air ke Utara" ; water_v:standard_name = "northward_sea_water_velocity" ; air_v:satuan = "m/s" ; water_v:_FillValue = -30000s ; water_v:missing_value = -30000s ; water_v:scale_factor = 0,001f ; water_v:add_offset = 0.f ; water_v:NAVO_code = 18 ; // atribut global: :classification_level = "UNCLASSIFIED" ; :distribution_statement = "Disetujui untuk rilis publik. Distribusi tidak terbatas." ; :downgrade_date = "tidak berlaku" ; :classification_authority = "tidak berlaku" ; :institusi = "Kantor Oseanografi Angkatan Laut" ; :source = "file arsip HYCOM" ; :sejarah = "archv2ncdf3z" ; :field_type = "seketika" ; :Konvensi = "CF-1.0 NAVO_netcdf_v1.0" ;

Saya akan menggunakan ncks NCO:

ncks -v water_u,water_v -d,kedalaman,1,2,1 hycom_glb_911_2015110200_t000_uv3z.nc out.nc

dengan 'kedalaman' apa pun kedalaman/dimensi pitanya.


Tonton videonya: Tutorial GrADS - Plotting Data NetCDF .nc dengan GrADS (Oktober 2021).