שימוש בMap Themes בQGIS

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

 


מה זה ערכת נושא?

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

בואו נניח לדוגמה שיש לנו 3 שכבות: מפת הבסיס של OpenStreetMap, שכבת שימושי קרקע ושכבת מבנים, אנחנו יכולים להגדיר אותן כערכת נושא. הוספה של שכבה נוספת או החלפה של מפת הבסיס לתצלום לוויין יכול לייצר לנו ערכת נושא נוספת, למעשה יש דוגמה טובה בדיוק לזה בדוקומנטציה של אפליקציית Input של חברת Lutra Consulting.

כל מה שצריך לעשות בשביל לייצר ערכת נושא זה להדליק את השכבות שאתם רוצים לכלול בה, לחיצה על כפתור הManage Map Themes (האייקון של העין) בפאנל השכבות (Layers Panel) ולאחר מכן לחיצה על Add Theme



איך אנחנו יכולים להשתמש בערכות נושא בשביל לשנות סימבולוגיה?

בואו נניח שיש לי מפה של העולם, ואני רוצה לייצר ממנה פריסה להדפסה (Print Layout) עם כמה מפות, אחת רק שכבת מדינות, אחת גם עם שכבת אגמים, אחת נוספת עם נמלי תעופה ואחרונה שתהיה בה שכבת פסי רכבת. בואו גם נניח שאני רוצה גם להשתמש בצבע מילוי שונה בשביל שכבת המדינות בכל אחת מהמפות הללו.

השלב הראשון שלי יהיה לייצר ערכת נושא שתכלול את השכבות שאמורות להופיע בכל מפה.


עכשיו שיש לנו ערכות נושא, נוכל לכתוב ביטוי שישנה את הצבעים של שכבת ne_countries. בLayer Styling Panel נבחר את הסמל ואז נערוך את הביטוי שקובע את צבע המילוי שלו (Fill Color).



הביטוי ישתמש בשתי פונקציות: if ובis_layer_visible, שילוב של שתיהן מאפשר לנו לבדוק האם שכבה מסוימת דלוקה ולהחזיר ערכים שונים במידה והיא דלוקה או לא. הערכים שאנחנו מחזירים הם צבעים מקודדים כHEX או מערכים שמשלבים ערכים בשביל אדום, ירוק וכחול (RGB).

הפונקציה if מקבלת שלושה פרמטרים, הראשון בדיקה שצריכה להחזיר true או false (אפשר גם 1 או 0 בהתאמה), ערך להחזיר אם כן, וערך להחזיר אם לא. בביטוי שלי אני מכניס קריאות נוספות לפונקציה בשביל לבדוק אפשרויות נוספות ורק במידה וכל התשובות לא נכונה מחזיר את הערך האחרון.

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

הביטוי שכתבתי בשביל המפות בתחילת הפוסט נראה ככה:

    if(
       is_layer_visible('ne_airports'),
       '#be7396', /* רקע לשכבת נמלי התעופה */
    if(
       is_layer_visible('ne_railroads'),
       '#ffffff', /* רקע לשכבת פסי הרכבת */
    if(
       is_layer_visible('ne_lakes'),
       '#766d2d', /* רקע לשכבת האגמים */
        '#beb297' /* רקע ברירת מחדל, אם כל השאר כבויים */
            )
        )
    )
 
כל מה שהביטוי עושה זה לבדוק איזו שכבה דולקת ומחזיר צבע אחר בהתאם. אפשר כמובן באמצעות ביטויים דומים לשנות כל חלק בסימבולוגיה של השכבה. אפשר גם לייצר עבורה מספר סמלים ולהציג רק אחת מהן באמצעות הגדרת שקיפות שמבצעת בדיקה דומה עם ביטוי דומה, יש לשים לב מה הערך שמצפה לקבל כל חלק בסימבולוגיה, מנוע הביטויים לרוב יכתוב לכם מה הוא מצפה לקבל. אני ממליץ גם להגדיר משתנים (variables) בשביל ערכים וצבעים שאתם משתמשים בהם הרבה או אפילו פשוט צבעי פרוייקט, ככה ניתן להשתמש בשמות שקל לזכור במקום בקודים המדוייקים של הצבעים, שמות כמו @building_gray או @lake_blue יותר קל לזכור.
ניתן ללמוד עוד על משתנים בפוסט שלי על מנוע הביטויים ומשתנים (באנגלית, בינתיים) 

עכשיו שלכל ערכת נושא יש רקע שונה, אנחנו יכולים לקבוע שכל אובייקט מפה בפריסת ההדפסה (print layout) שלנו ישתמש בערכת נושא שונה. צריך פשוט להוסיף או לבחור אובייקט מפה, ותחת הגדרת השכבות שלו (Layers) צריך לבחור Follow map theme ולבחור את ערכת הנושא שרוצים להשתמש בה באותו אובייקט.
 

 

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


 

Comments