Penginstalan Python

Dukungan Python

Library klien Python Earth Engine kompatibel dengan versi Python yang didukung oleh Google Cloud. Dukungan diperbarui setiap tahun sesuai dengan jadwal rilis titik Python (PEP 602; Status versi Python). Menggunakan versi Python yang tidak didukung dapat menyebabkan kegagalan autentikasi, perilaku yang tidak terduga, atau kegagalan operasi tertentu.

Opsi penginstalan

Jika Anda menggunakan Google Colab, library klien Earth Engine Python versi terbaru telah diinstal (melalui pip). Coba notebook berikut untuk memulai Earth Engine dan Colab:

Jika Anda tidak menggunakan Colab, library klien Earth Engine dapat diinstal dan diupdate secara manual di sistem Anda menggunakan conda (direkomendasikan) atau pip:


Instal API ke lingkungan Python arbitrer menggunakan pip. Dari terminal atau command prompt:

pip install earthengine-api

Setelah diinstal, Anda dapat mengimpor, mengautentikasi, dan melakukan inisialisasi Earth Engine API seperti yang dijelaskan di sini.

Perbarui API:

pip install earthengine-api --upgrade

Impor paket

Paket Python API disebut ee. Library ini harus diimpor dan diinisialisasi untuk setiap sesi dan skrip Python baru:

import ee

Autentikasi dan Inisialisasi

Sebelum menggunakan library klien Python Earth Engine, Anda perlu mengautentikasi dan menggunakan kredensial yang dihasilkan untuk melakukan inisialisasi klien Python. Jalankan:

ee.Authenticate()

Tindakan ini akan memilih mode autentikasi terbaik untuk lingkungan Anda, dan meminta Anda mengonfirmasi akses untuk skrip Anda. Untuk melakukan inisialisasi, Anda harus memberikan project yang Anda miliki, atau memiliki izin untuk digunakan. Project ini akan digunakan untuk menjalankan semua operasi Earth Engine:

ee.Initialize(project='my-project')

Lihat panduan autentikasi untuk memecahkan masalah dan mempelajari lebih lanjut mode autentikasi dan project Cloud.

Halo dunia!

Berikut adalah skrip singkat untuk menguji apakah Anda sudah siap menggunakan Earth Engine.

import ee
ee.Authenticate()
ee.Initialize(project='my-project')
print(ee.String('Hello from the Earth Engine servers!').getInfo())

Sintaksis

API Python dan JavaScript mengakses fungsi sisi server yang sama, tetapi ekspresi sisi klien (pelajari lebih lanjut klien vs. server) dapat bervariasi karena perbedaan sintaksis bahasa. Tabel berikut menyertakan daftar perbedaan sintaksis umum yang akan Anda temui saat menggunakan Python API dibandingkan dengan JavaScript API.

Perbedaan sintaksis umum antara JavaScript dan Python
Properti JavaScript Python
Definisi fungsi
function myFun(arg) {
  return arg;
}

var myFun = function(arg) {
  return arg;
};
def my_fun(arg):
  return arg
Pemetaan fungsi anonim
var foo = col.map(function(arg) {
  return arg;
});
foo = col.map(lambda arg: arg)
Definisi variabel
var myVar = 'var';
my_var = 'var'
Operator logika
var match = such.and(that);
var match = such.or(that);
var match = such.not(that);
match = such.And(that)
match = such.Or(that)
match = such.Not(that)
Rantai metode multibaris
var foo = my.really()
              .reallyLong()
              .methodChain();
foo = (my.really()
       .reallyLong()
       .methodChain())
Kunci kamus
var dic = {'key': value};
var dic = {key: value};
dic = {'key': value}
Akses objek kamus
var value = dic.key;
var value = dic['key'];
value = dic['key']
Definisi argumen fungsi
// Positional arguments.
var foo = fun(argX, argY, argZ);
// Keyword arguments object.
var foo = fun({y: argY});
# Positional arguments.
foo = fun(arg_x, arg_y, arg_z)
# Keyword arguments dictionary.
foo = fun(**{'y': arg_y})
# Keyword arguments.
foo = fun(x=arg_x, z=arg_z)
Boolean
var t = true;
var f = false;
t = True
f = False
Nilai null
var na = null;
na = None
Komentar
//
#

Objek tanggal

Menentukan dan memanipulasi objek tanggal sisi klien dengan modul datetime. Sertakan modul dalam skrip Anda:

import datetime

Mengonversi ee.Date ke tanggal sisi klien:

ee_date = ee.Date('2020-01-01')
py_date = datetime.datetime.utcfromtimestamp(ee_date.getInfo()['value']/1000.0)

Mengonversi tanggal sisi klien ke ee.Date:

py_date = datetime.datetime.utcnow()
ee_date = ee.Date(py_date)

Mengekspor data

