Das ee.Clusterer
-Paket verarbeitet die unüberwachte Klassifizierung (oder das Clustering) in Earth Engine. Diese Algorithmen basieren derzeit auf den Algorithmen mit demselben Namen in Weka.
Weitere Informationen zu den einzelnen Clusterer
finden Sie in den Referenzdokumenten.
Clusterer werden in Earth Engine auf die gleiche Weise wie Klassifikatoren verwendet. Der allgemeine Workflow für das Clustern:
- Stellen Sie Features mit numerischen Eigenschaften zusammen, in denen Cluster gefunden werden sollen.
- Clusterinstanz erstellen Legen Sie gegebenenfalls die Parameter fest.
- Trainieren Sie den Clusterer mit den Trainingsdaten.
- Wenden Sie den Clusterer auf ein Bild oder eine Feature-Sammlung an.
- Beschriften Sie die Cluster.
Die Trainingsdaten sind eine FeatureCollection
mit Properties, die in den Clusterer eingegeben werden. Im Gegensatz zu Klassifikatoren gibt es für Clusterer
keinen Eingabeklassenwert. Wie bei Klassifikatoren sollten die Daten für die Schritte „Trainieren“ und „Anwenden“ dieselbe Anzahl von Werten haben. Wenn ein trainierter Clusterer auf ein Bild oder eine Tabelle angewendet wird, wird jedem Pixel oder Feature eine Ganzzahl-Cluster-ID zugewiesen.
Hier ein einfaches Beispiel für das Erstellen und Verwenden einer ee.Clusterer
:
// 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
Hinweis:
- Dieselben Eingaben sollten immer dieselben Ergebnisse liefern. Wenn Sie die Eingaben jedoch neu anordnen, können sich die Ergebnisse ändern.
- Bereits bei einem Training mit nur 10 Bändern × 100.000 Punkten kann ein Fehler aufgrund fehlenden Arbeitsspeichers auftreten.
- Es kann lange dauern, bis die Berechnung abgeschlossen ist, und es können viele Cluster entstehen.
- Die Ausgabecluster und ihre IDs hängen vom Algorithmus und den Eingaben ab.