ncgen3 - אונליין בענן

זוהי הפקודה ncgen3 שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות החינמיות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS.

תָכְנִית:

שֵׁם


ncgen3 - צור קובץ netCDF קלאסי או קובץ קלאסי של 64 סיביות, תוכנית C, או
תוכנית Fortran

תַקצִיר


ncgen3 [-b] [-c] [-f] [-k סוג_הקובץ] [-x] [-n] [-o שם_קובץ_netcdf] input_file

תיאור


ncgen3 יוצר קובץ netCDF, או קוד מקור ב-C או ב-Fortran כדי ליצור netCDF
קובץ. הקלט אל ncgen3 הוא תיאור של קובץ netCDF בשפה קטנה המכונה
CDL (רשת Common Data form Language), המתואר להלן. אם לא צוינו אפשרויות ב
מזמין ncgen3, זה רק בודק את התחביר של קובץ ה-CDL הקלט, ויוצר שגיאה
הודעות על כל הפרה של תחביר CDL. ניתן להשתמש באפשרויות אחרות כדי ליצור את
קובץ netCDF המתאים, כדי ליצור תוכנית C המשתמשת בממשק C של netCDF כדי
ליצור את קובץ netCDF, או ליצור תוכנית Fortran המשתמשת בקובץ netCDF Fortran
ממשק ליצירת אותו קובץ netCDF.

ncgen3 ניתן להשתמש בו עם תוכנית הנלווית ncdump לבצע כמה פעולות פשוטות על
קבצי netCDF. לדוגמה, כדי לשנות שם של ממד בקובץ netCDF, השתמשו ncdump כדי לקבל
גרסת CDL של קובץ netCDF, ערוך את קובץ ה-CDL כדי לשנות את שם המימדים,
ואת השימוש ncgen3 כדי ליצור את קובץ ה-netCDF המתאים מקובץ ה-CDL הערוך.

אפשרויות


-b צור קובץ netCDF (בינארי). אם ה- -o האפשרות נעדרת, שם קובץ ברירת מחדל
ייבנה משם netCDF (שיצוין לאחר ה- netcdf מילת מפתח ב
קלט) על ידי הוספת הסיומת `.nc'. אם כבר קיים קובץ עם
שם שצוין, הוא ייכתב מחדש.

-c ליצור C קוד מקור שייצור קובץ netCDF התואם ל- netCDF
מפרט. קוד המקור של C נכתב לפלט סטנדרטי.

-f ליצור פורטרן קוד מקור שייצור קובץ netCDF התואם ל- netCDF
מפרט. קוד המקור של Fortran נכתב לפלט סטנדרטי.

-o קובץ_netcdf
שם עבור קובץ הבינארי netCDF שנוצר. אם אפשרות זו צוינה, הדבר מרמז
ה "-b" אפשרות. (אפשרות זו נחוצה מכיוון שלא ניתן לכתוב קבצי netCDF
ישירות לפלט סטנדרטי, מכיוון שלא ניתן לחפש פלט סטנדרטי.)

-k סוג_הקובץ
שימוש ב-k2 או k-"היסט של 64 סיביות" מציין שהקובץ (או התוכנית) שנוצרו צריכים
השתמש בגרסה 2 של הפורמט המשתמש בהיסטי קבצים של 64 סיביות. ברירת המחדל היא להשתמש
פורמט גרסה 1 ("קלאסי") עם היסט קבצים של 32 סיביות, אם כי זה מגביל את
גודל קובץ netCDF, המשתנים והרשומות לגדלים הנתמכים על ידי
פורמט קלאסי. (NetCDF-4 יתמוך בסוגים נוספים של קבצי netCDF,
"netCDF-4" ו-"netCDF-4 classic model".) הערה: -v מקובל גם כמשמעותו של
אותו דבר כמו -k לתאימות לאחור, אבל -k עדיף, כדי להתאים ל-
אפשרות ncdump המתאימה.

-x אין לאתחל נתונים עם ערכי מילוי. זה יכול להאיץ את יצירתם של קבצי netCDF גדולים.
קבצים במידה רבה, אך מאוחר יותר מנסה לקרוא נתונים שלא נכתבו מהקובץ שנוצר
לא יהיה ניתן לגילוי בקלות.

דוגמאות


בדוק את התחביר של קובץ ה-CDLfoo.cdl':

ncgen3 foo.cdl

מקובץ ה-CDLfoo.cdl', צור קובץ netCDF בינארי שווה ערך בשם `x.nc':

ncgen3 -o x.nc foo.cdl

