ee.Image.sampleRegions

Chuyển đổi từng pixel của một hình ảnh (ở một tỷ lệ nhất định) giao với một hoặc nhiều khu vực thành một Đối tượng, trả về các đối tượng đó dưới dạng một FeatureCollection. Mỗi đối tượng đầu ra sẽ có một thuộc tính cho mỗi dải tần của hình ảnh đầu vào, cũng như mọi thuộc tính được chỉ định sao chép từ đối tượng đầu vào.

Xin lưu ý rằng các hình học sẽ được điều chỉnh cho phù hợp với tâm của pixel.

Cách sử dụngGiá trị trả về
Image.sampleRegions(collection, properties, scale, projection, tileScale, geometries)FeatureCollection
Đối sốLoạiThông tin chi tiết
this: imageHình ảnhHình ảnh để lấy mẫu.
collectionFeatureCollectionCác khu vực cần lấy mẫu.
propertiesDanh sách, mặc định: nullDanh sách các thuộc tính cần sao chép từ mỗi đối tượng đầu vào. Theo mặc định, tất cả các thuộc tính không phải của hệ thống.
scaleFloat, mặc định: nullMột tỷ lệ danh nghĩa tính bằng mét của phép chiếu để lấy mẫu. Nếu không được chỉ định, thì tỷ lệ của dải tần đầu tiên của hình ảnh sẽ được dùng.
projectionPhép chiếu, mặc định: nullPhép chiếu để lấy mẫu. Nếu không được chỉ định, thì phép chiếu của dải tần đầu tiên của hình ảnh sẽ được dùng. Nếu được chỉ định ngoài tỷ lệ, hãy điều chỉnh tỷ lệ theo tỷ lệ đã chỉ định.
tileScaleSố thực, mặc định: 1Hệ số tỷ lệ dùng để giảm kích thước ô tổng hợp; sử dụng tileScale lớn hơn (ví dụ: 2 hoặc 4) có thể cho phép các phép tính hết bộ nhớ với giá trị mặc định.
geometriesBoolean, mặc định: falseNếu đúng, kết quả sẽ bao gồm một hình học điểm cho mỗi pixel được lấy mẫu. Nếu không, các hình học sẽ bị bỏ qua (giúp tiết kiệm bộ nhớ).

Ví dụ

Trình soạn thảo mã (JavaScript)

// A Sentinel-2 surface reflectance image.
var img = ee.Image('COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG');
Map.setCenter(-122.503881, 37.765588, 18);
Map.addLayer(img, {bands: ['B11', 'B8', 'B3'], min: 100, max: 4500}, 'img');

// A feature collection with two polygon regions each intersecting 36
// pixels at 10 m scale.
var fcPolygon = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Rectangle(
    -122.50620929, 37.76502806, -122.50552264, 37.76556663), {id: 0}),
  ee.Feature(ee.Geometry.Rectangle(
    -122.50530270, 37.76565568, -122.50460533, 37.76619425), {id: 1})
]);
Map.addLayer(fcPolygon, {color: 'yellow'}, 'fcPolygon');

var fcPolygonSamp = img.sampleRegions({
  collection: fcPolygon,
  scale: 10,
  geometries: true
});
// Note that 7 pixels are missing from the sample. If a pixel contains a masked
// band value it will be excluded from the sample. In this case, the TCI_B band
// is masked for each unsampled pixel.
print('A feature per pixel (at given scale) in each region', fcPolygonSamp);
Map.addLayer(fcPolygonSamp, {color: 'purple'}, 'fcPolygonSamp');

// A feature collection with two points intersecting two different pixels.
// This example is included to show the behavior for point geometries. In
// practice, if the feature collection is all points, ee.Image.reduceRegions
// should be used instead to save memory.
var fcPoint = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Point([-122.50309256, 37.76605006]), {id: 0}),
  ee.Feature(ee.Geometry.Point([-122.50344661, 37.76560903]), {id: 1})
]);
Map.addLayer(fcPoint, {color: 'cyan'}, 'fcPoint');

var fcPointSamp = img.sampleRegions({
  collection: fcPoint,
  scale: 10
});
print('A feature per point', fcPointSamp);

Thiết lập Python

Hãy xem trang Môi trường Python để biết thông tin về API Python và cách sử dụng geemap cho quá trình phát triển tương tác.

import ee
import geemap.core as geemap

Colab (Python)

# A Sentinel-2 surface reflectance image.
img = ee.Image('COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG')
m = geemap.Map()
m.set_center(-122.503881, 37.765588, 18)
m.add_layer(
    img, {'bands': ['B11', 'B8', 'B3'], 'min': 100, 'max': 4500}, 'img'
)
display(m)

# A feature collection with two polygon regions each intersecting 36
# pixels at 10 m scale.
fc_polygon = ee.FeatureCollection([
    ee.Feature(
        ee.Geometry.Rectangle(
            -122.50620929, 37.76502806, -122.50552264, 37.76556663
        ),
        {'id': 0},
    ),
    ee.Feature(
        ee.Geometry.Rectangle(
            -122.50530270, 37.76565568, -122.50460533, 37.76619425
        ),
        {'id': 1},
    ),
])
m.add_layer(fc_polygon, {'color': 'yellow'}, 'fc_polygon')

fc_polygon_samp = img.sampleRegions(
    collection=fc_polygon, scale=10, geometries=True
)
# Note that 7 pixels are missing from the sample. If a pixel contains a masked
# band value it will be excluded from the sample. In this case, the TCI_B band
# is masked for each unsampled pixel.
display('A feature per pixel (at given scale) in each region', fc_polygon_samp)
m.add_layer(fc_polygon_samp, {'color': 'purple'}, 'fc_polygon_samp')

# A feature collection with two points intersecting two different pixels.
# This example is included to show the behavior for point geometries. In
# practice, if the feature collection is all points, ee.Image.reduceRegions
# should be used instead to save memory.
fc_point = ee.FeatureCollection([
    ee.Feature(ee.Geometry.Point([-122.50309256, 37.76605006]), {'id': 0}),
    ee.Feature(ee.Geometry.Point([-122.50344661, 37.76560903]), {'id': 1}),
])
m.add_layer(fc_point, {'color': 'cyan'}, 'fc_point')

fc_point_samp = img.sampleRegions(collection=fc_point, scale=10)
display('A feature per point', fc_point_samp)