קורס גראדס - שיעור 3 (חלק 1) - כניסה לתוך הקוד

נתנאל531

Well-known member
הקדמה

קישור לשיעור 2 - יצירת מפת משקעים - http://www.tapuz.co.il/forums/viewmsg/393/179827275/טבע_ומזג_אוויר/מזג_האוויר
קישור לשיעור 1 - התקנה - http://www.tapuz.co.il/forums/viewmsg/393/179813942/טבע_ומזג_אוויר/מזג_האוויר

לאחר שבשני השיעורים הראשונים נתנה הדרכה בלי להבין יותר מדי מה אנו עושים, מעכשיו תתחיל כניסה ו'לכלוך הידים' בקוד עצמו, לצורך הבנה והתאמה. ההסבר יתבסס על קובץ הסקריפט של יצירת מפת משקעים של GFS (‏gfs-precip.gs), קישור חוזר אליה למי שאיבד אותה מופיע בחלק הראשון של תוכן שיעור 2

את העריכה מומלץ מאוד לבצע באמצעות ++Notepad (משתמשי לינוקס, בעורך הטקסט החביב עליכם), הסבר כללי על השימוש בעורך זה מופיע בשיעור 2.

מומלץ מאוד לנסות ליישם את השיעור באמצעות שינוי פרמטרים שונים בקובץ הסקריפט, ובחינת התוצאות.

תזכורת: לזכור לעדכן את הקובץ gfs-link.gs להרצה האחרונה העדכנית, לצורך קבלת תוצאה רלוונטית (הסבר על פעולה זו מופיע בשיעור 2).

טיפ: מומלץ לשמור בתיקיה עותק של הקובץ לפני שמבצעים בו שינויים, במקרה הכי גרוע אפשר להוריד אותו שוב מהקישור בשיעור 2.
 

נתנאל531

Well-known member
קובץ הסקריפט - כללי

