ee.Image.sampleRegions

تحويل كل بكسل في صورة (بمقياس معيّن) يتقاطع مع منطقة واحدة أو أكثر إلى عنصر جغرافي، وإرجاعها كـ FeatureCollection سيتضمّن كل عنصر ناتج سمة واحدة لكل نطاق من الصورة المدخلة، بالإضافة إلى أي سمات محددة تم نسخها من العنصر المدخل.

يُرجى العِلم أنّه سيتم محاذاة الأشكال الهندسية مع مراكز البكسل.

الاستخدامالمرتجعات
Image.sampleRegions(collection, properties, scale, projection, tileScale, geometries)FeatureCollection
الوسيطةالنوعالتفاصيل
هذا: imageصورةالصورة المطلوب أخذ عيّنة منها
collectionFeatureCollectionالمناطق التي سيتم أخذ عيّنات منها.
propertiesقائمة، القيمة التلقائية: فارغةقائمة بالسمات التي سيتم نسخها من كل معلم إدخال. يتم ضبطها تلقائيًا على جميع الخصائص غير التابعة للنظام.
scaleالعدد العائم، القيمة التلقائية: nullمقياس اسمي بالأمتار للإسقاط الذي سيتم أخذ عينات منه في حال عدم تحديدها، يتم استخدام مقياس النطاق الأول للصورة.
projectionالتوقّع، القيمة التلقائية: nullنظام الإسقاط الذي سيتم أخذ العيّنة فيه. في حال عدم تحديدها، يتم استخدام إسقاط النطاق الأول للصورة. إذا تم تحديدها بالإضافة إلى المقياس، سيتم إعادة قياسها وفقًا للمقياس المحدّد.
tileScaleعدد عائم، القيمة التلقائية: 1عامل قياس يُستخدَم لتقليل حجم مربّع التجميع، ويؤدي استخدام قيمة أكبر لـ tileScale (مثل 2 أو 4) قد تتيح إجراء عمليات حسابية تنفد فيها الذاكرة مع القيمة التلقائية.
geometriesقيمة منطقية، القيمة التلقائية: falseإذا كانت القيمة صحيحة، ستتضمّن النتائج هندسة نقطية لكل بكسل تم أخذ عينات منه. وإلا سيتم حذف الأشكال الهندسية (لتوفير مساحة في الذاكرة).

أمثلة

محرّر الرموز البرمجية (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);

إعداد Python

راجِع صفحة بيئة Python للحصول على معلومات حول واجهة برمجة التطبيقات Python واستخدام geemap للتطوير التفاعلي.

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)