Пакет ee.Clusterer
обеспечивает неконтролируемую классификацию (или кластеризацию ) в Earth Engine. Эти алгоритмы на данный момент основаны на одноименных алгоритмах в Weka . Более подробная информация о каждом Clusterer
доступна в справочной документации .
Кластереры используются так же, как классификаторы в Earth Engine. Общий рабочий процесс кластеризации следующий:
- Соберите объекты с числовыми свойствами, в которых можно найти кластеры.
- Создайте экземпляр кластеризатора. При необходимости задайте его параметры.
- Обучите кластеризатор, используя обучающие данные.
- Примените кластеризатор к изображению или коллекции объектов.
- Обозначьте кластеры.
Данные обучения представляют собой FeatureCollection
со свойствами, которые будут вводиться в кластеризатор. В отличие от классификаторов, для Clusterer
не существует входного значения класса. Как и в случае с классификаторами, ожидается, что данные для шагов обучения и применения будут иметь одинаковое количество значений. Когда обученный кластеризатор применяется к изображению или таблице, он присваивает целочисленный идентификатор кластера каждому пикселю или объекту.
Вот простой пример создания и использования ee.Clusterer
:
Редактор кода (JavaScript)
// Define a region in which to generate a segmented map. var region = ee.Geometry.Rectangle(29.7, 30, 32.5, 31.7); // Load a Landsat composite for input. var input = ee.ImageCollection('LANDSAT/COMPOSITES/C02/T1_L2_32DAY') .filterDate('2001-05', '2001-06') .first() .clip(region); // Display the sample region. Map.setCenter(31.5, 31.0, 8); Map.addLayer(ee.Image().paint(region, 0, 2), {}, 'region'); // Make the training dataset. var training = input.sample({ region: region, scale: 30, numPixels: 5000 }); // Instantiate the clusterer and train it. var clusterer = ee.Clusterer.wekaKMeans(15).train(training); // Cluster the input using the trained clusterer. var result = input.cluster(clusterer); // Display the clusters with random colors. Map.addLayer(result.randomVisualizer(), {}, 'clusters');
import ee import geemap.core as geemap
Колаб (Питон)
# Define a region in which to generate a segmented map. region = ee.Geometry.Rectangle(29.7, 30, 32.5, 31.7) # Load a Landsat composite for input. input = ( ee.ImageCollection('LANDSAT/COMPOSITES/C02/T1_L2_32DAY') .filterDate('2001-05', '2001-06') .first() .clip(region) ) # Display the sample region. m = geemap.Map() m.set_center(31.5, 31.0, 8) m.add_layer(ee.Image().paint(region, 0, 2), {}, 'region') # Make the training dataset. training = input.sample(region=region, scale=30, numPixels=5000) # Instantiate the clusterer and train it. clusterer = ee.Clusterer.wekaKMeans(15).train(training) # Cluster the input using the trained clusterer. result = input.cluster(clusterer) # Display the clusters with random colors. m.add_layer(result.randomVisualizer(), {}, 'clusters') m
Пожалуйста, обрати внимание:
- Одни и те же входные данные всегда должны давать одни и те же выходные данные, но изменение порядка входных данных может изменить результаты.
- Обучение всего лишь с 10 полосами * 100 тыс. точек может привести к ошибке «Недостаточно памяти».
- Создание паутины может занять много времени и может создать большое количество кластеров.
- Выходные кластеры и их идентификаторы зависят от алгоритма и входных данных.