שימו לב לתצלום המסך של חלקו הראשון של הקובץ, ניתן להבחין שכמעט כל השורות מתחילות ומסתיימות בגרש ('), ומספר שורות מתחילות בסולמית (#).

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

שורה שאינה מבוצעת (שורת הסבר, פקודה לא לביצוע / שיש לה תחליף וכו') מסומנת בתחילתה באמצעות סולמית (#). ניתן להשתמש גם בכוכבית (*) שלמעשה אף נמצאת בשימוש רחב היקף יותר בקרב משתמשי GrADS בעולם, משיקולי נוחות ואחידות עם סקריפטי לינוקס אחרים נבחרה הסולמית, אך גם הכוכבית אפשרית.

בפקודות עצמם אין רגישות להבדל בין אותיות קטנות / גדולות וגם לא בשמות משתנים, אך בפונקציות (שימוש מתקדם++) ישנו הבדל. מומלץ להקפיד לכתוב רק באותיות קטנות.

 

נתנאל531

Well-known member
ניקוי - reset / reinit / clear

בפתיחת הסקריפט מופיעה פקודת ניקוי של שימושים קודמים, ישנם מספר אפשרויות לניקוי: clear - ניקוי גרפי בלבד, reset - חזרה למצב התחלתי ללא סגירת קבצי הרצות פתוחים, איפוס משתנים ואיפוס מצב גרפי, reinit - חזרה למצב התחלתי מלא כולל סגירת קבצים, איפוס משתנים ואיפוס מצב גרפי, הבחירה באיזה פקודה להשתמש מבוססת על הצורך.

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

נתנאל531

Well-known member
צבע רקע - set display color

הפקודה הזו מאפשרת לבחור את הרקע של חלון הציור (ושל קובץ הפלט הסופי), כברירת מחדל הרקע שחור, הפקודה 'set display color white' משנה את הרקע ללבן. הפקודה מקבלת את הערכים black/white בלבד, ולא שמות צבעים אחרים.
 

נתנאל531

Well-known member
הרצת קובץ - run

הפקודה run קוראת להפעלת קובץ סקריפט אחר. במקרה של הקובץ הזה, מדובר בקריאה לקובץ שבו נמצאת הפקודה להתחבר לשרת שבו נתוני ההרצה של GFS.

על תוכן הקובץ gfs-link.gs, הפקודה sdfopen ועריכתה - הסבר בשיעור 2.
 

נתנאל531

Well-known member
בחירת שטח גאוגרפי - set lat / lon

צמד הפקודות מגדירות את השטח הגאוגרפי של המפה, set lat - הגדרת גבולות קווי הרוחב, set lon - הגדרת קווי האורך.

במקרה הישראלי / מזרח תיכוני הערכים חיוביים תמיד, אך הם מקבלים ערכים שליליים לאזורים מדרום לקו המשווה או ממזרח לגריניץ'. אפשרות אחרת להגדרת שטח ליבשת אמריקה היא שימוש בערכים גדולים מ־180.

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

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

נתנאל531

Well-known member
בקובץ ישנם 2 אפשרויות לטווחים, נסו להחליף ביניהם

באמצעות סימון האפשרות הלא-פעילה בסולמית (#) בתחילתה.
 

נתנאל531

Well-known member
הגדרות t1 ו־t2 (זמן)

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

הרצה מבצעית סטנדרטית של GFS כוללת פלט לכל 3 שעות עד לטווח של 240 שעות (234,237,240...3,6,9,12) ובנוסף את המצב ההתחלתי (שעה 0). לכל יום (24 שעות) ישנם 8 נתוני זמן, ובסך הכל ל־10 ימים (240 שעות) - 80 נתוני זמן + נתון מצב התחלתי (שעת ה־0) = 81 נתוני זמן בקובץ הרצה סטנדרטי של GFS.

הטווח 1-41 משמעו סכום המשקעים ל־5 הימים הראשונים, הטווח 1-81 משמעו סכום המשקעים ל־10 הימים הקרובים, הטווח 41-81 משמעו חמשת הימים האחרונים וכן הלאה. טווחי 24 השעות הם: 1-9, 9-17, 17-25, 25-33, 33-41, 41-49, 49-57, 57-65, 65-73, 73-81. אפשר לרשום ערכים מתחת ל־1 ומעל 81, לא תתקבל על כך הודעת שגיאה שתעצור את הסקריפט אך גם לא יתקבלו נתונים.

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

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

נתנאל531

Well-known member
בחירת ציור הגבולות הגאוגרפים / פוליטיים - set map

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

צבע - ישנם 16 צבעי יסוד בסיסי ל־GrADS, רשימה שלמה מופיעה פה -
http://www.iges.org/grads/gadoc/16colors.html
תשומת לב שהראשון והשני (שחור ולבן) מתחלפים לפי בחירת צבע הרקע (set display). ההגדרה 1 במקרה זה משמעה צבע שחור (מאחר והרקע לבן)
ניתן להשתמש בכל צבעי ה־RGB (ולא רק ב־16 הנבחרים) באמצעות פקודה נוספת שלא נתייחס אליה כעת (set rgb).

קו - ישנם מספר בודד (7) של עיצובים לקווים ב־GrADS (קו רציף, מנוקד, שילוב קוים ונקודות), רשימה שלהם מופיעה פה -
http://www.iges.org/grads/gadoc/gradcomdsetmap.html
כברירת מחדל (1) נבחר קו רציף.

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

נתנאל531

Well-known member
הצגת גבולות גאוגרפים / פוליטיים - set mpdset

ניתן לבחור בין אי-הצגת גבולות כלל, הצגת גבולות גאוגרפים בלבד, והצגת גבולות מדיניים ברמות פירוט שונות (רלוונטי בעיקר לצפון אמריקה).
פירוט קצר על האפשרויות השונות מופיע פה -
http://www.iges.org/grads/gadoc/gradcomdsetmpdset.html

האפשרות hires משמעה הצגת גבולות גאוגרפים ופוליטיים. תשומת לב לכך שמדובר בגבולות פוליטיים לפי הגדרות רשמיות של ארה"ב, על המשתמע מכך ('הקו הירוק', רמת הגולן וכו').
 

נתנאל531

Well-known member
בחירת סקאלת צבעים

בסקריפט זה ישנה קריאה לקובץ נוסף שיוצר סקאלת צבעים (2 אפשרויות, ניתן להחליף ביניהם באמצעות סימון הלא-פעיל בסולמית (#), הסבר על קובץ זה יובא בחלק ב' של שיעור זה, ביחד עם המשך הפקודות בקובץ.
 

מוסא20

New member
תודה רבה נתנאל ..פשוט תענוג לקרוא .. רציתי לשאות

איך לשים את סקאלת הצבעים מתחת למפת המשקעים ולא לימינה ?
 

נתנאל531

Well-known member
זה בפרק הבא...

חפש את השורה
'run /cygdrive/c/aaa/helpers/cb5.gs 1 0'
והחלף את הביטוי '0 1' ב־'1 1'.
 
למעלה