很多时候我们想统计研究区的像素数量,但是用错了函数,本来用ee.reducer.sum(), ee.reducer.count()混淆使用,我们发现有很多人要统计像素数量,但却统计成了总量,所以我们首先要看下两个函数如何使用:
ee.Reducer.sum()
Returns a Reducer that computes the (weighted) sum of its inputs.
No arguments.
Returns: Reducer
ee.Reducer.count()
Returns a Reducer that computes the number of non-null inputs.
No arguments.
Returns: Reducer
reduceRegion(reducer, geometry, scale, crs, crsTransform, bestEffort, maxPixels, tileScale)
Apply a reducer to all the pixels in a specific region.
Either the reducer must have the same number of inputs as the input image has bands, or it must have a single input and will be repeated for each band.
Returns a dictionary of the reducer's outputs.
Arguments:
this:image (Image):
The image to reduce.
reducer (Reducer):
The reducer to apply.
geometry (Geometry, default: null):
The region over which to reduce data. Defaults to the footprint of the image's first band.
scale (Float, default: null):
A nominal scale in meters of the projection to work in.
crs (Projection, default: null):
The projection to work in. If unspecified, the projection of the image's first band is used. If specified in addition to scale, rescaled to the specified scale.
crsTransform (List, default: null):
The list of CRS transform values. This is a row-major ordering of the 3x2 transform matrix. This option is mutually exclusive with 'scale', and replaces any transform already set on the projection.
bestEffort (Boolean, default: false):
If the polygon would contain too many pixels at the given scale, compute and use a larger scale which would allow the operation to succeed.
maxPixels (Long, default: 10000000):
The maximum number of pixels to reduce.
tileScale (Float, default: 1):
A scaling factor between 0.1 and 16 used to adjust aggregation tile size; setting a larger tileScale (e.g. 2 or 4) uses smaller tiles and may enable computations that run out of memory with the default.
Returns: Dictionary
代码:
var image = ee.Image("projects/ee-cananhamzaolu/assets/Sr_connect0"); Map.addLayer(image,{}, 'Grayscale_Otsu') Map.centerObject(image); var s=image.selfMask().reduceRegion({ reducer: ee.Reducer.sum(), scale:100 }) print(s) var s = image.selfMask().reduceRegion({ reducer: ee.Reducer.count(), maxPixels: 1e16, }); print(s);