מקובץ ה-CDLfoo.cdl', צור תוכנית C המכילה את הפונקציה netCDF
קריאות הדרושות ליצירת קובץ netCDF בינארי שווה ערך בשם `x.nc':

ncgen3 -c -o x.nc foo.cdl

נוהג


CDL תחביר <br> סיכום
להלן דוגמה לתחביר CDL, המתאר קובץ netCDF עם מספר ממדים בעלי שם
(קו רוחב, קו אורך וזמן), משתנים (Z, t, p, rh, קו רוחב, קו אורך, זמן), תכונות משתנים (יחידות,
long_name, valid_range, _FillValue), וכמה נתונים. מילות מפתח של CDL מודגשות. (זה
הדוגמה נועדה להמחיש את התחביר; קובץ CDL אמיתי יהיה בעל מידע שלם יותר
קבוצת תכונות כך שהנתונים יהיו בעלי תיאור עצמי מלא יותר.)

netcdf foo { // דוגמה למפרט netCDF ב-CDL

ממדים:
קו רוחב = 10, קו אורך = 5, זמן = בלתי מוגבל ;

משתנים:
ארוך lat(lat), lon(lon), זמן(זמן);
לצוף Z(זמן, רוחב, אורך), t(זמן, רוחב, אורך);
לְהַכפִּיל p(זמן, רוחב, אורך);
ארוך rh(זמן, רוחב, אורך);

// תכונות משתנות
קו רוחב (lat:long_name = "latitude");
יחידות lat = "מעלות_צפון";
lon:long_name = "קו אורך";
lon:units = "מעלות_מזרח";
זמן:יחידות = "שניות מאז 1992-1-1 00:00:00";
Z: יחידות = "מטרים גיאופוטנציאליים";
Z: טווח_תקין = 0., 5000.;
p:_FillValue = -9999.;
rh:_FillValue = -1;

נתונים:
lat = 0, 10, 20, 30, 40, 50, 60, 70, 80, 90;
לונג = -140, -118, -96, -84, -52;
}

כל משפטי ה-CDL מסתיימים בנקודה-פסיק. ניתן להשתמש ברווחים, טאבים ושורות חדשות.
בחופשיות לקריאה. הערות יכולות להופיע לאחר התווים `//` בכל שורה.

תיאור CDL מורכב משלושה חלקים אופציונליים: ממדים, משתנים, ו נתונים,
מתחיל עם מילת המפתח ממדים:, משתנים:, ו נתונים, בהתאמה. המשתנה
חלק עשוי להכיל משתנה הצהרות ו תכונה הקצאות.

netCDF ממד משמש להגדרת צורתו של אחד או יותר מהמרכיבים הרב-ממדיים
משתנים הכלולים בקובץ netCDF. לממד netCDF יש שם וגודל. ב
רוב המימד האחד בקובץ netCDF יכול להכיל את בלתי מוגבל גודל, שמשמעותו משתנה
שימוש בממד זה יכול לגדול לכל אורך (כמו מספר רשומה בקובץ).

A משתנה מייצג מערך רב-ממדי של ערכים מאותו סוג. למשתנה יש
שם, סוג נתונים וצורה המתוארת על ידי רשימת הממדים שלה. כל משתנה עשוי
יש גם קשורים תכונות (ראה להלן) וכן ערכי נתונים. השם, סוג הנתונים,
וצורת המשתנה מוגדרות על ידי ההכרזה שלו ב- משתנה קטע של CDL
תיאור. למשתנה יכול להיות אותו שם כמו לממד; לפי מוסכמה כגון
המשתנה הוא חד-ממדי ומכיל קואורדינטות של הממד שהוא נותן לו את השם.
לממדים אין צורך שיהיו משתנים תואמים.

netCDF תכונה מכיל מידע על משתנה netCDF או על netCDF כולו
מערך נתונים. מאפיינים משמשים לציון מאפיינים כגון יחידות, ערכים מיוחדים, מקסימום
וערכים מינימליים תקפים, גורמי קנה מידה, קיזוזים ופרמטרים. מידע על מאפיינים
מיוצג על ידי ערכים בודדים או מערכים של ערכים. לדוגמה, "יחידות" היא תכונה
מיוצג על ידי מערך תווים כגון "צלזיוס". לתכונה יש ערך משויך
משתנה, שם, סוג נתונים, אורך וערך. בניגוד למשתנים שהם
מיועדים לנתונים, מאפיינים מיועדים למטא-דאטה (נתונים על נתונים).

