1

I am trying to create a time series for chlorophyll using Google Earth Engine. However once I run my code, i get an error message saying "Collection.geometry: Unable to perform this geometry operation. Please specify a non-zero error margin." Can someone explain what this means, and if possible, how to overcome it?

This is the code I've been using:

     //filter for only L.Manyara images 
     //define polygon 
    var AOI = /** color: #d63000 */ee.Geometry.Polygon(
     [[[35.7962, -3.3818],
     [35.8868, -3.414],
     [35.8175, -3.8334],
     [35.7021, -3.841]
     ]]);

   //create landsat 7 iamge collection 
    var collection =ee.ImageCollection('LANDSAT/LE07/C01/T1_TOA')
   //.filterDate('2000-04-01', '2018-01-02).
   .filterBounds(AOI);

  //Chorophyll function

  var mask_chl = function(image) {
 //Define area of interest
  var AOI = /* color: #d63000 */ee.Geometry.Polygon(
    [[[35.6204, -3.2996],
    [36.1862, -3.3434],
    [35.9885, -4.0108],
    [35.3334, -3.8547]
    ]]);

  //clip image based on AOI polygon
 var image = image.clip(AOI)

// Compute the chl using an expression.
var chl = image.expression(
  '-135 + 451* (NIR/RED)', {
    'NIR': image.select('B4'),
    'RED': image.select('B3'),
});

var chl = chl.set('system:time_start', image.get('system:time_start'))

//mask clouds 
var chl_masked = chl.mask(image.select('BQA').eq(672));

//get image data from landsat image metadata
 var eedate = ee.Date(image.get('DATE_ACQUIRED'));
 var start = ee.Date(eedate.advance(-15, "day"))
 var end = ee.Date(eedate.advance(15, "day"))
 var imageCollection = ee.ImageCollection("JRC/GSW1_0/MonthlyHistory")
  .filterDate(start, end);

// Pull out the first image in the collection and clip to AOI
 var LandWaterMask = ee.Image(imageCollection.first()).clip(AOI).eq(2);
 // Mask the non-watery parts of the image
  var chlMapMasked = 
 chl.updateMask(LandWaterMask.neq(0)).set('system:time_start', 
 image.get('system:time_start'));

 return chl_masked
};

 // Apply function to collection
 var chl_collection = collection.map(mask_chl);
 var Viz = {min: 500, max: 0, palette: ['00FFFF', '0000FF']};
 Map.addLayer(chl_collection, Viz)
Map.centerObject(chl_collection)
print(chl_collection)
// Define a region of interest as a buffer around a point.
var geom = ee.Geometry.Point(35.8175, -3.5902).buffer(50);


 // Create and print the chart.
 print(ui.Chart.image.series(chl_collection, geom, ee.Reducer.mean(), 1));

Map.addLayer(geometry)

2 Answers 2

1

replace Map.centerObject(chl_collection) for Map.centerObject(AOI) or just comment that line.

0

You can create such timeseries with alternative software and less time-consuming with landviewer. Open up the website and locate an area of your interest. Once done you need to highlight it with AOI tool and click on the timeseries analysis icon on the left from there you will be able to configure the date and export or use the file at your needs.

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.