Оптимізація часу виконання скриптів Google Earth Engine
Google Earth Engine (GEE) — потужна платформа для аналізу великомасштабних геопросторових даних. Однак користувачі часто стикаються з проблемами з часом виконання, навіть якщо їхні сценарії здаються простими. Сценарій, виконання якого займає кілька хвилин, може вплинути на продуктивність і затримати статистику.
У цьому випадку користувач створив простий скрипт для обробки даних Sentinel і Landsat 8. Незважаючи на простоту, виконання скрипта займає близько 3-5 хвилин. Розуміння, чому це відбувається та як оптимізувати сценарій, має важливе значення для ефективної обробки даних.
Продуктивність сценарію GEE залежить від кількох факторів, включаючи розмір даних, фільтрацію та складність обчислення. Скорочення часу виконання передбачає виявлення вузьких місць у сценарії, таких як непотрібні операції або великі набори даних, які сповільнюють обробку.
Ця стаття дослідить можливі причини повільного часу виконання в GEE та надасть практичні поради щодо оптимізації заданого сценарію. Впроваджуючи ці стратегії, користувачі можуть значно підвищити швидкість і продуктивність своїх завдань з аналізу геопросторових даних.
Команда | Приклад використання |
---|---|
normalizedDifference() | Ця функція використовується для обчислення індексів, таких як NDVI, NDWI та NDSI, шляхом обчислення різниці між двома діапазонами, поділеної на їх суму. Це специфічно для аналізу дистанційного зондування, де потрібні показники рослинності, води та снігу. |
filterBounds() | Фільтрує колекцію зображень, щоб включати лише зображення, які перетинають певну геометрію. У цьому випадку він обмежує супутникові дані областю навколо визначеної точки інтересу, роблячи обробку більш ефективною, виключаючи нерелевантні дані. |
filterDate() | Ця команда обмежує колекцію зображень певним діапазоном дат. Для нашої проблеми дуже важливо проаналізувати відмінності між тим самим періодом часу для наборів даних Sentinel і Landsat. |
addBands() | Додає нові обчислені смуги (наприклад, NDVI, NDWI та NDSI) до кожного зображення в колекції. Це важливо для застосування кількох індексів до однієї колекції зображень без створення окремих наборів даних. |
unmask() | Заповнює масковані пікселі вказаним значенням. У нашому сценарії він використовується для демаскування постійних акваторій, забезпечуючи послідовну обробку даних у всьому регіоні. |
reduce() | Зменшує колекцію зображень за допомогою визначеної функції редукції, наприклад ee.Reducer.percentile(). Тут він використовується для обчислення 30-го процентиля значень пікселів, оптимізуючи створення складеного зображення. |
clip() | Вирізає зображення до меж вказаної області інтересу. Це гарантує, що обробляються лише дані, що стосуються області, що прискорює виконання. |
gt() | Ця команда розшифровується як «більше ніж» і використовується для створення бінарних зображень на основі порогового значення. У цьому випадку він визначає ділянки з водністю понад 80%. |
map() | Застосовує функцію до кожного зображення в колекції. У нашому прикладі він застосовує функцію addIndices для обчислення NDVI, NDWI та NDSI для всіх зображень у колекції, спрощуючи робочий процес. |
Оптимізація сценаріїв GEE для підвищення ефективності
У наданому сценарії метою є отримання та обробка супутникових зображень із двох різних джерел: Sentinel і Landsat. The Платформа дозволяє користувачам отримувати доступ до великої кількості супутникових даних і застосовувати різні операції, такі як фільтрація, індексація та візуалізація. Однією з ключових функцій, що використовуються в цьому сценарії, є функція, яка використовується для обчислення важливих показників, таких як NDVI, NDWI та NDSI. Ці показники є вирішальними для аналізу рослинності, води та снігового покриву в зазначеному регіоні. Сценарій починається з визначення точки інтересу та центрує карту на ній за допомогою наданих координат.
Сценарій застосовує кілька фільтрів, наприклад і , щоб зменшити обсяг даних, що обробляються, таким чином покращуючи час виконання. Наприклад, filterBounds() забезпечує включення лише зображень, які перетинають цікаву область, у той час як filterDate() обмежує зображення певним діапазоном дат. Це важливо для обробки великих наборів даних, таких як зображення Sentinel і Landsat, оскільки мінімізує обчислювальне навантаження. Крім того, оскільки хмарне покриття допомагає відкидати зображення, які містять занадто багато хмар, забезпечуючи кращу якість аналізу.
Важливим аспектом сценарію є функція, яка додає розраховані індекси (NDVI, NDWI, NDSI) до зображень, роблячи їх доступними для подальшого аналізу. Сценарій також містить постійну водяну маску, використовуючи дані з глобального набору даних JRC Surface Water. Водяна маска допомагає виключити ділянки з високим вмістом води (більше 80%), які інакше можуть спотворити результати аналізу рослинності та снігу. Це робиться через і функції, які дозволяють сценарію ізолювати області на основі значень пікселів.
Нарешті, сценарій використовує функціонує з редуктором процентиля, щоб створити складене зображення, яке представляє 30-й процентиль значень вибраного пікселя. Потім це складене зображення прикріплюється до цікавого регіону та візуалізується на карті за допомогою функція. Візуальні параметри визначені як для композитів Sentinel, так і для Landsat, що дозволяє користувачеві переглядати їх із відповідними налаштуваннями кольору. Завдяки поєднанню різних етапів обробки зображень, таких як фільтрування, маскування та генерація композитів, цей сценарій забезпечує ефективний спосіб аналізу супутникових зображень, хоча можна застосувати додаткову оптимізацію для скорочення часу виконання.
Оптимізація виконання сценарію Google Earth Engine для швидшої обробки
Це рішення використовує Google Earth Engine (GEE) з наголосом на оптимізації продуктивності шляхом скорочення часу отримання даних і спрощення операцій. JavaScript використовується як мова сценаріїв.
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));
Використання ефективної обробки даних для GEE для мінімізації затримок сценаріїв
Це рішення інтегрує оптимізовану обробку даних шляхом поєднання обчислень індексів і порогів. JavaScript використовується для обробки 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);
Підвищення ефективності сценаріїв дистанційного зондування
Під час роботи зі сценаріями Google Earth Engine (GEE) важливо забезпечити ефективне виконання операцій. Хоча використання великих наборів даних, таких як Sentinel і Landsat, є поширеним явищем для аналізу навколишнього середовища, величезний обсяг даних може уповільнити виконання сценарію. Одним із методів підвищення продуктивності є забезпечення обробки лише необхідних даних. Використовуючи такі команди, як і мінімізує розмір набору даних, що допомагає оптимізувати обчислення. Вибір певних діапазонів дат і географічних регіонів може значно скоротити час виконання.
Іншим аспектом, який впливає на продуктивність сценарію GEE, є спосіб обробки даних. У прикладі сценарію використовується функція для обчислення важливих індексів, таких як NDVI, NDWI та NDSI. Ці індекси додаються як смуги до колекцій зображень, що дозволяє проводити більш ретельний аналіз. Однак поширеною помилкою є застосування таких функцій до всього набору даних без попереднього фільтрування. Вкрай важливо застосовувати такі операції після фільтрації, щоб уникнути непотрібних обчислень на нерелевантних даних.
Візуалізація — ще один елемент сценарію, який можна оптимізувати. Додавання забагато шарів або складних візуалізацій може скоротити час обробки. Сценарій використовує попередньо визначені візуальні параметри для візуалізації композитів, але продуктивність можна покращити, вимкнувши певні шари, якщо вони не потрібні явно. Це допомагає зберегти легкість сценарію, зберігаючи його функціональність. Використання Команди також забезпечують відтворення лише необхідної області, зменшуючи загальне навантаження на обробку.
- Як покращити продуктивність моїх сценаріїв GEE?
- Оптимізуйте використання , і зменште розмір набору даних перед обробкою.
- Чому мій сценарій GEE виконується так довго?
- Великі набори даних і складні обчислення можуть уповільнити виконання. використання і обмежити обробку відповідними областями.
- Чи можу я зменшити кількість зображень, що обробляються в GEE?
- Так, звернувшись для хмарного покриття та зосередитися на конкретних періодах.
- Як я можу спростити обчислення індексів у своєму сценарії?
- Використовуйте таку функцію, як щоб спростити додавання кількох індексів (наприклад, NDVI, NDWI) за один крок.
- Чи можна візуалізувати лише основні шари?
- Так, вимкніть непотрібні шари та використовуйте спрощені параметри візуалізації для кращої продуктивності.
Оптимізація сценаріїв Google Earth Engine передбачає ефективну обробку великих наборів даних, раннє застосування фільтрів і зменшення непотрібних операцій з даними. Зосередження на важливих областях, як-от фільтрація за і розташування може значно скоротити час обробки.
Включаючи такі функції, як і використання порогових масок для усунення нерелевантних даних, продуктивність сценарію може бути додатково покращена. Ці методи можуть оптимізувати виконання, пропонуючи швидші результати та краще використання платформи Google Earth Engine.
- Цю статтю було створено з використанням вмісту, заснованого на офіційній документації Google Earth Engine, яка містить уявлення про методи оптимізації сценаріїв. Посібники Google Earth Engine
- Додаткову інформацію було зібрано на форумі спільноти GEE, де пропонуються обговорення та рішення для покращення продуктивності складних сценаріїв. Спільнота Google Earth Engine
- Посилання на найкращі методи обробки великих наборів даних було взято з літератури з дистанційного зондування та навчальних посібників, доступних за наступним посиланням. Земна обсерваторія NASA