אפשר לפרוס את Earth Engine Python API במסמך notebook ב-Google Colaboratory. קובצי notebook של Colab הם בעצם קובצי notebook של Jupyter שפועלים בענן ומשולבים היטב עם Google Drive, כך שקל להגדיר אותם, לגשת אליהם ולשתף אותם. אם אתם לא מכירים את Google Colab או את קובצי ה-notebook של Jupyter, מומלץ להקדיש זמן ולעיין באתר הקבלה של Colab.
בקטעים הבאים מתוארים פריסה של Earth Engine ב-Google Colab וביצוע ויזואליזציה של מפות ותרשימים באמצעות חבילות Python של צד שלישי.
פתיחת notebook של Colab
אפשר לפתוח מסמכי notebook מ-Google Drive או מהממשק של Colaboratory.
notebook חדש
Google Drive
פותחים את Google Drive ויוצרים קובץ חדש.
- חדש > עוד > Colaboratory
- לוחצים לחיצה ימנית על תיקייה ובוחרים באפשרות עוד > Colaboratory בתפריט ההקשר.
ממשק Colab
נכנסים לאתר של Colab ויוצרים קובץ חדש.
- File (קובץ) > New (חדש) > New Python 3 notebook (יומן חדש של Python 3)
- אם כבר השתמשתם ב-Colab בעבר, תוכלו להיכנס לאתר המקושר שלמעלה כדי לפתוח חלון של 'סייר קבצים' שבו תוכלו ליצור קובץ חדש באמצעות התפריט הנפתח שבתחתית החלון.
notebook קיים
אפשר לפתוח קובצי notebook קיימים (.ipynb) מ-Google Drive ומממשק Colab.
Google Drive
קובצי notebook של Colab יכולים להופיע בתיקיות שונות ב-Google Drive, בהתאם למיקום שבו נוצרו קובצי ה-notebook. מחברות שנוצרו ב-Google Drive יהיו בתיקייה שבה הן נוצרו או הועברו. קובצי notebook שנוצרים בממשק של Colab יועברו כברירת מחדל לתיקייה בשם 'Notebooks של Colab', שתתווסף באופן אוטומטי לתיקייה 'הדף שלי' ב-Google Drive כשתתחילו לעבוד עם Colab.
אפשר לזהות קבצים של Colab לפי הסמל הצהוב 'CO' והסיומת '.ipynb'. כדי לפתוח קבצים, לוחצים עליהם לחיצה כפולה ובוחרים באפשרות פתיחה באמצעות > Colaboratory מהלחצן שנמצא בחלק העליון של הדף שנפתח. לחלופין, לוחצים לחיצה ימנית על הקובץ ובוחרים באפשרות פתיחה באמצעות > Colaboratory מתפריט ההקשר של הקובץ.
ממשק Colab
פתיחת notebooks מממשק Colab מאפשרת לגשת לקבצים קיימים מ-Google Drive, מ-GitHub ומחומרה מקומית. כשנכנסים לממשק של Colab אחרי השימוש הראשוני, מוצג חלון דו-שיח של חלון קבצים. מהכרטיסיות בחלק העליון של סייר הקבצים, בוחרים מקור ומנווטים לקובץ .ipynb שרוצים לפתוח. אפשר לגשת למנהל הקבצים גם דרך הממשק של Colab. לשם כך, בוחרים באפשרות קובץ > פתיחת notebook או משתמשים בשילוב המקשים Ctrl+O.
ייבוא ממשק API וקבלת פרטי כניסה
בקטע הזה נסביר איך לייבא את Earth Engine Python API ולאמת את הגישה. התוכן הזה זמין גם כמחברות ב-Colab:
ממשק Earth Engine API כלול כברירת מחדל ב-Google Colaboratory, כך שצריך רק לייבא אותו ולאמת אותו. צריך לבצע את השלבים האלה בכל סשן חדש ב-Colab, אם מפעילים מחדש את הליבה של Colab או אם המכונה הווירטואלית של Colab עוברת מיחזור בגלל חוסר פעילות.
ייבוא ה-API
מריצים את התא הבא כדי לייבא את ה-API לסשן.
import ee
אימות והפעלה
מריצים את הפונקציה ee.Authenticate
כדי לאמת את הגישה לשרתים של Earth Engine, ואת הפונקציה ee.Initialize
כדי לאתחל אותה. מוסיפים תא קוד, מזינים את השורות הבאות, עורכים את הפרויקט ומריצים את התא.
# Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project')
תתבקשו לאשר את הגישה לחשבון Earth Engine. פועלים לפי ההוראות שמודפסות בתא כדי להשלים את השלב הזה.
בדיקת ה-API
בודקים את ה-API על ידי הדפסת הגובה של הר אוורסט. חשוב לזכור שצריך לאתחל את ה-API לפני שמשתמשים בו. מריצים את סקריפט Python הבא בתא חדש.
# Print the elevation of Mount Everest. dem = ee.Image('USGS/SRTMGL1_003') xy = ee.Geometry.Point([86.9250, 27.9881]) elev = dem.sample(xy, 30).first().get('elevation').getInfo() print('Mount Everest elevation (m):', elev)
תצוגה חזותית של מפה
אפשר להציג אובייקטים מסוג ee.Image
בתאי פלט של מסמך ביומן. בשתי הדוגמאות הבאות מוצגת הצגה של תמונה סטטית ומפה אינטראקטיבית.
תמונה סטטית
המודול IPython.display
מכיל את הפונקציה Image
, שיכולה להציג את התוצאות של כתובת URL שמייצגת תמונה שנוצרה מקריאה לפונקציה getThumbUrl
של Earth Engine. הסקריפט הבא יציג תמונה ממוזערת של מודל גובה גלובלי.
# Import libraries. import ee from IPython.display import Image # Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project') # Import a DEM and display a thumbnail of it. dem = ee.Image('USGS/SRTMGL1_003') Image(url=dem.updateMask(dem.gt(0)) .getThumbUrl({'min': 0, 'max': 4000, 'dimensions': 512, 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}))
מפה אינטראקטיבית
אפשר להשתמש בחבילה folium
כדי להציג אובייקטים מסוג ee.Image
במפה אינטראקטיבית של Leaflet. ל-Folium אין שיטת ברירת מחדל לטיפול בתמונות מ-Earth Engine, לכן צריך להגדיר שיטה ולהוסיף אותה למודול folium.Map
לפני השימוש.
הסקריפט הבא הוא דוגמה להוספת שיטה לטיפול באריחי Earth Engine ולהצגת מודל גובה במפה של Leaflet.
# Import libraries. import ee import folium # Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project') # Define a method for displaying Earth Engine image tiles to folium map. def add_ee_layer(self, ee_image_object, vis_params, name): map_id_dict = ee.Image(ee_image_object).getMapId(vis_params) folium.raster_layers.TileLayer( tiles = map_id_dict['tile_fetcher'].url_format, attr = "Map Data © Google Earth Engine", name = name, overlay = True, control = True ).add_to(self) # Add EE drawing method to folium. folium.Map.add_ee_layer = add_ee_layer # Fetch an elevation model. dem = ee.Image('USGS/SRTMGL1_003') # Set visualization parameters. vis_params = { 'min': 0, 'max': 4000, 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']} # Create a folium map object. my_map = folium.Map(location=[20, 0], zoom_start=3) # Add the elevation model to the map object. my_map.add_ee_layer(dem.updateMask(dem.gt(0)), vis_params, 'DEM') # Add a layer control panel to the map. my_map.add_child(folium.LayerControl()) # Display the map. display(my_map)
תצוגה חזותית של תרשים
חלק מהפונקציות של Earth Engine יוצרות נתונים בטבלאות שאפשר להציג בתרשים באמצעות חבילות של תצוגה חזותית של נתונים, כמו matplotlib
. בדוגמה הבאה מוצגת הצגה של נתונים בטבלה מ-Earth Engine כתרשים פיזור. מידע נוסף זמין במאמר יצירת תרשימים ב-Colaboratory.
# Import libraries. import ee import matplotlib.pyplot as plt # Trigger the authentication flow. ee.Authenticate() # Initialize the Earth Engine module. ee.Initialize(project='my-project') # Fetch a Landsat TOA image. img = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_034033_20000913') # Select Red and NIR bands, scale them, and sample 500 points. samp_fc = img.select(['B3','B4']).sample(scale=30, numPixels=500) # Arrange the sample as a list of lists. samp_dict = samp_fc.reduceColumns(ee.Reducer.toList().repeat(2), ['B3', 'B4']) samp_list = ee.List(samp_dict.get('list')) # Save server-side ee.List as a client-side Python list. samp_data = samp_list.getInfo() # Display a scatter plot of Red-NIR sample pairs using matplotlib. plt.scatter(samp_data[0], samp_data[1], alpha=0.2) plt.xlabel('Red', fontsize=12) plt.ylabel('NIR', fontsize=12) plt.show()