According to the documentation of GEE
ee.Image.sample()
samples the pixels of an image and returns them as aFeatureCollection
, in which each feature has 1 property per band in the input image. You can provide a region parameter, which defines the region to sample from, or a factor parameter, which subsamples the image, or anumPixels
parameter, which approximates the number of pixels to be sampled. I figure that either all pixels from the region are becoming features, or a randomized subset of pixels. Is that correct?ee.Image.SampleRegions()
samples the pixels of an image in one or more region and puts them into aFeatureCollection
with 1 property per band of the input image. It requires aFeatureCollection
as input, which defines the regions to sample over. Geometries will be snapped to pixel centers, thus I understand that there will be one sample per feature in theFeatureCollection
, even if theFeatureCollection
contains many extended polygons. Is that correct?ee.Image.stratifiedSample()
extracts stratified random sample points from an image and returns aFeatureCollection
of 1 feature per extracted point with each feature having 1 property per band of the input image. It requires anumPoints
parameter that defines how many points to sample. Also you can provide aclassBand
parameter, which tells you the classes to be used for stratification, and a region parameter, which tells you the region to sample from. Thus, other than for the other two sampling operations, you don't need aFeatureCollection
as input, but rather a raster band that contains information about the classes. Is that correct?
I am just wondering: When should which of these strategies be used?
ee.Image.sample()
seems most straight-forward. But can it be used if you have a FeatureCollection
of training samples, e.g. containing polygon labels?
ee.Image.SampleRegions()
seems to be able to do just that, but shrinks all geometries to the centers, if I am not mistaken.
And ee.Image.stratifiedSample()
will need a raster image containing your classes. Is this possible for sparse label images, i.e. classBands
that do not contain a class for every pixel?
I am really confused a little and would be happy to see a set of comparable examples to gain a better understanding...