יותר

איך אפשר להפוך netcdf עם קבוצות משנה לקטנות יותר?


אני מנסה לכתוב מבחן לקוד שעובד עם נתוני מחזור האוקיינוס ​​הגלובלי של hycom netcdf. קובץ המקור 2 מערכי משנה:

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

עם 40 להקות עומק:

gdalinfo NETCDF: hycom_glb_911_2015110200_t000_uv3z.nc: water_u | grep '^ להקה' | ראש -3 בלוק 1 בלוק = 4500x1 סוג = Int16, ColorInterp = לא מוגדר פס 2 בלוק = 4500x1 סוג = Int16, ColorInterp = לא מוגדר פס 3 בלוק = 4500x1 סוג = Int16, ColorInterp = לא מוגדר

יש לי איזה קוד כתוב שעושה דברים כמו לחשב את המהירות ב- m / s מה- UV ויוצר geotiff וכו '. הקבצים המקוריים גדולים בהרבה לשימוש בביטולים. האם יש דרך קלה עם gdal, nco או? לשמור על המבנה והמטא נתונים, אך ליצור קובץ קטן בהרבה? אני פתוח להוריד את כל הלהקות מלבד שתי הלהקות הראשונות ולכתוב ערך קבוע לכל רצועה + להפעיל דחיסת ניפוח.

מנסה עם GDAL:

gdal_translate - גרסה # בראש -> r31584 GDAL 2.1.0dev, שוחרר 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 אנא בחר אחד מהם לקריאה.

המקור גדול למדי לבדיקות:

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 קבוצה schwehr 19 בנובמבר 09:13 hycom_glb_911_2015110200_t000_uv3z.nc

הפרטים של קובץ המקור netcdf:

ncdump -h hycom_glb_911_2015110200_t000_uv3z.nc netcdf hycom_glb_911_2015110200_t000_uv3z {מידות: lat = 2001; לון = 4500; עומק = 40; זמן = ללא הגבלה; // (1 כרגע) משתנים: זמן כפול (זמן); time: long_name = "זמן תקף"; זמן: יחידות = "שעות מאז 01-01-2000 00:00:00"; זמן: time_origin = "01-01-2000 00:00:00"; זמן: לוח שנה = "גרגוריאן"; זמן: ציר = "T"; זמן: NAVO_code = 13; טאו כפול (זמן); tau: long_name = "טאו"; tau: יחידות = "שעות מאז הניתוח"; tau: time_origin = "02-11-2015 00:00:00"; tau: NAVO_code = 56; עומק כפול (עומק); עומק: long_name = "עומק"; עומק: standard_name = "עומק"; עומק: יחידות = "m"; עומק: חיובי = "למטה"; עומק: ציר = "Z"; עומק: NAVO_code = 5; lat כפול (lat); lat: long_name = "קו רוחב"; lat: standard_name = "latitude"; lat: יחידות = "מעלות_צפון"; lat: point_spacing = "אפילו"; lat: axis = "Y"; lat: NAVO_code = 1; לון כפול (לון); lon: long_name = "קו אורך"; lon: standard_name = "קו אורך"; lon: יחידות = "מעלות_מזרח"; lon: modulo = "360 מעלות"; lon: axis = "X"; lon: NAVO_code = 2; water_u קצר (זמן, עומק, lat, lon); water_u: long_name = "מהירות מים מזרחה"; water_u: standard_name = "מזרח_ים_מים"; water_u: יחידות = "m / s"; water_u: _FillValue = -30000 שניות; water_u: חסר_ערך = -30000 שניות; water_u: scale_factor = 0.001f; water_u: add_offset = 0.f; water_u: NAVO_code = 17; water_v קצר (זמן, עומק, lat, lon); water_v: long_name = "מהירות מים צפונה"; water_v: standard_name = "צפון_ים_מים"; water_v: יחידות = "m / s"; water_v: _FillValue = -30000 שניות; water_v: חסר_ערך = -30000 שניות; water_v: scale_factor = 0.001f; water_v: add_offset = 0.f; water_v: NAVO_code = 18; // תכונות גלובליות:: klassificering_level = "UNCLASSIFIED"; : distribution_statement = "אושר לשחרור פומבי. הפצה בלתי מוגבלת." ; : downgrade_date = "לא ישים"; : ranking_authority = "לא ישים"; : institution = "המשרד האוקיאנוגרפי הימי"; : source = "קובץ הארכיון של HYCOM"; : history = "archv2ncdf3z"; : field_type = "מיידי"; : קונבנציות = "CF-1.0 NAVO_netcdf_v1.0";

הייתי משתמש ב- NCS של המש"ק:

ncks -v water_u, water_v -d, עומק, 1,2,1 hycom_glb_911_2015110200_t000_uv3z.nc out.nc

כאשר 'עומק' הוא מימד העומק / הלהקה אשר יהיה.


צפו בסרטון: Free NetCDF Viewer in Windows (סֶפּטֶמבֶּר 2021).