Annonce : Tous les projets non commerciaux enregistrés pour utiliser Earth Engine avant le
15 avril 2025 devront
vérifier leur éligibilité non commerciale pour conserver leur accès. Si vous ne validez pas votre statut avant le 26 septembre 2025, votre accès pourra être suspendu.
ee.Classifier.smileKNN
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Crée un classificateur k-NN vide.
L'algorithme des k plus proches voisins (k-NN) est une méthode de classification des objets par vote majoritaire de leurs voisins. L'objet est attribué à la classe la plus fréquente parmi ses k plus proches voisins (k est un entier positif, généralement petit et impair).
| Utilisation | Renvoie |
|---|
ee.Classifier.smileKNN(k, searchMethod, metric) | Classificateur |
| Argument | Type | Détails |
|---|
k | Entier, valeur par défaut : 1 | Nombre de voisins pour la classification. |
searchMethod | Chaîne, valeur par défaut : "AUTO" | Méthode de recherche. Les valeurs valides sont [AUTO, LINEAR_SEARCH, KD_TREE, COVER_TREE].
AUTO choisira entre KD_TREE et COVER_TREE en fonction du nombre de dimensions. Les résultats peuvent varier entre les différentes méthodes de recherche pour les égalités de distance et les valeurs de probabilité. Étant donné que les performances et les résultats peuvent varier, consultez la documentation de SMILE et d'autres ressources. |
metric | Chaîne, valeur par défaut : "EUCLIDEAN" | Métrique de distance à utiliser. REMARQUE : KD_TREE (et AUTO pour les dimensions faibles) n'utilisera pas la métrique sélectionnée. Les options sont les suivantes :
"EUCLIDEAN" : distance euclidienne.
'MAHALANOBIS' : distance de Mahalanobis.
"MANHATTAN" : distance de Manhattan.
'BRAYCURTIS' : distance de Bray-Curtis. |
Exemples
Éditeur de code (JavaScript)
// Cloud masking for Landsat 8.
function maskL8sr(image) {
var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);
var saturationMask = image.select('QA_RADSAT').eq(0);
// Apply the scaling factors to the appropriate bands.
var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
// Replace the original bands with the scaled ones and apply the masks.
return image.addBands(opticalBands, null, true)
.addBands(thermalBands, null, true)
.updateMask(qaMask)
.updateMask(saturationMask);
}
// Map the function over one year of data.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterDate('2020-01-01', '2021-01-01')
.map(maskL8sr);
// Make a median composite.
var composite = collection.median();
// Demonstration labels.
var labels = ee.FeatureCollection('projects/google/demo_landcover_labels')
// Use these bands for classification.
var bands = ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7'];
// The name of the property on the points storing the class label.
var classProperty = 'landcover';
// Sample the composite to generate training data. Note that the
// class label is stored in the 'landcover' property.
var training = composite.select(bands).sampleRegions(
{collection: labels, properties: [classProperty], scale: 30});
// Train a kNN classifier.
var classifier = ee.Classifier.smileKNN(5).train({
features: training,
classProperty: classProperty,
});
// Classify the composite.
var classified = composite.classify(classifier);
Map.setCenter(-122.184, 37.796, 12);
Map.addLayer(classified, {min: 0, max: 2, palette: ['red', 'green', 'blue']});
Configuration de Python
Consultez la page
Environnement Python pour en savoir plus sur l'API Python et sur l'utilisation de geemap pour le développement interactif.
import ee
import geemap.core as geemap
Colab (Python)
# Cloud masking for Landsat 8.
def mask_l8_sr(image):
qa_mask = image.select('QA_PIXEL').bitwiseAnd(int('11111', 2)).eq(0)
saturation_mask = image.select('QA_RADSAT').eq(0)
# Apply the scaling factors to the appropriate bands.
optical_bands = image.select('SR_B.').multiply(0.0000275).add(-0.2)
thermal_bands = image.select('ST_B.*').multiply(0.00341802).add(149.0)
# Replace the original bands with the scaled ones and apply the masks.
return (
image.addBands(optical_bands, None, True)
.addBands(thermal_bands, None, True)
.updateMask(qa_mask)
.updateMask(saturation_mask)
)
# Map the function over one year of data.
collection = (
ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterDate('2020-01-01', '2021-01-01')
.map(mask_l8_sr)
)
# Make a median composite.
composite = collection.median()
# Demonstration labels.
labels = ee.FeatureCollection('projects/google/demo_landcover_labels')
# Use these bands for classification.
bands = ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7']
# The name of the property on the points storing the class label.
class_property = 'landcover'
# Sample the composite to generate training data. Note that the
# class label is stored in the 'landcover' property.
training = composite.select(bands).sampleRegions(
collection=labels, properties=[class_property], scale=30
)
# Train a kNN classifier.
classifier = ee.Classifier.smileKNN(5).train(
features=training, classProperty=class_property
)
# Classify the composite.
classified = composite.classify(classifier)
m = geemap.Map()
m.set_center(-122.184, 37.796, 12)
m.add_layer(
classified, {'min': 0, 'max': 2, 'palette': ['red', 'green', 'blue']}
)
m
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/26 (UTC).
[null,null,["Dernière mise à jour le 2025/07/26 (UTC)."],[],[]]