Google Earth Engine – Scale Definition and Export in Google Earth Engine

coordinate systemgoogle-earth-enginerwgs84

I am trying to download Global Surface Water (Pekel et al 2016) data from Google Earth Engine. It has a specified maximum spatial resolution of 30 [presumably meters]. When I export the data specifying a scale of 30, it exports by default with a coordinate reference system of WGS 84. According to this question Landsat is not in WGS 84 and a scale shouldn't be specified, but as was pointed out this is a requirement to export data, but regardless, you need to specify a scale when exporting the image. A copy of this code is here (for reproducibility). I do this, and load up the image in R, and am told this:

 image <- raster("~/GSW_new/so_carolina_test.tif")
> image
class       : RasterLayer 
dimensions  : 850, 944, 802400  (nrow, ncol, ncell)
resolution  : 0.0002694946, 0.0002694946  (x, y)
extent      : -81.10574, -80.85134, 32.14828, 32.37735  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
data source : ~\GSW_new\so_carolina_test.tif 
names       : so_carolina_test 
values      : 0, 255  (min, max)

Indicating that the spatial resolution has been given in degrees (not meters…) and now I am not actually getting things out with fixed distances (only fixed degree distances). Worse, this doesn't match the degree spacing that's given by some of the imagery given from a separate source (.00025 by .00025): see the data documentation with a specific example here, but it is the stated nominal resolution outputted from:

var grabscale = grab.projection().nominalScale();

Additionally putting that downloaded file into ArcGIS yields the following (see screenshot). Note a resolution of 27 m – in northern latitudes this is distorted….
enter image description here

My understanding is that landsat data is at 30 m, and this dataset is projected in WGS84.

How can I download said 30 m data, and how can I download it over areas at 60 N or 70 N (Arctic) while accurately preserving the "30-m" resolution?

I need to accurately measure distances from water bodies, so I need accurate distance spacing.

Should I be doing CRS reprojection to UTM (my field site is approximately 62°38'56.60"N, 164° 5'40.35"W or can I download accurate data from GEE and do processing offline in R or ArcGIS?

Is the data, being in a WGS84 projection with equal spacing, no longer at 30-m resolution in the x-y directions?

EDIT
To clarify this question: Tyler Erickson noted that the dataset is in WGS84 projection, with nominal 30 m resolution at the equator. I am trying acquire the finets spatial resolution GSW dataset, and as noted above they provide their data at .00025 deg spacing while the "30 m" data from GEE is at a slightly coarser resolution. How can I, using GEE, obtain the .00025 degree spacing that is provided by the GSW developers? As part of the answer, it would be very helpful to include information (even links etc. for self-study) on how exactly these calculations are made so I can interpret these things more easily in the future. For example is this a basic formula concerning the distance between lines of latitude?

Pekel et al 2016: https://www.nature.com/articles/nature20584

Best Answer

The JRC Monthly Water History dataset is an image that uses a single coordinate reference system (CRS) of EPSG:4326, and does not use the same CRS as Landsat images (which use a collection of UTM zone spatial references). The 30m resolution refers to the nominal resolution at the projection origin (the equator in the case of EPSG:4326).

You can use Earth Engine to export images in a variety of CRSs, and each CRS/projection will distort the map differently. For buffering lakes by small distances, a conformal projection (such as Mercator) will have minimal distance distortion.

Related Question