sampleRegions采样的时候,千万千万别有空值

学术   2024-07-31 18:01   云南  
前一阵子,徐老师问了我们一个问题,说他的样本数据采样后都变成空了,但是实际是有影像的。
后来,他把代码发给了我们。我们对其进行了检测,发现在随时序数据采样时,经常会出现这样的问题。主要原因是去云后时序数据很容易出现空值,而一旦出现空值,sampleRegions函数得到的featureCollection数据集就会有样本丢失,甚至可能为空集的情况。因此,在使用sampleRegions函数的时候,一定要时刻留意采样影像是否有空值。
下面的代码部分,大家一定要留意,值得细细品味。
// 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);

走天涯徐小洋地理数据科学
一个爱生活的地理土博,分享GIS、遥感、空间分析、R语言、景观生态等地理数据科学实操教程、经典文献、数据资源
 最新文章