ב-CDL, מאפיין מסומן על ידי משתנה ושם מאפיין, מופרדים על ידי `:`.
ניתן להקצות גלוֹבָּלִי תכונות שאינן משויכות לאף משתנה ל-netCDF כ-
שלם על ידי שימוש ב-`:' לפני שם התכונה. סוג הנתונים של תכונה ב-CDL הוא
נגזר מסוג הערך המוקצה לו. אורך התכונה הוא ה
מספר ערכי הנתונים שהוקצו לו, או מספר התווים במחרוזת התווים
מוקצים לו. ערכים מרובים מוקצים לתכונות שאינן תווים על ידי הפרדה
הערכים מסומנים בפסיקים. כל הערכים שהוקצו לתכונה חייבים להיות מאותו סוג.

שמות הממדים, המשתנים והמאפיינים של CDL חייבים להתחיל באות אלפביתית
התו או `_', והתווים הבאים עשויים להיות אלפאנומריים או `_' או `-'.

האופציונלי נתונים החלק של מפרט CDL הוא המקום שבו משתני netCDF עשויים להיות
אותחל. התחביר של אתחול הוא פשוט: שם משתנה, סימן שוויון,
ורשימה של קבועים מופרדים בפסיקים (ייתכן ומופרדים באמצעות רווחים, טאבים ושורות חדשות)
מסתיים בנקודה-פסיק. עבור מערכים רב-ממדיים, הממד האחרון משתנה
המהיר ביותר. לכן, סדר שורות ולא סדר עמודות משמש עבור מטריצות. אם פחות ערכים
מסופקים יותר ממה שצריך כדי למלא משתנה, הוא מורחב עם משתנה תלוי-סוג
`fill value`, אשר ניתן לעקוף על ידי מתן ערך עבור משתנה ייחודי
תכונה בשם `_FillValue'. סוגי הקבועים אינם חייבים להתאים לסוג המוצהר עבור
משתנה; כפייה נעשית כדי להמיר מספרים שלמים למספרים צפה, לדוגמה. ה-
ניתן להשתמש בקבוע `_' כדי לציין את ערך המילוי עבור משתנה.

פרימיטיבי נתונים סוגים
char תווים
בייט נתונים של 8 סיביות
קצר מספרים שלמים חתומים של 16 סיביות
ארוך מספרים שלמים חתומים של 32 סיביות
int (מילה נרדפת ל ארוך)
לצוף נקודה צפה מדויקת יחידה של IEEE (32 סיביות)
ממשי (מילה נרדפת ל לצוף)
לְהַכפִּיל נקודה צפה כפולה בדיוק של IEEE (64 סיביות)

למעט סוג הנתונים שנוסף בייט והיעדר לא חתום, CDL תומך באותו הדבר
טיפוסי נתונים פרימיטיביים כמו C. שמות טיפוסי הנתונים הפרימיטיביים הם מילים שמורות ב
CDL, כך ששמות המשתנים, הממדים והמאפיינים אינם חייבים להיות שמות טיפוסים. ב
הצהרות, שמות סוגים עשויים להינתן באותיות גדולות או קטנות.

בתים שונים מתווים בכך שהם נועדו להכיל שמונה ביטים מלאים של נתונים,
ולבייט האפס אין משמעות מיוחדת, כמו שיש לו עבור נתוני תווים. ncgen3
המתגייר בייט הצהרות ל char הצהרות בקוד C של הפלט ול-
לא סטנדרטי BYTE הצהרה בפלט של קוד Fortran.

שורטס יכולים להחזיק ערכים בין -32768 ל-32767. ncgen3 המתגייר קצר הצהרות ל
קצר הצהרות בקוד C של הפלט ולקוד הלא סטנדרטי מספר שלם*2 הצהרה ב
פלט קוד Fortran.

ערך ארוך יכול להחזיק ערכים בין -2147483648 ל-2147483647. ncgen3 המתגייר ארוך
הצהרות ל ארוך הצהרות בקוד C של הפלט ול- מספר שלם הצהרות ב
פלט קוד Fortran. int ו מספר שלם מתקבלים כמילים נרדפות עבור ארוך ב-CDL
הצהרות. כעת, כשישנן פלטפורמות עם ייצוגים של 64 סיביות עבור קוד C long, זה
אולי עדיף להשתמש ב- int שם נרדף כדי למנוע בלבול.

צפים יכולים להחזיק ערכים בין -3.4+38 ל-3.4+38 בערך. הייצוג החיצוני שלהם הוא
כמספרים צפה בדיוק יחיד מנורמלים על ידי IEEE של 32 סיביות. ncgen3 המתגייר לצוף
הצהרות ל לצוף הצהרות בקוד C של הפלט ול- נדל"ן הצהרות בפלט
קוד פורטרן. ממשי מקובל כמילה נרדפת ל לצוף בהצהרות CDL.

כפילים יכולים להחזיק ערכים בין -1.7+308 ל-1.7+308 בערך. הייצוג החיצוני שלהם
הוא כמספרים צפה בדיוק כפול מנורמלים בתקן IEEE של 64 סיביות. ncgen3
המתגייר לְהַכפִּיל הצהרות ל לְהַכפִּיל הצהרות בקוד C של הפלט ול- לְהַכפִּיל
דיוק הצהרות בפלט של קוד Fortran.

CDL קבועים
קבועים המוקצים לתכונות או משתנים יכולים להיות מכל אחד מסוגי netCDF הבסיסיים.
התחביר עבור קבועים דומה לתחביר C, פרט לכך שסיומות הסוג חייבות להיות
מצורף למכנסיים קצרים ולגלימות מצופות כדי להבדיל אותן ממכנסיים ארוכים וכפולים.

A בייט קבוע מיוצג על ידי רצף בריחה של תו בודד או של מספר תווים
מוקף במרכאות בודדות. לדוגמה,
'a' // ASCII `a'
'\0' // בייט אפס
'\n' // תו שורה חדשה ASCII
'\33' // תו בריחה ASCII (33 אוקטלי)
'\x2b' // ASCII פלוס (2b hex)
'\377' // 377 אוקטלי = 255 עשרוני, לא ASCII

