نصب Python - دفتر Colab

Earth Engine Python API را می‌توان در دفترچه Google Colaboratory مستقر کرد. دفترچه‌های Colab دفترچه‌های Jupyter هستند که در فضای ابری اجرا می‌شوند و به‌شدت با Google Drive ادغام شده‌اند، که این امر راه‌اندازی، دسترسی، و هم‌رسانی آن‌ها را آسان می‌کند. اگر با Google Colab یا دفترچه‌های Jupyter آشنا نیستید، لطفاً کمی وقت بگذارید و سایت خوشامدگویی Colab را کاوش کنید.

بخش‌های زیر نحوه استقرار Earth Engine در Google Colab و تجسم نقشه‌ها و نمودارها بااستفاده از بسته‌های Python شخص ثالث را شرح می‌دهند.

باز کردن دفتر Colab

دفتر یادداشت‌ها را می‌توان از Google Drive یا میانای Colaboratory باز کرد.

دفترچه جدید

Google Drive

Google Drive را باز کنید و فایل جدیدی ایجاد کنید.

  • جدید > بیشتر > Colaboratory
  • در پوشه‌ای کلیک راست کنید و از منوِ بافت، بیشتر > Colaboratory را انتخاب کنید.

میانای Colab

به سایت Colab بروید و فایل جدیدی ایجاد کنید.

  • File > New > New Python 3 notebook
  • اگر قبلاً با Colab تعامل داشته‌اید، با بازدید از سایت پیوندشده در بالا، یک کاوشگر فایل دراختیارتان قرار می‌گیرد که می‌توانید بااستفاده از منوِ کرکره‌ای در پایین پنجره، فایل جدیدی را شروع کنید.

دفتر یادداشت موجود

فایل‌های دفترچه موجود (‎.ipynb) را می‌توان از Google Drive و میانای Colab باز کرد.

Google Drive

دفترچه‌های Colab می‌توانند در پوشه‌های مختلفی در Google Drive وجود داشته باشند، بسته به اینکه فایل‌های دفترچه در کجا ایجاد شده‌اند. دفترهای یادداشت ایجادشده در Google Drive در پوشه‌ای که در آن ایجاد شده‌اند یا به آن منتقل شده‌اند وجود خواهند داشت. دفترچه‌های ایجادشده از میانای Colab به‌طور پیش‌فرض در پوشه‌ای به نام «Colab Notebooks» قرار می‌گیرند که وقتی کار با Colab را شروع می‌کنید، به‌طور خودکار به پوشه «My Drive» در Google Drive شما اضافه می‌شود.

فایل‌های Colab را می‌توان با نماد زرد «CO» و پسوند فایل «.ipynb» شناسایی کرد. فایل‌ها را با دو بار کلیک کردن روی آن‌ها و انتخاب کردن باز کردن با > Colaboratory از دکمه موجود در بالای صفحه حاصل یا با کلیک راست کردن روی فایل و انتخاب کردن باز کردن با > Colaboratory از منوِ بافت فایل باز کنید.

میانای Colab

باز کردن دفترچه‌ها از میانای Colab به شما امکان می‌دهد به فایل‌های موجود از Google Drive،‏ GitHub، و سخت‌افزار محلی دسترسی داشته باشید. بازدید از میانای Colab پس‌از استفاده اولیه منجر به ظاهر شدن یک مدال کاوشگر فایل می‌شود. از برگه‌های بالای کاوشگر فایل، منبعی را انتخاب کنید و به فایل .ipynb که می‌خواهید باز کنید بروید. همچنین می‌توانید با انتخاب فایل > باز کردن دفترچه یا بااستفاده از ترکیب صفحه‌کلید Ctrl+O از میانای Colab به کاوشگر فایل دسترسی پیدا کنید.

وارد کردن میانای برنامه‌سازی کاربردی و دریافت اطلاعات اعتباری

این بخش نحوه وارد کردن Earth Engine Python API و اصالت‌سنجی دسترسی را نشان می‌دهد. این محتوا به‌عنوان دفتر یادداشت Colab نیز دردسترس است:

Earth Engine API به‌طور پیش‌فرض در Google Colaboratory گنجانده شده است، بنابراین فقط به وارد کردن و اصالت‌سنجی نیاز دارد. این مراحل باید برای هر جلسه جدید Colab تکمیل شود یا اگر هسته Colab را بازراه‌اندازی کنید یا اگر ماشین مجازی Colab به‌دلیل غیرفعال بودن بازیافت شود.

وارد کردن میانای برنامه‌سازی کاربردی

سلول زیر را اجرا کنید تا 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 خود را مجاز کنید. برای تکمیل این مرحله، دستورالعمل‌های چاپ‌شده در سلول را دنبال کنید.

امتحان کردن میانای برنامه‌سازی کاربردی

با چاپ کردن ارتفاع کوه اورست، میانای برنامه‌سازی کاربردی را آزمایش کنید. توجه داشته باشید که قبل‌از استفاده از میانای برنامه‌سازی کاربردی، باید آن را مقداردهی اولیه کنید. اسکریپت Python زیر را در سلول جدیدی اجرا کنید.

# Print the elevation of Mount Everest.
dem = ee.Image('NASA/NASADEM_HGT/001')
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 است که می‌تواند نتایج نشانی وبی را نمایش دهد که نشان‌دهنده تصویری است که از فراخوانی تابع 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('NASA/NASADEM_HGT/001').select('elevation')
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('NASA/NASADEM_HGT/001').select('elevation')
# 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()