Objek Earth Engine

Setelah Anda merasa nyaman dengan JavaScript, pelajari cara memasukkan objek dan primitif JavaScript ke dalam container Earth Engine untuk dikirim ke server dan diproses di Google.

String

Misalnya, tentukan string, lalu masukkan ke dalam penampung ee.String() untuk dikirim ke Earth Engine:

Code Editor (JavaScript)

// Define a string, then put it into an EE container.
var aString = 'To the cloud!';
var eeString = ee.String(aString);
print('Where to?', eeString);

Anggap ee.Thing sebagai penampung untuk sesuatu yang ada di server. Dalam contoh ini, string ditentukan terlebih dahulu, lalu dimasukkan ke dalam penampung. Anda juga dapat menentukan penampung dan isinya sekaligus. Contoh:

Code Editor (JavaScript)

// Define a string that exists on the server.
var serverString = ee.String('This is on the server.');
print('String on the server:', serverString);

Meskipun argumen pertama ke print() hanyalah string di klien, argumen kedua sebenarnya dikirim ke server untuk dievaluasi, lalu dikirim kembali.

Angka

Gunakan ee.Number() untuk membuat objek angka di server. Misalnya, gunakan metode JavaScript Math.E untuk membuat nilai konstanta di server:

Code Editor (JavaScript)

// Define a number that exists on the server.
var serverNumber = ee.Number(Math.E);
print('e=', serverNumber);

Metode ee.String() dan ee.Number() adalah konstruktor. Konstruktor mengambil argumennya (dan mungkin parameter lainnya), menempatkannya dalam penampung, dan menampilkan penampung serta isinya sebagai objek Earth Engine yang dapat Anda manipulasi dalam kode Anda. Konstruktor apa pun yang dimulai dengan ee menampilkan objek Earth Engine.

Metode pada objek Earth Engine

Perhatikan bahwa setelah membuat objek Earth Engine, Anda harus menggunakan metode Earth Engine untuk memprosesnya. Dalam contoh ini, Anda tidak dapat menggunakan Math.log() JavaScript untuk memproses objek Earth Engine tersebut. Anda harus menggunakan metode yang setara yang ditentukan untuk ee.Number:

Code Editor (JavaScript)

// Use a built-in function to perform an operation on the number.
var logE = serverNumber.log();
print('log(e)=', logE);

Dalam contoh ini, log() adalah metode untuk objek ee.Number. (Gunakan tab Docs di sisi kiri editor kode untuk melihat daftar semua metode untuk setiap jenis objek Earth Engine, misalnya ee.Number > log()). Perhatikan bahwa metode objek Earth Engine menampilkan objek Earth Engine lainnya.

Daftar

Untuk membuat daftar JavaScript menjadi objek ee.List di server, Anda dapat menempatkan literal JavaScript ke dalam penampung seperti halnya angka dan string. Earth Engine juga menyediakan metode praktis sisi server untuk membuat urutan angka. Contoh:

Code Editor (JavaScript)

// Make a sequence the hard way.
var eeList = ee.List([1, 2, 3, 4, 5]);
// Make a sequence the easy way!
var sequence = ee.List.sequence(1, 5);
print('Sequence:', sequence);

Karena objek ee.List hanya ada di server, gunakan fungsi yang disediakan Earth Engine untuk berinteraksi dengannya. Misalnya, untuk mendapatkan sesuatu dari daftar, gunakan metode get() dari objek ee.List:

Code Editor (JavaScript)

// Use a method on an ee.List to extract a value.
var value = sequence.get(2);
print('Value at index 2:', value);

Transmisi

Terkadang, Earth Engine tidak mengetahui jenis objek yang ditampilkan dari suatu metode. Anda, sebagai programmer, tahu bahwa variabel value dalam contoh sebelumnya adalah objek angka. Namun, jika Anda mencoba menggunakan metode add() dari ee.Number, Anda akan mendapatkan error seperti:

Hal ini umum terjadi pada fungsi get(), yang dapat menampilkan berbagai jenis objek Earth Engine. Untuk memperbaikinya, gunakan konstruktor ee.Number untuk meng-cast hasilnya:

Code Editor (JavaScript)

// Cast the return value of get() to a number.
print('No error:', ee.Number(value).add(3));

Kamus

