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:
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.
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())
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)