Dokumen Klien vs. Server menjelaskan bagaimana objek yang direferensikan dalam skrip Anda dapat berupa sisi klien atau sisi server. Skrip lengkap tidak hanya berisi objek yang ingin Anda gunakan, tetapi juga serangkaian petunjuk yang memberi tahu Earth Engine apa yang harus dilakukan dengan objek tersebut. Dokumen ini menjelaskan cara petunjuk tersebut dikirim ke Google untuk diproses dan cara hasilnya dikirim kembali ke klien untuk ditampilkan.
Saat Anda menulis skrip di Earth Engine (JavaScript atau Python), kode tersebut TIDAK berjalan langsung di server Earth Engine di Google. Sebagai gantinya, library klien mengenkode skrip menjadi kumpulan objek JSON, mengirim objek ke Google, dan menunggu respons. Setiap objek mewakili kumpulan operasi yang diperlukan untuk mendapatkan output tertentu, misalnya gambar yang akan ditampilkan di klien. Pertimbangkan kode berikut:
Editor Kode (JavaScript)
var image = ee.Image('CGIAR/SRTM90_V4'); var operation = image.add(10); print(operation.toString()); print(operation);
import ee import geemap.core as geemap
Colab (Python)
image = ee.Image('CGIAR/SRTM90_V4') operation = image.add(10) print(operation) print(operation.getInfo())
Pernyataan cetak pertama akan menghasilkan struktur JSON yang digunakan library klien untuk mendeskripsikan gambar tersebut ke server di Google:
ee.Image({ "type": "Invocation", "arguments": { "image1": { "type": "Invocation", "arguments": { "id": "CGIAR/SRTM90_V4" }, "functionName": "Image.load" }, "image2": { "type": "Invocation", "arguments": { "value": 10 }, "functionName": "Image.constant" } }, "functionName": "Image.add" })
Pernyataan cetak kedua akan mengirim permintaan ke Google dan menghasilkan respons POST dari server Google. Untuk melihat respons dalam semua JSON-nya, klik link JSON
di sisi kanan konsol, di samping objek yang dicetak:
{ "type": "Image", "bands": [ { "id": "elevation", "data_type": { "type": "PixelType", "precision": "int", "min": -32758, "max": 32777 }, "crs": "EPSG:4326", "crs_transform": [ 0.0008333333535119891, 0, -180, 0, -0.0008333333535119891, 60 ] } ] }
Tidak ada yang dikirim ke Google untuk diproses hingga ada permintaan untuk melakukannya. Dalam contoh
ini, mencetak hasil panggilan getInfo()
pada objek server akan memicu
permintaan. Tidak ada pemrosesan yang dilakukan di server hingga hasil tersebut diminta secara eksplisit. Perhatikan bahwa print()
di Editor Kode JavaScript adalah fungsi sisi klien khusus yang menggabungkan panggilan getInfo()
asinkron; untuk Python, kita memanggilnya secara langsung.
Contoh lain untuk meminta sesuatu adalah menampilkannya di Editor Kode atau elemen peta geemap. Saat permintaan ini dikirim ke Google, hanya ubin yang diperlukan untuk menampilkan hasil di Editor Kode atau elemen peta geemap yang ditampilkan. Secara khusus, posisi peta dan tingkat zoom menentukan data mana yang diproses dan diubah menjadi gambar yang dapat ditampilkan di peta. Jika Anda menggeser atau memperbesar, perhatikan bahwa kartu lain dihitung secara lambat. Sistem on-demand ini memungkinkan paralelisasi dan pemrosesan yang efisien, tetapi juga berarti bahwa gambar yang ditampilkan di peta dihasilkan dari input yang berbeda, bergantung pada tingkat zoom dan lokasi batas peta. Pelajari lebih lanjut cara input ke komputasi ditentukan dari permintaan dalam dokumen Skala.