การติดตั้ง Python - สมุดบันทึก Colab

Earth Engine Python API สามารถใช้งานได้ในโน้ตบุ๊ก Google Colaboratory สมุดบันทึก Colab คือสมุดบันทึก Jupyter ที่ทำงานในระบบคลาวด์และผสานรวมกับ Google ไดรฟ์อย่างเต็มรูปแบบ ทำให้ตั้งค่า เข้าถึง และแชร์ได้ง่าย หากคุณไม่คุ้นเคยกับ Google Colab หรือ Jupyter Notebook โปรดสละเวลาสำรวจเว็บไซต์ต้อนรับของ Colab

ส่วนต่อไปนี้จะอธิบายการปรับใช้ Earth Engine ใน Google Colab และการแสดงภาพแผนที่และแผนภูมิโดยใช้แพ็กเกจ Python ของบุคคลที่สาม

เปิด Colab Notebook

คุณสามารถเปิดสมุดบันทึกได้จาก Google ไดรฟ์หรืออินเทอร์เฟซของ Colaboratory

สมุดบันทึกใหม่

Google ไดรฟ์

เปิด Google ไดรฟ์ และสร้างไฟล์ใหม่

  • ใหม่ > เพิ่มเติม > Colaboratory
  • คลิกขวาในโฟลเดอร์ แล้วเลือกเพิ่มเติม > Colaboratory จากเมนูบริบท

อินเทอร์เฟซ Colab

ไปที่เว็บไซต์ Colab และสร้างไฟล์ใหม่

  • ไฟล์ > ใหม่ > โน้ตบุ๊ก Python 3 ใหม่
  • หากคุณเคยโต้ตอบกับ Colab มาก่อน การไปที่เว็บไซต์ที่ลิงก์ด้านบนจะเปิดโปรแกรมสำรวจไฟล์ซึ่งคุณสามารถเริ่มไฟล์ใหม่ได้โดยใช้เมนูแบบเลื่อนลงที่ด้านล่างของหน้าต่าง

สมุดบันทึกที่มีอยู่

ไฟล์สมุดบันทึกที่มีอยู่ (.ipynb) จะเปิดได้จาก Google ไดรฟ์และอินเทอร์เฟซ Colab

Google ไดรฟ์

สมุดบันทึก Colab อาจมีอยู่ในโฟลเดอร์ต่างๆ ใน Google ไดรฟ์ โดยขึ้นอยู่กับตำแหน่งที่สร้างไฟล์สมุดบันทึก โน้ตบุ๊กที่สร้างใน Google ไดรฟ์จะอยู่ในโฟลเดอร์ที่สร้างหรือย้ายไป สมุดบันทึกที่สร้างจากอินเทอร์เฟซของ Colab จะเป็นค่าเริ่มต้นของโฟลเดอร์ชื่อ "สมุดบันทึก Colab" ซึ่งจะเพิ่มลงในโฟลเดอร์ "ไดรฟ์ของฉัน" ใน Google ไดรฟ์โดยอัตโนมัติเมื่อคุณเริ่มใช้งาน Colab

ไฟล์ Colab จะระบุได้ด้วยสัญลักษณ์ "CO" สีเหลืองและนามสกุลไฟล์ ".ipynb" เปิดไฟล์โดยคลิกสองครั้งที่ไฟล์แล้วเลือกเปิดด้วย > Colaboratory จากปุ่มที่ด้านบนของหน้าเว็บที่ปรากฏขึ้น หรือคลิกขวาที่ไฟล์แล้วเลือกเปิดด้วย > Colaboratory จากเมนูบริบทของไฟล์

อินเทอร์เฟซ Colab

การเปิดสมุดบันทึกจากอินเทอร์เฟซ Colab จะช่วยให้คุณเข้าถึงไฟล์ที่มีอยู่จาก Google ไดรฟ์, GitHub และฮาร์ดแวร์ในเครื่องได้ การเข้าชมอินเทอร์เฟซ Colab หลังจากใช้งานครั้งแรกจะทำให้โมดัล File Explorer ปรากฏขึ้น จากแท็บที่ด้านบนของโปรแกรมสำรวจไฟล์ ให้เลือกแหล่งที่มาและไปที่ไฟล์ .ipynb ที่ต้องการเปิด นอกจากนี้ คุณยังเข้าถึงโปรแกรมสำรวจไฟล์จากอินเทอร์เฟซ Colab ได้โดยเลือกไฟล์ > เปิดสมุดบันทึก หรือใช้แป้นพิมพ์ลัด 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 ไปยังเซลล์เอาต์พุตของโน้ตบุ๊กได้ ตัวอย่าง 2 รายการต่อไปนี้แสดงการแสดงภาพนิ่งและแผนที่อินเทอร์แอกทีฟ

ภาพนิ่ง

โมดูล 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()