Anda dapat membuat Dictionary Earth Engine dari objek JavaScript, seperti string, angka, dan daftar. Pada waktu konstruksi, Anda dapat menggunakan fungsi JavaScript untuk menginisialisasi objek Earth Engine. Dalam kasus ini, ee.Dictionary dibuat langsung dari objek literal JavaScript:

Code Editor (JavaScript)

// Make a Dictionary on the server.
var dictionary = ee.Dictionary({
  e: Math.E,
  pi: Math.PI,
  phi: (1 + Math.sqrt(5)) / 2
});

// Get some values from the dictionary.
print('Euler:', dictionary.get('e'));
print('Pi:', dictionary.get('pi'));
print('Golden ratio:', dictionary.get('phi'));

// Get all the keys:
print('Keys: ', dictionary.keys());

Dalam contoh ini, perhatikan bahwa setelah memiliki ee.Dictionary, Anda harus menggunakan metode pada ee.Dictionary untuk mendapatkan nilai (tidak seperti kamus JavaScript dalam pelajaran sebelumnya). Secara khusus, get(key) menampilkan nilai yang terkait dengan key. Karena jenis objek yang ditampilkan oleh get() dapat berupa apa saja, jika Anda akan melakukan sesuatu pada objek selain mencetaknya, Anda harus mentransmisikannya ke jenis yang tepat. Perhatikan juga bahwa metode keys() menampilkan ee.List.

Tanggal

Objek tanggal adalah cara Earth Engine merepresentasikan waktu. Seperti dalam contoh sebelumnya, kita harus membedakan antara objek Date JavaScript dan objek ee.Date Earth Engine. Buat ee.Date dari string, dari Date JavaScript, atau menggunakan metode statis yang disediakan oleh class ee.Date. (Lihat bagian Tanggal di tab Dokumen untuk detailnya). Contoh ini mengilustrasikan pembuatan tanggal dari string atau tanggal JavaScript yang mewakili milidetik sejak tengah malam pada 1 Januari 1970:

Code Editor (JavaScript)

// Define a date in Earth Engine.
var date = ee.Date('2015-12-31');
print('Date:', date);

// Get the current time using the JavaScript Date.now() method.
var now = Date.now();
print('Milliseconds since January 1, 1970', now);

// Initialize an ee.Date object.
var eeNow = ee.Date(now);
print('Now:', eeNow);

Tanggal berguna untuk memfilter koleksi, khususnya sebagai argumen untuk metode filterDate(). Lihat bagian ini di halaman Memulai untuk mengetahui informasi selengkapnya tentang mengurutkan koleksi.

Digresi: meneruskan parameter menurut nama

Argumen ke metode Earth Engine dapat diteruskan secara berurutan, misalnya untuk membuat ee.Date dari tahun, bulan, dan hari, Anda dapat meneruskan parameter metode statis fromYMD() dalam urutan tahun, bulan, hari:

Code Editor (JavaScript)

var aDate = ee.Date.fromYMD(2017, 1, 13);
print('aDate:', aDate);

Atau, Anda dapat meneruskan parameter berdasarkan nama, dalam urutan apa pun. Meskipun mungkin lebih banyak kode, hal ini dapat meningkatkan keterbacaan dan penggunaan kembali. Untuk meneruskan parameter menurut nama, teruskan objek JavaScript yang kuncinya adalah nama parameter metode dan nilainya adalah argumen ke metode. Contoh:

Code Editor (JavaScript)

var theDate = ee.Date.fromYMD({
  day: 13,
  month: 1,
  year: 2017
});
print('theDate:', theDate);

Perhatikan bahwa nama properti objek (kunci) cocok dengan nama yang ditentukan dalam dokumen ee.Date.fromYMD(). Perhatikan juga bahwa objek yang diteruskan sebagai argumen dapat disimpan dalam variabel untuk digunakan kembali, seperti yang diilustrasikan oleh contoh objek JavaScript.

Sekarang Anda telah cukup memahami JavaScript untuk mulai menggunakan Earth Engine. Lihat halaman Klien vs. Server untuk penjelasan yang lebih mendetail tentang objek JavaScript vs. Earth Engine.

Di bagian berikutnya, pelajari lebih lanjut konsep pemrograman fungsional untuk menggunakan loop for, kondisi if/else, dan iterasi secara efektif di Earth Engine.