שימוש בMap Themes (ערכות נושא למפה יהיה התרגום הכי נכון, אז נקרא להן ערכות נושא) בתוך QGIS יכול להיראות מפחיד ומסובך בפעם הראשונה שרואים אותו, אבל ברגע שמתרגלים אליהן, שילוב שלהן עם ביטויים יכול לשדרג ולזרז את תהליך העבודה שלכם ולהפוך את העבודה ליותר קלה.
אז מה הן ערכות נושא? איך משתמשים בהן בקלות? ולמה כדאי לכם להשתמש בהן?
מה זה ערכת נושא?
בואו נניח שאתם רוצים לייצר כמה מפות במקביל, כל אחת מראה את אותן שכבות אבל עם סימבולוגיה שונה או עם תוספת של שכבה אחת נוספת לכל אחת. במיוחד בשביל מקרים כאלה יש לנו את האפשרות להשתמש בערכות נושא, הן סוג של שמירת המקום המקום שלכם תוך כדי עבודה, הפרוייקט זוכר בשבילכם אילו שכבות דולקות בכל ערכה. הסימבולוגיה העדכנית של השכבות לא נשמרת כחלק מערכת הנושא, אז צריך לשים לב לזה כשמשנים את הסימבולוגיה, ערכת הנושא לא תשתנה.
בואו נניח לדוגמה שיש לנו 3 שכבות: מפת הבסיס של OpenStreetMap, שכבת שימושי קרקע ושכבת מבנים, אנחנו יכולים להגדיר אותן כערכת נושא. הוספה של שכבה נוספת או החלפה של מפת הבסיס לתצלום לוויין יכול לייצר לנו ערכת נושא נוספת, למעשה יש דוגמה טובה בדיוק לזה בדוקומנטציה של אפליקציית Input של חברת Lutra Consulting.
כל מה שצריך לעשות בשביל לייצר ערכת נושא זה להדליק את השכבות שאתם רוצים לכלול בה, לחיצה על כפתור הManage Map Themes (האייקון של העין) בפאנל השכבות (Layers Panel) ולאחר מכן לחיצה על Add Theme
איך אנחנו יכולים להשתמש בערכות נושא בשביל לשנות סימבולוגיה?
עכשיו שיש לנו ערכות נושא, נוכל לכתוב ביטוי שישנה את הצבעים של שכבת ne_countries. בLayer Styling Panel נבחר את הסמל ואז נערוך את הביטוי שקובע את צבע המילוי שלו (Fill Color).
הביטוי ישתמש בשתי פונקציות: if ובis_layer_visible, שילוב של שתיהן מאפשר לנו לבדוק האם שכבה מסוימת דלוקה ולהחזיר ערכים שונים במידה והיא דלוקה או לא. הערכים שאנחנו מחזירים הם צבעים מקודדים כHEX או מערכים שמשלבים ערכים בשביל אדום, ירוק וכחול (RGB).
הפונקציה if מקבלת שלושה פרמטרים, הראשון בדיקה שצריכה להחזיר true או false (אפשר גם 1 או 0 בהתאמה), ערך להחזיר אם כן, וערך להחזיר אם לא. בביטוי שלי אני מכניס קריאות נוספות לפונקציה בשביל לבדוק אפשרויות נוספות ורק במידה וכל התשובות לא נכונה מחזיר את הערך האחרון.
הפונקציה is_layer_visible מקבלת רק פרמטר אחד, שם שכבה כמחרוזת טקסט (אפשר לפי השמות המוצגים או פשוט לחפש ברשימת השכבות שיש במנוע הביטויים) ומחזירה true או false. משמע היא פונקציית בדיקה, אז היא מושלמת לשימוש בפרמטר הראשון של if.
הביטוי שכתבתי בשביל המפות בתחילת הפוסט נראה ככה:
is_layer_visible('ne_airports'),
'#be7396', /* רקע לשכבת נמלי התעופה */
if(
is_layer_visible('ne_railroads'),
'#ffffff', /* רקע לשכבת פסי הרכבת */
if(
is_layer_visible('ne_lakes'),
'#766d2d', /* רקע לשכבת האגמים */
'#beb297' /* רקע ברירת מחדל, אם כל השאר כבויים */
)
)
)
ניתן ללמוד עוד על משתנים בפוסט שלי על מנוע הביטויים ומשתנים (באנגלית, בינתיים)
וזהו, יחסית פשוט להגדרה, משתמש בביטוי יחסית פשוט אבל יכול להקל על העבודה משמעותית, בעיקר כשמכינים פרסיות הדפסה עם כמה מפות. שווה לזכור שערכות נושא שימושיות גם אם רוצים להשתמש באפליקציית Input של חברת Lutra Consulting בשביל איסוף נתונים כי החלפת ערכת נושא היא הדרך היחידה לכבות ולהדליק שכבות בתוכה.
Comments
Post a Comment