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

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

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

เปิด Colab Notebook

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

Notebook ใหม่

Google ไดรฟ์

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

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

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

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

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

Notebook ที่มีอยู่

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

Google ไดรฟ์

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

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

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

การเปิดสมุดบันทึกจากอินเทอร์เฟซ Colab จะช่วยให้คุณเข้าถึงไฟล์ที่มีอยู่จาก Google ไดรฟ์, GitHub และฮาร์ดแวร์ในเครื่องได้ การเข้าชมอินเทอร์เฟซ Colab หลังจากใช้งานครั้งแรกจะทำให้โมดอล File Explorer ปรากฏขึ้น จากแท็บที่ด้านบนของ File Explorer ให้เลือกแหล่งที่มา แล้วไปที่ไฟล์ .ipynb ที่ต้องการเปิด นอกจากนี้ คุณยังเข้าถึง File Explorer ได้จากอินเทอร์เฟซของ Colab โดยเลือกไฟล์ > เปิดสมุดบันทึก หรือใช้แป้นพิมพ์ลัด Ctrl+O

นำเข้า API และรับข้อมูลเข้าสู่ระบบ

ส่วนนี้จะสาธิตวิธีนำเข้า Earth Engine Python API และ ตรวจสอบสิทธิ์การเข้าถึง เนื้อหานี้ยังมีให้บริการในรูปแบบ Colab Notebook ด้วย

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 สามารถแสดงต่อเซลล์เอาต์พุตของ Notebook ได้ ตัวอย่าง 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()