ee.Image.sample

Échantillonne les pixels d'une image et les renvoie sous forme de FeatureCollection. Chaque caractéristique aura une propriété par bande dans l'image d'entrée. Notez que le comportement par défaut consiste à supprimer les caractéristiques qui croisent les pixels masqués, ce qui entraîne des propriétés à valeur nulle (voir l'argument dropNulls).

UtilisationRenvoie
Image.sample(region, scale, projection, factor, numPixels, seed, dropNulls, tileScale, geometries)FeatureCollection
ArgumentTypeDétails
ceci : imageImageImage à échantillonner.
regionGéométrie, valeur par défaut : nullRégion à partir de laquelle effectuer l'échantillonnage. Si elle n'est pas spécifiée, l'empreinte entière de l'image est utilisée.
scaleFloat, valeur par défaut : nullÉchelle nominale en mètres de la projection à échantillonner.
projectionProjection, valeur par défaut : nullProjection dans laquelle échantillonner. Si aucune projection n'est spécifiée, celle de la première bande de l'image est utilisée. Si elle est spécifiée en plus de la mise à l'échelle, elle est remise à l'échelle spécifiée.
factorFloat, valeur par défaut : nullFacteur de sous-échantillonnage, compris dans la plage (0, 1]. Si elle est spécifiée, "numPixels" ne doit pas l'être. La valeur par défaut est "aucune sous-échantillonnage".
numPixelsLongue, valeur par défaut : nullNombre approximatif de pixels à échantillonner. Si elle est spécifiée, le facteur ne doit pas l'être.
seedEntier, valeur par défaut : 0Graine de randomisation à utiliser pour le sous-échantillonnage.
dropNullsBooléen, valeur par défaut : trueFiltrez le résultat après coup pour supprimer les caractéristiques dont les propriétés ont une valeur nulle.
tileScaleFloat, valeur par défaut : 1Facteur de scaling utilisé pour réduire la taille des tuiles d'agrégation. Si vous utilisez un tileScale plus grand (par exemple, 2 ou 4) peut permettre d'effectuer des calculs qui manquent de mémoire avec la valeur par défaut.
geometriesBooléen, valeur par défaut : falseSi la valeur est "true", le centre du pixel échantillonné est ajouté en tant que propriété de géométrie de l'entité de sortie. Sinon, les géométries seront omises (ce qui permet d'économiser de la mémoire).

Exemples

Éditeur de code (JavaScript)

// Demonstrate extracting pixels from an image as features with
// ee.Image.sample(), and show how the features are aligned with the pixels.

// An image with one band of elevation data.
var image = ee.Image('CGIAR/SRTM90_V4');
var VIS_MIN = 1620;
var VIS_MAX = 1650;
Map.addLayer(image, {min: VIS_MIN, max: VIS_MAX}, 'SRTM');

// Region to sample.
var region = ee.Geometry.Polygon(
  [[[-110.006, 40.002],
    [-110.006, 39.999],
    [-109.995, 39.999],
    [-109.995, 40.002]]], null, false);
// Show region on the map.
Map.setCenter(-110, 40, 16);
Map.addLayer(ee.FeatureCollection([region]).style({"color": "00FF0022"}));

// Perform sampling; convert image pixels to features.
var samples = image.sample({
  region: region,

  // Default (false) is no geometries in the output.
  // When set to true, each feature has a Point geometry at the center of the
  // image pixel.
  geometries: true,

  // The scale is not specified, so the resolution of the image will be used,
  // and there is a feature for every pixel. If we give a scale parameter, the
  // image will be resampled and there will be more or fewer features.
  //
  // scale: 200,
});

// Visualize sample data using ee.FeatureCollection.style().
var styled = samples
  .map(function (feature) {
    return feature.set('style', {
      pointSize: feature.getNumber('elevation').unitScale(VIS_MIN, VIS_MAX)
          .multiply(15),
    });
  })
  .style({
    color: '000000FF',
    fillColor: '00000000',
    styleProperty: 'style',
    neighborhood: 6,  // increase to correctly draw large points
  });
Map.addLayer(styled);

// Each sample feature has a point geometry and a property named 'elevation'
// corresponding to the band named 'elevation' of the image. If there are
// multiple bands they will become multiple properties. This will print:
//
// geometry: Point (-110.01, 40.00)
// properties:
//   elevation: 1639
print(samples.first());

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)

# Demonstrate extracting pixels from an image as features with
# ee.Image.sample(), and show how the features are aligned with the pixels.

# An image with one band of elevation data.
image = ee.Image('CGIAR/SRTM90_V4')
vis_min = 1620
vis_max = 1650
m = geemap.Map()
m.add_layer(image, {'min': vis_min, 'max': vis_max}, 'SRTM')

# Region to sample.
region = ee.Geometry.Polygon(
    [[
        [-110.006, 40.002],
        [-110.006, 39.999],
        [-109.995, 39.999],
        [-109.995, 40.002],
    ]],
    None,
    False,
)
# Show region on the map.
m.set_center(-110, 40, 16)

m.add_layer(ee.FeatureCollection([region]).style(color='00FF0022'))

# Perform sampling convert image pixels to features.
samples = image.sample(
    region=region,
    # Default (False) is no geometries in the output.
    # When set to True, each feature has a Point geometry at the center of the
    # image pixel.
    geometries=True,
    # The scale is not specified, so the resolution of the image will be used,
    # and there is a feature for every pixel. If we give a scale parameter, the
    # image will be resampled and there will be more or fewer features.
    #
    # scale=200,
)


def scale_point_size(feature):
  elevation = feature.getNumber('elevation')
  point_size = elevation.unitScale(vis_min, vis_max).multiply(15)
  feature.set('style', {'pointSize': point_size})
  return feature


# Visualize sample data using ee.FeatureCollection.style().
styled = samples.map(scale_point_size).style(
    color='000000FF',
    fillColor='00000000',
    styleProperty='style',
    neighborhood=6,  # increase to correctly draw large points
)
m.add_layer(styled)
display(m)

# Each sample feature has a point geometry and a property named 'elevation'
# corresponding to the band named 'elevation' of the image. If there are
# multiple bands they will become multiple properties. This will print:
#
# geometry: Point (-110.01, 40.00)
# properties:
#   elevation: 1639
display(samples.first())