Cara Membuat JavaScript Mesin Google Earth Anda Berjalan Lebih Cepat

Optimization

Mengoptimalkan Waktu Eksekusi Skrip Mesin Google Earth

Google Earth Engine (GEE) adalah platform canggih untuk menganalisis data geospasial berskala besar. Namun, pengguna sering kali mengalami masalah dengan waktu eksekusi, bahkan ketika skrip mereka tampak biasa saja. Skrip yang memerlukan waktu beberapa menit untuk dijalankan dapat memengaruhi produktivitas dan menunda wawasan.

Dalam hal ini, pengguna telah membuat skrip sederhana untuk memproses data Sentinel dan Landsat 8. Meskipun sederhana, skrip ini membutuhkan waktu sekitar 3-5 menit untuk dieksekusi. Memahami mengapa hal ini terjadi dan cara mengoptimalkan skrip sangat penting untuk pemrosesan data yang efisien.

Performa skrip GEE bergantung pada beberapa faktor, termasuk ukuran data, pemfilteran, dan kompleksitas komputasi. Mengurangi waktu eksekusi melibatkan identifikasi hambatan dalam skrip, seperti operasi yang tidak perlu atau kumpulan data besar yang memperlambat pemrosesan.

Artikel ini akan mengeksplorasi kemungkinan penyebab lambatnya waktu eksekusi di GEE dan memberikan tip praktis untuk mengoptimalkan skrip yang diberikan. Dengan menerapkan strategi ini, pengguna dapat meningkatkan kecepatan dan kinerja tugas analisis data geospasial mereka secara signifikan.

Memerintah Contoh Penggunaan
normalizedDifference() Fungsi ini digunakan untuk menghitung indeks seperti NDVI, NDWI, dan NDSI dengan menghitung selisih antara dua pita, dibagi dengan jumlah keduanya. Ini khusus untuk analisis penginderaan jauh yang memerlukan indeks vegetasi, air, dan salju.
filterBounds() Memfilter koleksi gambar untuk hanya menyertakan gambar yang berpotongan dengan geometri tertentu. Dalam hal ini, sistem ini membatasi data satelit pada area di sekitar titik tujuan tertentu, sehingga pemrosesan menjadi lebih efisien dengan mengecualikan data yang tidak relevan.
filterDate() Perintah ini membatasi pengumpulan gambar pada rentang tanggal tertentu. Untuk permasalahan kita, penting untuk menganalisis perbedaan antara periode waktu yang sama untuk kumpulan data Sentinel dan Landsat.
addBands() Menambahkan pita terhitung baru (seperti NDVI, NDWI, dan NDSI) ke setiap gambar dalam koleksi. Hal ini penting untuk menerapkan beberapa indeks pada kumpulan gambar yang sama tanpa membuat kumpulan data terpisah.
unmask() Mengisi piksel bertopeng dengan nilai tertentu. Dalam skrip kami, ini digunakan untuk membuka kedok wilayah perairan permanen, memastikan bahwa data diproses secara konsisten di seluruh wilayah.
reduce() Mengurangi koleksi gambar menggunakan fungsi peredam tertentu, seperti ee.Reducer.percentile(). Di sini, ini digunakan untuk menghitung persentil ke-30 nilai piksel, sehingga mengoptimalkan pembuatan gambar komposit.
clip() Mengklipkan gambar ke batas wilayah tertentu yang diinginkan. Hal ini memastikan bahwa hanya data yang relevan dengan area tersebut yang diproses, sehingga mempercepat eksekusi.
gt() Perintah ini merupakan singkatan dari 'lebih besar dari' dan digunakan untuk membuat gambar biner berdasarkan ambang batas. Dalam hal ini, ia mengidentifikasi wilayah dengan kejadian air lebih dari 80%.
map() Menerapkan fungsi ke setiap gambar dalam koleksi. Dalam contoh kita, ini menerapkan fungsi addIndices untuk menghitung NDVI, NDWI, dan NDSI di seluruh gambar dalam koleksi, sehingga menyederhanakan alur kerja.

Mengoptimalkan Skrip GEE untuk Peningkatan Efisiensi

Dalam skrip yang disediakan, tujuannya adalah untuk mengekstrak dan memproses citra satelit dari dua sumber berbeda: Sentinel dan Landsat. Itu platform memungkinkan pengguna untuk mengakses data satelit dalam jumlah besar dan menerapkan berbagai operasi seperti pemfilteran, pengindeksan, dan visualisasi. Salah satu fitur utama yang digunakan dalam skrip ini adalah fungsi, yang digunakan untuk menghitung indeks penting seperti NDVI, NDWI, dan NDSI. Indeks-indeks ini penting untuk menganalisis vegetasi, air, dan tutupan salju di wilayah tertentu. Skrip dimulai dengan menentukan tempat tujuan dan memusatkan peta di atasnya menggunakan koordinat yang disediakan.

