Google Earth Engine (GEE) — это мощная облачная платформа для геопространственного анализа планетарного масштаба. Он сочетает в себе многопетабайтный каталог спутниковых изображений и наборов геопространственных данных с мощными возможностями анализа.

Процесс контролируемой классификации в дистанционном зондировании включает в себя обучение классификатора распознаванию закономерностей в данных, которые соответствуют известным интересующим классам (например, лес, вода, город).

Этот учебник проведет вас через процесс выполнения контролируемой классификации земного покрова с использованием Google Earth Engine (GEE) и JavaScript. Мы будем использовать алгоритм кластеризации k-средних для обучения классификатора на основе дерева решений.

Перед началом этого процесса создайте учетную запись Google Earth Engine.

Шаг 1: Импорт изображения Landsat 8

Первое, что нам нужно, это спутниковый снимок для нашей классификации. Для этого урока мы будем использовать изображение со спутника Landsat 8.

// Import a Landsat 8 image.
var image = ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318');

Этот код импортирует изображение Landsat 8 по его конкретному идентификатору.

Шаг 2: Определение области интереса

Затем мы определяем точку, вокруг которой мы будем буферизовать интересующую нас область для нашего анализа.

// Define a region of interest with a point.
var geometry = ee.Geometry.Point([-122.3942, 37.7295]);
var region = geometry.buffer(50000); // 50 kilometers

Здесь мы определили точку (пару долготы и широты) и буферизовали область в 50 километров вокруг нее.

Шаг 3: Отображение изображения

Мы можем отобразить импортированное изображение на карте с помощью метода Map.addLayer().

// Display the image.
Map.addLayer(image, {bands: ['B4', 'B3', 'B2'], max: 0.3}, 'Landsat 8 original image');

Мы используем композицию RGB для визуализации.

Шаг 4: Выборка изображения и создание наборов для обучения и тестирования

Затем мы выбираем точки в этой области на нашем изображении Landsat 8 и делим их на обучающую выборку и проверочную выборку.

// Sample the image at the points and add a random column.
var points = image.sample({
region: region,
scale: 30,
numPixels: 5000,
seed: 0,
geometries: true // Set this to false to ignore geometries
}).randomColumn();
// Make a training-testing split.
var training = points.filter(ee.Filter.lt('random', 0.7));
var testing = points.filter(ee.Filter.gte('random', 0.7));

В приведенном выше фрагменте метод image.sample() используется для выборки точек в указанной области. Функция randomColumn() добавляет к этим точкам случайный столбец. Затем эти точки делятся на тренировочные и тестовые наборы с использованием случайного разделения.

Шаг 5: Обучение кластеризатора

Затем мы создаем экземпляр кластеризатора k-средних и обучаем его на нашем обучающем наборе.

// Instantiate the clusterer and train it.
var clusterer = ee.Clusterer.wekaKMeans(15).train(training);

Мы используем алгоритм k-средних из библиотеки Weka, запрашивая 15 кластеров.

Шаг 6: Кластеризация изображения

После обучения кластеризатора применяем его к изображению.

JavaScript

// Cluster the input using the trained clusterer.
var result = image.cluster(clusterer);

// Display the clusters with random colors.
Map.addLayer(result.randomVisualizer(), {}, 'clusters');

Метод cluster() применяет обученный кластеризатор к изображению. Затем мы визуализируем полученные кластеры.

Шаг 7: Обучение классификатора

Затем мы используем кластеры для обучения классификатора дерева решений.

// Now, use the clusters as a classifier!

var trained = ee.Classifier.smileCart().train({
features: training,
classProperty: 'cluster',
inputProperties: image.bandNames()
});

Мы используем классификатор дерева решений из библиотеки Smile.

Шаг 8: Классификация изображения

После того, как классификатор обучен, мы применяем его к изображению, чтобы классифицировать его.

// Classify the image.
var classified = image.classify(trained);

// Display the classification result.
Map.addLayer(classified.randomVisualizer(), {}, 'classification');

Метод classify() применяет обученный классификатор к изображению. Затем мы визуализируем полученную классификацию.

Наконец, нажмите «Выполнить», чтобы выполнить скрипт и посмотреть результаты.

Этот сценарий объединяет изображение в 15 различных категорий земного покрова на основе их спектральных характеристик, а затем визуализирует эти категории. Это мощный инструмент дистанционного зондирования для понимания земного покрова или других пространственных явлений. Однако реальное применение этих методов может включать более сложные методологии.