כיצד להשתמש ולהוריד שכבות מARCGIS ONLINE ב QGIS-ובכלל
עדכון 3-2-18:
החל מגירסת 2.18, יש פלאגין מובנה בתוכנה ומ2.18.16 הוא מאפשר גם להוריד וקטורים (ועוד צפויות לנו הפתעות עם יצאתה, במהרה בימינו של גירסה 3). יערה הלרינג כתבה מדריך טוב והוא נמצא יחד עם הסקריפטים, כאן.
גם בבלוג המצוין של יהודה הורן תמצאו התייחסות לנושא, במיוחד אם אתם משתמשים בARCGIS, יהודה גם משתף אותנו ברשימה של שרתים, אז אל תשכחו לבקר כאן.
חברות וגופים רבים משתמשים בשרתים של ESRI, זאת דרך (די טובה) לנהל ולהפיץ שכבות מידע גיאוגרפיות. יש אמנם הרבה אלטרנטיביות טובות לשרתים האלו, אבל בגלל השימוש הרווח בARCGIS השימוש בשרתים שלהם הוא ברירת המחדל לגופים רבים.
המידע מאורגן כ MAP SERVER / FEATURE SERVER והמדריך יציג איך להציג, להשתמש ולהוריד את הנתונים הללו. הוא מותאם למשתמשי QGIS אבל טוב גם לכל אחד אחר, כולל משתמשי ARCGIS DESKTOP וגם למתכנים שלא עובדים עם תוכנות GIS בכלל.
החלק הראשון – קצת חפירה על איך המידע מאורגן. הכרחי כדי להבין איך להוריד ולהשתמש במידע.
החלק השני – איך להוריד את המידע דרך QGIS (וקטורים בלבד).
החלק השלישי - איך להוריד את המידע ישירות דרך PYTHON ללא צורך בתכנות (וקטורים וראסטרים).
כל הסקריפטים לחלק האחרון נמצאים כאן:
חלק א - מה זה בכלל MAP SERVER / FEATURE SERVER של ARCGIS ONLINE (AGOL) ואיך הוא מאורגן - חשוב לקרא
בגדול אנחנו מדברים על השרתים של ESRI שמאפשרים להעלות מפות ונתונים ישירות מהתוכנות שלהם (ARCGIS, ARCGIS PRO) ובדרכים אחרות.
המידע ברובו ניתן לצפיה, תשאול והורדה לקהל הרחב, חינם אין כסף ובאופן חוקי.
אז ניגש לעניין.
1. מציאת כתובת השכבה:
החלק המאתגר הוא להבין איפה המידע נמצא. יש הרבה מאד דרכים לחפש אותו, אפשר להתחיל כאן: https://www.arcgis.com/home/index.html לחפש בשפה חופשית, עברית או אנגלית. לפי נושא, שם מוסד וכו'. לדוגמא "גינות קהילתיות", "עיריית אשדוד" וכד'.
אפשר גם בגוגל יחד עם המחרוזות arcgis online או rest service ודברים דומים.
בחלק הזה בחרתי לדוגמא ב"תכניות משרד הפנים" פרויקט של מנהל התכנון (לא שמעו שם על המעבר למשרד האוצר) ובו כל התכניות שהוגשו למבא"ת. יש כאן תכניות מאושרות ובהליכי תכנון שונים. קיבלתי את החלון הבא:
2. משחק עם השכבה והבנת המבנה:
אם נלחץ על OPEN IN MAP VIEWER מצד ימין נראה את השכבות שקיימות כאן.
תפתח מפה עם הנתונים. שחקו עם MAP CONTENT כדי להדליק/לכבות שכבות ועם הLEGEND כדי לראות את המקרא (לפעמים צריך זום כדי לראות את הנתונים כמו במקרה הזה).
טיפ: זאת מפה שהועלתה על ידי משתמשת בשם miri ואם תלחצו בכחול על שמה ועל תוכלו לבחור ITEMS נוספים שהועלו על אותו המשתמש.
נחזור לעמוד הקודם. יש כאן רשימה של שכבות רלוונטיות, במקרה שלנו:
mehoziot_app - קוים כחולים-תכניות מקוונות
mehoziot_app
השכבה הראשונה מציגה את הגבולות של התכניות לפי מצבם הסטוטורי. נלחץ עליה ונקבל את הלינק הבא:
בו נראה את מקור המידע למפה. יש כאן רשימה של 3 שכבות ושתי טבלאות, אלו הן שכבות המידע עצמן (בשונה משכבות הסימבולוגיה שראינו בשלב הקודם).
נבחר לדוגמא את השכבה השניה "יעודי קרקע" שכתובתה:
נקבל רשימה ארוכה עם מאפיני השכבה.
בהתחלה מוצג התחום השכבה (LAYER EXTENT), הסימבולוגיה שלה ( Drawing Info ) ואחרי כן תהיה רשימה של השדות (FIELDS) של השכבה.
בקצה הדף אם נלחץ על הQUERY יפתח אשף. אפשר לתשאל את השכבה לפי כללי הSQL ולקבל קובץ JSON עם הנתונים (לרוב עד 1000 רשומות). נעזוב את זה בשלב זה ונראה איך להגיע למידע בצורה אחרת.
כאן הקטע שחשוב להבין:
נחזור ללינקים הישירים של השכבה:
הוא הכתובת של השרת בו השכבה נמצאת. בואו ננתח אותו:
השכבה עצמה נמצאת באותה "תיקיה" ומקבלת מספר סידורי (מ0 ומעלה) במקרה שלנו 1 ולכן כתובת השכבה היא
והכתובת של השכבה שאחריה שנקראת "מרחב תכנון" תהיה:
זה המבנה של הנתונים בAGOL, אם תפסתם את זה הכל יהיה ברור בהמשך.
חלק ב - הצגת הנתונים בQGIS ושמירתם (וקטורים)
יש מספר דרכים להציג את הנתונים בQGIS.במדריך זה אני מראה דרך פלאגין חביב בשם הסקסי
ArcGIS REST API Connector.
כאן אדגים על השכבות של התכניות המחוזיות. הכתובת של השרת מופצת באתר מנהל התכנון.
1. התקינו את הפלאגין ArcGIS REST API Connector (יש לאפשר EXPERIMENTAL PLUGINS).
2. בחרו בטאב של VECTOR וADD ARCGIS FEATURE SERVICE LAYER.
3. בחלון שיפתח הכניסו את כתובת השכבה, בדוגמא שלנו:
https://ags.moin.gov.il/arcgis/rest/services/PlanningPublic/compilation__tmm_darom/MapServer/7
שם השכבה יתעדכן אוטומטית ל"יעודי קרקע".
מומלץ לסמן את התיבה למטה, אם מדובר בשכבות כבדות, אחרת סיכוי טוב שהמחשב יקרוס.
4. אם אתם לא רוצים את כל השכבה אלא רק פרט מסוים מתוכה תוכל לפלטר אותה מבעוד מועד בשדה הFILTER לפי כללי הSQL.
5. לחצו על CONNECT והמתינו לטעינת נתונים.
תיווצר שכבה חדשה.
-- אם אתם לא רואים נתונים על המפה וודאו
א. שאתם בזום רלוונטי (נגיד זום על קרית מלאכי)
ב. שהרשת של השכבה שנוצרה היא ב EPSG 3857, אם לא שנו זאת בPROPERTIES של השכבה.
6. זהו יש לכם שכבה חדשה. אם תפתחו אותה בQGIS היא נמצאת בזיכרון הוירטואלי, אבל עם תעשו לה SAVE AS היא תהיה שלכם לנצח.
אבל, שימו לב שאם סימנתם את הקופסא כמו שביקשתי בשלב הקודם, זה ישמור לכם רק את מה שאתם רואים.
זהו פיתרון טוב לנתונים מקומיים או אם יש מעט נתונים בשכבה (ואז אפשר לא לסמן את הקופסא),
אם חשקה נפשכם בשמירה של כלל הנתונים בשכבה, עברו לחלק הבא.
חלק ג - הורדת שכבות בשלמותם בעזרת PYTHON (ללא צורך בידע בתכנות)
ג1 - שכבות וקטוריות:
על מנת להוריד את שכבות המידע נעזר בספריה בשם ArcGIS REST Query שניתנת להורדה כאן:
1. התקינו PYTHON 2 כתוכנה עצמאית. אם יש לכם ARCGIS הוא כבר מותקן לכם , אם אתם עם QGIS הוא מותקן בתוך הQGIS, למען הפשטות אני אציג איך לעבוד עם התכנה העצמאית ולכן תצטרכו להתקין את הפייתון באופן עצמאי.
ההתקנה מאד פשוטה וניתנת להורדה כאן (בחרו פייתון 2).
שימו לב: הספריה עושה בעיות עם PYTHON 3 ובספרית סקריפטים שמתי גם סקריפט פרימיטיבי יותר שעובד עם פייתון 3 (הסקריפט הראשון שלי... הורי ), אתם מוזמנים להסתדר איתו לבד (arcget_vectors_PYTHON3).
2. נתקין מודול בשם ArcGIS REST Query כך:
פתחו את cmd בשורת בחיפוש של וינדוס וכתבו את השורות הבאות (XXX למיקום של קובץ בשם pip.exe של פייתון שלרוב נמצא ב C:\Python27\Scripts):
cd XXX
ואז
pip install arcgis-rest-query
חכו עד לסיום ההתקנה.
3. הורידו את הסקריפט בשם arcget_vectors מכאן.
ושמרו את הקובץ בתיקיה שבה תרצו לשמור את השכבות.
4. פתחו את הסקריפט דרך פייתון (כפתור ימני על הסקריפט ו EDIT WITH IDLE או דרך התכנה עצמה)
5. כאן נגדיר 3 פרמטרים:
source= כתובת השרת שלנו עד לשכבה עצמה, במקרה שלנו:
"source = "https://ags.moin.gov.il/arcgis/rest/services/PlanningPublic/compilation__tmm_darom/MapServer"
layer_id= המספר הסידורי של השכבה. במקרה שלנו בחרתי את יעודי קרקע, ID=7, כאן אפשר להוסיף פילטר לנתונים לפי כללי הSQL:
layer_id = 7
output= שם לקובץ הJSON הסופי שנקבל. תבחרו מה שבא לכם רק שיהי בין מרכאות. שימו לב שהסקריפט דורס קובצים עם אותו השם:
'output = 'layer_file_name
6. שמרו והריצו (F5). יפתח חלון ובו הודעת שגיאה (באסוש, תוודאו שלא הקלדם דברים מיותרים) או פשוט >>> המעיד שהכל עבר בהצלחה והקובץ מוכן. התהליך יכול לקחת זמן. לשכבה כבדה כמו שלנו אפילו שעות ואולי תאלצו לפלטר אותה אם המחשב קורס באמצע.
7. זהו. יש לכם קובץ JSON שהוא שכבה לכל דבר עם כל הנתונים של השכבה המקורית. בQGIS הוא נפתח כמו כל שכבה אחרת (אפשר לשמור אותו מחדש בSHP כמובן). בARCGIS תצרכו להמיר אותו לפורמט אחר.
ג2 - שכבות ראסטריות (TILES):
על בסיס אותו הרעיון אפשר גם להוריד את שכבות ראסטריות שניתנות כאריחים (TILES). הפעם התשאול יהיה מרחבי ולכן יש להגדיר את הEXTENT הרלוונטי. בנוסף יש אפשרות לשנות את הרזולוציה וגודל האריח.
1. התקינו PYTHON 2 כתוכנה עצמאית. אם יש לכם ARCGIS הוא כבר מותקן לכם , אם אתם עם QGIS הוא מותקן בתוך הQGIS, למען הפשטות אני אציג איך לעבוד עם התכנה העצמאית ולכן תצטרכו להתקין את הפייתון באופן עצמאי.
ההתקנה מאד פשוטה וניתנת להורדה כאן (בחרו פייתון 2)
.
3. הורידו את הסקריפט בשם arcget_rasters מכאן.
ושמרו את הקובץ בתיקיה שבה תרצו לשמור את השכבות.
2. פתחו את הסקריפט דרך פייתון (כפתור ימני על הסקריפט ו EDIT WITH IDLE או דרך התכנה עצמה)
3. כאן נגדיר לפחות 2 פרמטרים:
התחום הרצוי של הראסטר (ברשת הרלוונטית של השכבה כפי שמופע בעמוד השרת, רשת ישראל במקרה זה). בעמוד השרת נמצא התחום המקסימלי של השכבה, אבל אפשר לבחור תחום מצומצם יותר. הקפידו לכתוב מספרים שלמים בלבד. במקרה שלנו, אזור קרית מלאכי.
xmin=112264 ymin=351979 xmax=200264 ymax=551979
server= כתובת השרת שלנו עד לשכבה עצמה, במקרה שלנו, שכבת רצף תממ"ים:
server = 'https://ags.moin.gov.il/arcgis/rest/services/PlanningPublic/retzef_tamamim_ikari_raster/MapServer'
אפשר גם לשנות את גודל האריח והרזולוציה.
4. שמרו והריצו (F5). יפתח חלון ובו הודעת שגיאה (באסוש, תוודאו שלא הקלדם דברים מיותרים) או פשוט >>> המעיד שהכל עבר בהצלחה והקובץ מוכן. התהליך יכול לקחת זמן, בסופו תמצאו בתיקיה קבצי ראסטר עם קבצי העיגון שלהם. הקבצים יוכלים להפתח ביחד או בנפרד בכל תוכנת GIS. בQGIS אפשר לאחד אותם לVIRTUAL RASTER ואילו בARCGIS לעשות להם MOSAIC.
בהצלחה,
ראובן
reuvenkost@gmail.com