Skrip ini menerapkan beberapa filter, seperti Dan , untuk mengurangi jumlah data yang diproses, sehingga meningkatkan waktu eksekusi. Misalnya, batas filter() memastikan bahwa hanya gambar yang berpotongan dengan area yang diinginkan yang disertakan, sementara tanggal filter() membatasi gambar pada rentang tanggal tertentu. Hal ini penting untuk memproses kumpulan data besar seperti citra Sentinel dan Landsat, karena meminimalkan beban komputasi. Selain itu, untuk cakupan cloud membantu membuang gambar yang memiliki terlalu banyak cloud, sehingga memastikan kualitas analisis yang lebih baik.

Salah satu aspek penting dari naskah adalah fungsi, yang menambahkan indeks terhitung (NDVI, NDWI, NDSI) ke citra, sehingga dapat diakses untuk analisis lebih lanjut. Skrip ini juga menyertakan masker air permanen menggunakan data dari kumpulan data JRC Global Surface Water. Masker air membantu mengecualikan area dengan kandungan air yang tinggi (lebih dari 80%), yang dapat mengganggu hasil analisis vegetasi dan salju. Hal ini dilakukan melalui Dan fungsi, yang memungkinkan skrip mengisolasi area berdasarkan nilai piksel.

Terakhir, skrip menggunakan berfungsi dengan peredam persentil untuk menghasilkan gambar komposit yang mewakili persentil ke-30 dari nilai piksel yang dipilih. Gambar komposit ini kemudian dipotong ke wilayah yang diinginkan dan divisualisasikan pada peta menggunakan fungsi. Parameter visual ditentukan untuk komposit Sentinel dan Landsat, memungkinkan pengguna untuk melihatnya dengan pengaturan warna yang sesuai. Dengan menggabungkan berbagai langkah pemrosesan gambar seperti pemfilteran, penyembunyian, dan pembuatan komposit, skrip ini menyediakan cara yang efisien untuk menganalisis citra satelit, meskipun pengoptimalan lebih lanjut dapat diterapkan untuk mengurangi waktu eksekusi.

Mengoptimalkan Eksekusi Skrip Google Earth Engine untuk Pemrosesan Lebih Cepat

Solusi ini menggunakan Google Earth Engine (GEE) dengan penekanan pada optimalisasi kinerja dengan mengurangi waktu pengambilan data dan menyederhanakan pengoperasian. JavaScript digunakan sebagai bahasa skrip.

var pointJSP = ee.Geometry.Point([86.465263, 20.168076]);
Map.centerObject(pointJSP, 14);
// Combine date variables for flexibility
var startDate = '2024-02-01';
var endDate = '2024-03-01';
// Function to add NDVI, NDWI, NDSI
var addIndices = function(image) {
  var ndvi = image.normalizedDifference(['NIR', 'RED']).rename('NDVI');
  var ndwi = image.normalizedDifference(['NIR', 'SWIR1']).rename('NDWI');
  var ndsi = image.normalizedDifference(['SWIR1', 'SWIR2']).rename('NDSI');
  return image.addBands(ndvi).addBands(ndwi).addBands(ndsi);
};
// Use fewer data points by filtering for cloud-free pixels only once
var sentinel = ee.ImageCollection('COPERNICUS/S2_SR')
  .filterBounds(pointJSP)
  .filterDate(startDate, endDate)
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30));

Menggunakan Pemrosesan Data yang Efisien untuk GEE untuk Meminimalkan Keterlambatan Skrip

Solusi ini mengintegrasikan penanganan data yang dioptimalkan dengan menggabungkan penghitungan indeks dan ambang batas. JavaScript diterapkan untuk pemrosesan Google Earth Engine.

var landsat8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
  .filterBounds(pointJSP)
  .filterDate(startDate, endDate)
  .filter(ee.Filter.lt('CLOUD_COVER', 30));
// Apply water mask for permanent water areas
var waterMask = ee.Image('JRC/GSW1_4/GlobalSurfaceWater').select('occurrence').gt(80).unmask();
// Add indices to Landsat 8 imagery
var landsatIndices = landsat8.map(addIndices);
var composite = landsatIndices.reduce(ee.Reducer.percentile([30])).clip(pointJSP).mask(waterMask.eq(0));
Map.addLayer(composite, {bands: ['RED', 'GREEN', 'BLUE'], min: 0, max: 3000}, 'Landsat Composite');
Map.addLayer(waterMask, {min: 0, max: 1, palette: ['white', 'blue']}, 'Water Mask', false);