Mengekspor data dengan Python API memerlukan penggunaan modul ee.batch, yang menyediakan antarmuka ke fungsi Export. Teruskan argumen parameter seperti yang Anda lakukan dengan JavaScript API, dengan memperhatikan perbedaan yang dicatat dalam tabel sintaksis di atas. Tugas ekspor harus dimulai dengan memanggil metode start() pada tugas yang ditentukan. Buat kueri status tugas dengan memanggil metode status() di dalamnya. Contoh berikut menunjukkan cara mengekspor objek ee.Image.

Buat tugas ekspor:

task = ee.batch.Export.image.toDrive(image=my_image,  # an ee.Image object.
                                     region=my_geometry,  # an ee.Geometry object.
                                     description='mock_export',
                                     folder='gdrive_folder',
                                     fileNamePrefix='mock_export',
                                     scale=1000,
                                     crs='EPSG:4326')

Mulai tugas ekspor:

task.start()

Periksa status tugas ekspor:

task.status()

Hasil task.status() adalah kamus yang berisi informasi seperti status tugas dan ID-nya.

{
  'state': 'READY',
  'description': 'my_export_task',
  'creation_timestamp_ms': 1647567508236,
  'update_timestamp_ms': 1647567508236,
  'start_timestamp_ms': 0,
  'task_type': 'EXPORT_IMAGE',
  'id': '56TVJIZABUMTD5CJ5YHTMYK4',
  'name': 'projects/earthengine-legacy/operations/56TVJIZABUMTX5CJ5HHTMYK4'
}

Anda dapat memantau progres tugas menggunakan kolom state. Lihat halaman Lingkungan Pemrosesan untuk mengetahui daftar nilai state dan informasi selengkapnya tentang siklus proses tugas.

Mencetak objek

Mencetak objek Earth Engine di Python akan mencetak permintaan serialisasi untuk objek, bukan objek itu sendiri. Lihat halaman Klien vs. server untuk memahami alasannya.

Panggil getInfo() pada objek Earth Engine untuk mendapatkan objek yang diinginkan dari server ke klien:

# Load a Landsat image.
img = ee.Image('LANDSAT/LT05/C02/T1_L2/LT05_034033_20000913')

# Print image object WITHOUT call to getInfo(); prints serialized request instructions.
print(img)

# Print image object WITH call to getInfo(); prints image metadata.
print(img.getInfo())
Perlu diperhatikan bahwa getInfo() adalah operasi sinkron, yang berarti eksekusi ekspresi setelah panggilan getInfo() diblokir hingga hasilnya ditampilkan ke klien. Selain itu, permintaan untuk banyak data atau komputasi yang mahal dapat menampilkan error dan/atau berhenti berfungsi. Secara umum, praktik terbaiknya adalah mengekspor hasil, dan setelah selesai, mengimpornya ke skrip baru untuk analisis lebih lanjut.

Objek UI

Modul ui Earth Engine hanya tersedia melalui Editor Kode JavaScript API. Menggunakan library pihak ketiga untuk elemen UI di Python. Library seperti geemap, Folium, dan ipyleaflet menyediakan tampilan peta interaktif, sedangkan pembuatan diagram dapat dilakukan dengan Matplotlib, Altair, atau seaborn, untuk beberapa nama. Lihat contoh di notebook penyiapan Earth Engine di Colab untuk menggunakan geemap dan Matplotlib.

Python di Panduan Developer

Kode Python disertakan di seluruh Panduan Developer Earth Engine. Jika tersedia, contoh kode dapat dilihat dengan mengklik tab "Colab (Python)" di bagian atas blok kode. Halaman panduan juga dapat menyertakan tombol di bagian atas untuk menjalankan halaman sebagai notebook Colab atau melihat di GitHub. Contoh kode Python dimaksudkan untuk dijalankan menggunakan Google Colab. Eksplorasi peta dan objek interaktif ditangani oleh library geemap. Library klien Python Earth Engine dan geemap telah diprainstal di Colab.

Penyiapan Earth Engine

Untuk menjalankan kode Python, Anda harus mengimpor library Earth Engine, mengautentikasi, dan melakukan inisialisasi. Perintah berikut digunakan dalam contoh (lihat halaman Autentikasi dan Inisialisasi untuk alternatif).

import ee
ee.Authenticate()
ee.Initialize(project='my-project')

Eksplorasi interaktif dengan geemap

Library geemap digunakan untuk menampilkan ubin peta dan mencetak representasi lengkap objek Earth Engine. Library ini masing-masing bergantung pada ipyleaflet dan eerepr untuk fitur ini. Library geemap dan dependensinya telah diprainstal di Google Colab; impor ke setiap sesi.

import geemap.core as geemap

Class data Earth Engine geografis, seperti ee.Image dan ee.FeatureCollection, dapat dilihat menggunakan objek geemap.Map. Pertama, tentukan objek peta. Kemudian, tambahkan lapisan ke dalamnya atau ubah area pandangnya.

# Initialize a map object.
m = geemap.Map()

# Define an example image.
img = ee.Image.random()

# Add the image to the map.
m.add_layer(img, None, 'Random image')

# Display the map (you can call the object directly if it is the final line).
display(m)