نصب پایتون - نوت بوک کولب

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

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

یک نوت بوک کولب را باز کنید

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

نوت بوک جدید

گوگل درایو

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

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

رابط کولب

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

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

نوت بوک موجود

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

گوگل درایو

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

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

رابط کولب

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

وارد کردن API و دریافت اعتبار

این بخش نحوه وارد کردن API پایتون Earth Engine و تأیید اعتبار را نشان می دهد. این محتوا به عنوان دفترچه یادداشت 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 باید آن را مقداردهی اولیه کنید. اسکریپت پایتون زیر را در یک سلول جدید اجرا کنید.

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

# 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 بر روی نقشه بروشور تعاملی استفاده کرد. 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 را به صورت نمودار پراکندگی نشان می دهد. برای اطلاعات بیشتر به نمودار در همکاری مراجعه کنید.

# 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()