Есть ли способ нажимать пары значений ключа в движке Google Earth в цикле, использующем функцию map()?

Я делаю пространственно-временной анализ LULC на движке Google Earth. Для этого я импортировал изображения отражательной способности Landsat 5 уровня 1 TOA и отфильтровал их по своему усмотрению. После этого я смог извлечь значения идентификаторов функций в отфильтрованной коллекции изображений, мне нужно создать словарь, чтобы иметь возможность назначать уникальные имена из идентификатора, извлеченного путем нарезки идентификатора, и присвоить значение (сам идентификатор) к каждой паре.

Идентификатор, полученный для изображений в коллекции изображений, имеет тип: LANDSAT/LT05/C01/T1_TOA/LT05_148045_19890509. в этом, ключ: 19890509 значение:LT05_148045_19890509

оба из которых могут быть получены путем нарезки полученного идентификатора

Я отфильтровал коллекцию изображений и попытался создать словарь следующим образом, но он создает пустой словарь.

// Create a list of image objects.
var imageList = Collection.toList(100);
print('imageList', imageList);

// Extract the ID of each image object.
var dicty = ee.Dictionary({}); //def dict for names
var id_list = imageList.map(function(item) {
    var list_nm = ee.Image(item).id();
    var lst_nm_slice = ee.Image(item).id().slice(-8,-1);
    dicty.lst_nm_slice = list_nm;
    return dicty;
});//end of map function

Я ожидаю, что вывод dicty будет словарем пар ключ-значение, где каждое значение ключа будет динамически назначаться в вышеупомянутом цикле, чтобы я мог вызывать изображения с помощью пар ключ-значение словаря.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 275
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вообще говоря, вы хотите предоставить итерируемый объект для .map(), и вы получаете повторяемый объект с исходной длиной (эта функция применяется к каждому элементу). Earth Engine обрабатывает функцию, предоставленную в .map(), параллельно, что затрудняет передачу значений в одну переменную в памяти внутри этой функции. Таким образом, решение этой проблемы состоит в том, чтобы установить значения идентификаторов, которые вы извлекаете в функции, для каждого изображения в коллекции в качестве свойства, а затем вне функции получить имена и идентификаторы изображения в словарь. Вот пример рабочего кода:

// Create an ImageCollection and filter by space and time
var Collection = ee.ImageCollection('LANDSAT/LT05/C01/T1_TOA')
  .filterDate('1990-01-01','1991-01-01')
  .filterBounds(ee.Geometry.Point([86.5861,34.7304]));

print('LT5 Image Collection', Collection);

// Extract the ID of each image object and set as property
// within for each image in the collection
var Collection = Collection.map(function(img) {
    var img_id = img.id();
    var id_slice = img_id.slice(-8);
    return img.set('id',id_slice);
});//end of map function

// Get the image IDs and names as lists from the collection
var ids = ee.List(Collection.aggregate_array('id'));
var names = ee.List(Collection.aggregate_array('system:index'));

// Build dictionary from each image ID and name
var out_dict = ee.Dictionary.fromLists(ids,names);
print('Output Dictionary',out_dict);

Другие вопросы по теме