Objek Earth Engine

Setelah Anda memahami 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:

Editor Kode (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 container untuk sesuatu yang ada di server. Dalam contoh ini, string ditentukan terlebih dahulu, lalu dimasukkan ke dalam penampung. Anda juga dapat menentukan penampung dan kontennya sekaligus. Contoh:

Editor Kode (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 untuk 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 konstan di server:

Editor Kode (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 container, dan menampilkan container beserta isinya sebagai objek Earth Engine yang dapat Anda manipulasi dalam kode. Setiap konstruktor yang dimulai dengan ee akan 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 setara yang ditentukan untuk ee.Number:

Editor Kode (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:

Editor Kode (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 mengeluarkan sesuatu dari daftar, gunakan metode get() dari objek ee.List:

Editor Kode (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 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 objek Earth Engine. Untuk memperbaikinya, gunakan konstruktor ee.Number untuk mentransmisikan hasilnya:

Editor Kode (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 dengan string, angka, dan daftar. Pada waktu konstruksi, Anda dapat menggunakan fungsi JavaScript untuk melakukan inisialisasi objek Earth Engine. Dalam hal ini, ee.Dictionary dibuat langsung dari objek literal JavaScript:

Editor Kode (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() bisa apa saja, jika Anda akan melakukan apa pun 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, penting untuk 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 Date di tab Docs untuk mengetahui detailnya). Contoh ini mengilustrasikan pembuatan tanggal dari string atau tanggal JavaScript yang mewakili milidetik sejak tengah malam pada 1 Januari 1970:

Editor Kode (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 halaman Memulai ini untuk mengetahui informasi selengkapnya tentang cara mengurutkan koleksi.

Digresi: meneruskan parameter berdasarkan nama

Argumen untuk 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:

Editor Kode (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 memerlukan lebih banyak kode, hal ini dapat meningkatkan keterbacaan dan penggunaan kembali. Untuk meneruskan parameter berdasarkan nama, teruskan objek JavaScript yang kuncinya adalah nama parameter metode dan nilainya adalah argumen untuk metode tersebut. Contoh:

Editor Kode (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.

Anda kini memiliki pengantar JavaScript yang cukup 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.