Earth Engine CRS – Why Google Earth Engine Chooses Different CRS for Different Days

coordinate systemcoordinatesgoogle-earth-enginemappingpython

I'm using Google Earth Engine (GEE) with Python API.

I have this polygon:

{"type":"FeatureCollection","features":[{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[35.470985770225525,32.86172261307505],[35.470733642578125,32.86186680551963],[35.46989679336548,32.86167304686806],[35.469011664390564,32.861911865610494],[35.468518137931824,32.86207858774762],[35.468480587005615,32.858532295271665],[35.470706820487976,32.858446677817426],[35.470985770225525,32.86172261307505]]]}}]}

I downloaded (using ee.batch.Export.image.toDrive) two Sentinel-1 images clipped to the geometry of the polygon:

  1. COPERNICUS/S1_GRD/S1A_IW_GRDH_1SDV_20211217T033539_20211217T033604_041043_04E032_1544
  2. COPERNICUS/S1_GRD/S1A_IW_GRDH_1SDV_20211222T034407_20211222T034432_041116_04E297_CE51

When downloading images this way, GEE saves them as GeoTIFF in local UTM CRS. However, for the first image, the CRS is EPSG:32637 and for the second image, the CRS is EPSG:32636 (which is the correct one).

I wonder why this happens, is it a bug/error maybe?

  • I know I can specify the CRS in ee.batch.Export.image.toDrive function, but let's assume I have many polygons and I don't know the CRS of each one.

Best Answer

Your polygon intersects with several different Sentinel 1 tiles. The UTM zone (shown in red) is probably taken from the center of a tile, in which case it makes sense they are different for different dates. You could reproject your images to WGS before exporting but it's probably better to keep them in their native UTM projections.

enter image description here

Should you wish to reproject your image collection:

poly = ee.Geometry.Polygon([[35.470985770225525,32.86172261307505],[35.470733642578125,32.86186680551963],[35.46989679336548,32.86167304686806],[35.469011664390564,32.861911865610494],[35.468518137931824,32.86207858774762],[35.468480587005615,32.858532295271665],[35.470706820487976,32.858446677817426],[35.470985770225525,32.86172261307505]])

collection = (ee.ImageCollection("COPERNICUS/S1_GRD")
              .filterBounds(poly)
              .filterDate('2021-01-01', '2022-01-01'))

collectionWGS84 = collection.map(lambda image: image.reproject('EPSG:4326'))