Meningkatkan Efisiensi Skrip Penginderaan Jauh

Salah satu pertimbangan utama saat bekerja dengan skrip Google Earth Engine (GEE) adalah memastikan bahwa pengoperasian ditangani secara efisien. Meskipun penggunaan kumpulan data besar seperti Sentinel dan Landsat merupakan hal yang umum dalam analisis lingkungan, volume data yang besar dapat memperlambat eksekusi skrip. Salah satu metode untuk meningkatkan kinerja adalah dengan memastikan bahwa hanya data penting yang diproses. Menggunakan perintah seperti Dan meminimalkan ukuran kumpulan data, yang membantu menyederhanakan komputasi. Memilih rentang tanggal dan wilayah geografis tertentu dapat mengurangi waktu eksekusi secara signifikan.

Aspek lain yang memengaruhi kinerja skrip GEE adalah cara data diproses. Contoh skrip menggunakan fungsi untuk menghitung indeks penting seperti NDVI, NDWI, dan NDSI. Indeks ini ditambahkan sebagai pita pada koleksi gambar, sehingga memungkinkan analisis yang lebih menyeluruh. Namun, kesalahan umum adalah menerapkan fungsi tersebut ke seluruh kumpulan data tanpa memfilter terlebih dahulu. Sangat penting untuk menerapkan operasi seperti itu setelah pemfilteran untuk menghindari penghitungan yang tidak perlu pada data yang tidak relevan.

Visualisasi adalah elemen lain dari skrip yang dapat dioptimalkan. Menambahkan terlalu banyak lapisan atau visualisasi yang rumit dapat memperlambat waktu pemrosesan. Skrip menggunakan parameter visual yang telah ditentukan sebelumnya untuk merender komposit, namun kinerja dapat ditingkatkan dengan menonaktifkan lapisan tertentu kecuali jika diperlukan secara eksplisit. Ini membantu menjaga skrip tetap ringan sambil mempertahankan fungsinya. Menggunakan perintah juga memastikan bahwa hanya area yang diperlukan yang ditampilkan, sehingga mengurangi beban pemrosesan secara keseluruhan.

  1. Bagaimana cara meningkatkan kinerja skrip GEE saya?
  2. Optimalkan penggunaan , , dan kurangi ukuran kumpulan data Anda sebelum diproses.
  3. Mengapa skrip GEE saya memerlukan waktu lama untuk dijalankan?
  4. Kumpulan data yang besar dan penghitungan yang rumit dapat memperlambat eksekusi. Menggunakan Dan untuk membatasi pemrosesan pada area yang relevan.
  5. Bisakah saya mengurangi jumlah gambar yang diproses di GEE?
  6. Ya, dengan melamar untuk cakupan cloud dan untuk fokus pada periode tertentu.
  7. Bagaimana cara menyederhanakan perhitungan indeks dalam skrip saya?
  8. Gunakan fungsi seperti untuk menyederhanakan penambahan beberapa indeks (misalnya, NDVI, NDWI) dalam satu langkah.
  9. Apakah mungkin untuk memvisualisasikan hanya lapisan-lapisan penting saja?
  10. Ya, nonaktifkan lapisan yang tidak perlu dan gunakan parameter visualisasi yang disederhanakan dengan untuk kinerja yang lebih baik.

Mengoptimalkan skrip Google Earth Engine melibatkan penanganan kumpulan data besar secara efisien, penerapan filter sejak dini, dan pengurangan pengoperasian data yang tidak diperlukan. Berfokus pada area penting seperti memfilter dan lokasi dapat mengurangi waktu pemrosesan secara signifikan.

Dengan menggabungkan fungsi seperti dan menggunakan masker ambang batas untuk menghilangkan data yang tidak relevan, kinerja skrip dapat lebih ditingkatkan. Teknik-teknik ini dapat menyederhanakan pelaksanaan, menawarkan hasil yang lebih cepat dan pemanfaatan platform Google Earth Engine yang lebih baik.

  1. Artikel ini dibuat menggunakan konten berdasarkan dokumentasi resmi Google Earth Engine, yang memberikan wawasan tentang teknik pengoptimalan skrip. Panduan Mesin Google Earth
  2. Informasi tambahan dikumpulkan dari forum komunitas GEE, yang menawarkan diskusi dan solusi untuk meningkatkan kinerja dalam skrip yang kompleks. Komunitas Mesin Google Earth
  3. Praktik terbaik untuk menangani kumpulan data besar dirujuk dari literatur dan tutorial penginderaan jauh yang tersedia di tautan berikut. Observatorium Bumi NASA