1

I try to get a satelital image on my google drive by using the code:

The image variable is mejorImagen, the problem is this:

enter image description here

Export.image.toDrive({
  image: mejorImagen,
  description: mejorImagen.date().format('yyyy-MM-dd').getInfo(),
  scale: 10,
  region: Cuadro
});

Cannot export image on Google Earth engine.

Code:

var Cuadro = 
    /* color: #0b4a8b */
    /* shown: false */
    /* displayProperties: [
      {
        "type": "marker"
      },
      {
        "type": "rectangle"
      }
    ] */
    ee.Geometry({
      "type": "GeometryCollection",
      "geometries": [
        {
          "type": "Point",
          "coordinates": [
            -71.6914011142377,
            -16.572221685382196
          ]
        },
        {
          "type": "Polygon",
          "coordinates": [
            [
              [
                -71.80297441812573,
                -16.271598607085643
              ],
              [
                -71.80297441812573,
                -16.58838812641333
              ],
              [
                -71.32232256265698,
                -16.58838812641333
              ],
              [
                -71.32232256265698,
                -16.271598607085643
              ]
            ]
          ],
          "geodesic": false,
          "evenOdd": true
        }
      ],
      "coordinates": []
    });
var image = ee.ImageCollection('COPERNICUS/S2')
//var image = ee.ImageCollection('LANDSAT/LC08/C01/T1')
//var image = ee.ImageCollection('LANDSAT/LT05/C01/T1')
.filterBounds(Cuadro)
.filterDate('2020-03-20','2020-03-24')
//La propiedad es diferente para Landsat 8 y Sentinel 2A
//sort('CLOUD_COVER');
//Esto ordena de menor a mayor, propiedad de Sentinel 2A
.sort('CLOUD_COVERAGE_ASSESSMENT');

var conteo = image.size();
print('conteo de imágenes', conteo);

var mejorImagen = ee.Image(image.first());

var mejorImagen = mejorImagen.clip(Cuadro);

print('La primera con menos nubosidad', mejorImagen);
//Convertir la lista de imagenes en una lista
var listaImagenes = image.toList(image.size());

var segundaMejorImagen = ee.Image(listaImagenes.get(1));
var terceraMejorImagen = ee.Image(listaImagenes.get(2));

print('mejorImagen', mejorImagen.get('CLOUD_COVERAGE_ASSESSMENT'));
print('segundaMejorImagen', segundaMejorImagen.get('CLOUD_COVERAGE_ASSESSMENT'));
print('terceraMejorImagen', terceraMejorImagen.get('CLOUD_COVERAGE_ASSESSMENT'));
//Verdadero color para Landsat 8 y Sentinel 2A es 4 3 2
//True color para Landsat 5 y 7 es 3 2 1
Map.addLayer(mejorImagen, {bands: ['B4', 'B3', 'B2'], max: 3000}, 'image');
var fechaAdquirida = mejorImagen.get('DATE_ACQUIRED');
print('Fecha adquirida', fechaAdquirida);
//Para sentinel 2A las bandas de 10 m son 2,3,4,8
//Para Landsat 8 las bandas de 30 m son 1,2,3,4,5,6,7
//Para landsat 5 y 7 las bandas de 30 m son 1,2,3,4,5,7
//mejorImagen = mejorImagen.select(['B2','B3','B4','B8'])
mejorImagen = mejorImagen.select(['B2','B3','B4','B8']);


//Map.centerObject(mejorImagen,10);

//Export.image.toDrive({
  //  El clip define el área de interés real
    //image: mejorImagen,
    //description: 'Sentinel2A_Op_2018',
    //scale: 10,
    //region: operaciones
    //});

Export.image.toDrive({
  image: mejorImagen,
  description: mejorImagen.date().format('yyyy-MM-dd').getInfo(),
  scale: 10,
  region: Cuadro
});

Error:

error

Error: GeometryConstructors.MultiGeometry: Geometry coordinate projection requires non-zero maxError

  • Please expand on the problem you are having: what error message do you get, what do think is causing the problem, etc. – Justin Braaten Mar 27 at 16:31
2

I think the issue arises because you were trying to export the image clipped on a GeometryCollection instead of Polygon. Try this:

var CuadroPoly = Cuadro.geometries(); // Create a new polygon to clip the image to
CuadroPoly = CuadroPoly.get(1);
var image = ee.ImageCollection('COPERNICUS/S2')
  .filterBounds(Cuadro)
  .filterDate('2020-03-20','2020-03-24')
  .sort('CLOUD_COVERAGE_ASSESSMENT');

var conteo = image.size();
print('conteo de imágenes', conteo);

var mejorImagen = ee.Image(image.first());

var mejorImagen = mejorImagen.clip(CuadroPoly);

print('La primera con menos nubosidad', mejorImagen);
//Convertir la lista de imagenes en una lista
var listaImagenes = image.toList(image.size());

var segundaMejorImagen = ee.Image(listaImagenes.get(1));
var terceraMejorImagen = ee.Image(listaImagenes.get(2));

print('mejorImagen', mejorImagen.get('CLOUD_COVERAGE_ASSESSMENT'));
print('segundaMejorImagen', segundaMejorImagen.get('CLOUD_COVERAGE_ASSESSMENT'));
print('terceraMejorImagen', terceraMejorImagen.get('CLOUD_COVERAGE_ASSESSMENT'));
//Verdadero color para Landsat 8 y Sentinel 2A es 4 3 2
//True color para Landsat 5 y 7 es 3 2 1
Map.addLayer(mejorImagen, {bands: ['B4', 'B3', 'B2'], max: 3000}, 'image');
var fechaAdquirida = mejorImagen.get('DATE_ACQUIRED');
print('Fecha adquirida', fechaAdquirida);
//Para sentinel 2A las bandas de 10 m son 2,3,4,8
//Para Landsat 8 las bandas de 30 m son 1,2,3,4,5,6,7
//Para landsat 5 y 7 las bandas de 30 m son 1,2,3,4,5,7
//mejorImagen = mejorImagen.select(['B2','B3','B4','B8'])
mejorImagen = mejorImagen.select(['B2','B3','B4','B8']);

var date = ee.Date(mejorImagen.get('system:time_start')).format('YYYY-MM-DD');
date = date.getInfo();

Export.image.toDrive({
  image: mejorImagen,
  description: date,
  scale: 10,
  region: CuadroPoly,
  maxPixels: 130000000000
});
| improve this answer | |
  • The export worked for me after 6 minutes of processing time. – adwiputra Mar 28 at 18:42
  • That is right, it worked. Tks – Alvaro Morales Mar 29 at 3:17
  • Glad it helped. If you wouldn't mind, please accept it as the correct answer :) – adwiputra Mar 29 at 4:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.