קבועי תווים מוקפים במרכאות כפולות. ניתן לייצג מערך תווים
כמחרוזת בתוך מרכאות כפולות. מוסכמות הבריחה הרגילות של מחרוזות C נשמרות.
לדוגמה
"א" // ASCII `א'
"שתי שורות" // מחרוזת בת 10 תווים עם שתי שורות חדשות מוטמעות
"a bell:\007" // מחרוזת המכילה פעמון ASCII
שים לב שמערך התווים netCDF "a" יתאים למשתנה בעל אלמנט אחד, מכיוון שאין
מניחים תו NULL מסתיים. עם זאת, בייט אפס במערך תווים הוא
מתפרש כסוף הדמויות המשמעותיות על ידי ה ncdump תוכנית, בעקבות ה
מוסכמה ב-C. לכן, אין להטמיע בייט NULL במחרוזת תווים אלא אם כן
בסוף: השתמשו ב- בייט סוג נתונים במקום זאת עבור מערכי בתים המכילים את הבייט אפס.
ל-NetCDF ול-CDL אין סוג מחרוזת, אלא רק מערכי תווים באורך קבוע, שעשויים להיות
רַב מֵמָדִים.

קצר קבועי מספרים שלמים נועדו לייצוג כמויות חתומות של 16 סיביות. הצורה
של קצר קבוע הוא קבוע שלם עם `s` או `S` נוסף. אם קצר
קבוע שמתחיל ב-'0', הוא מתפרש כאוקטלי, אלא שאם הוא מתחיל ב-'0x',
הוא מתפרש כקבוע הקסדצימלי. לדוגמה:
-2s // קצר -2
0123s // אוקטלי
0x7ffs // הקסדצימלי

ארוך קבועי מספרים שלמים נועדו לייצוג כמויות חתומות של 32 סיביות. הצורה
של ארוך קבוע הוא קבוע שלם רגיל, למרות שמקובל להוסיף
אופציונלי `l' או `L'. אם ארוך קבוע שמתחיל ב-'0', הוא מתפרש כאוקטלי,
אלא שאם זה מתחיל ב-`0x`, זה מתפרש כקבוע הקסדצימלי.
של תקף ארוך קבועים כוללים:
-2
1234567890L
0123 // אוקטלי
0x7ff // הקסדצימלי

קבועי נקודה צפה מסוג לצוף מתאימים לייצוג נקודה צפה
נתונים בדיוק של כשבע ספרות משמעותיות. צורתו של לצוף קבוע הוא
זהה לקבוע נקודה צפה ב-C עם `f' או `F' מצורפים. לדוגמה,
כל הדברים הבאים מקובלים לצוף קבועים:
-2.0ו
3.14159265358979f // ייקצץ לדיוק נמוך יותר
1. f

קבועי נקודה צפה מסוג לְהַכפִּיל מתאימים לייצוג נקודה צפה
נתונים בדיוק של כשש עשרה ספרות משמעותיות. צורתו של לְהַכפִּיל קבוע הוא
זהה לקבוע נקודה צפה ב-C. ניתן להוסיף `d' או `D' אופציונליים. עבור
לדוגמה, הדברים הבאים כולם מקובלים לְהַכפִּיל קבועים:
-2.0
3.141592653589793
1.0e-20
1. ד

השתמש ב-ncgen3 באופן מקוון באמצעות שירותי onworks.net



התוכניות המקוונות האחרונות של לינוקס ו-Windows