0

I am very new to Earth Engine and Javascript so I wouldn't be surprised if the solution to my problem is extremely simple. Anyways, I've been trying to fix this in days and I'm not doing anyhow better.

I'm trying to get the cumulative cost distance between some areas of interest and some tide gauges in the coastal U.S. To do this, I first calculated the pixel cost based on a national elevation map. Then, I calculated the cumulative cost thanks to the built-in function cumulativeCost. That went all pretty well. Now I'm trying to extract the cumulative cost values at the position of the tide gauges. To do this, someone suggested me to use the reduceRegions method. I've tried the following code but unsuccessfully.

I'm going to post my whole code so that is replicable. Please note that the part with which I have a problem is the second one.

Thanks so much in advance.

// IMPORTS
var imageCollection =    
ee.ImageCollection("users/brazzolanicoletta/sourceRasters"),
sourceVis = {"opacity":1,"bands":["b1"],"min":1,"max":1,"gamma":1},
DEMVis = {"opacity":1,"bands":
["elevation"],"min":-73.50744474674659,"max":374.555654458347,"gamma":1},
imageVisParam = {"opacity":1,"bands":
["elevation"],"min":-0.02534169006347656,"max":3.6601884765625,"palette":
["0345ff","000000"]},
imageVisParam2 = {"opacity":1,"bands":
["elevation"],"min":-0.02534169006347656,"max":3.6601884765625,"palette":
["0345ff","000000"]},
cosVisParam = {"opacity":1,"bands":
["cumulative_cost"],"max":4170.014060708561,"palette":
["ff0303","efff05","4eff05","002bff","ff01f7","000000"]},
imageVisParam3 = {"opacity":1,"bands":
["cumulative_cost"],"max":4028.1446098656247,"gamma":1};


//get IDs for images in image collection 
var getID = function(image){ return image.set('ID', image.id());};
var okID = imageCollection.map(function(image) { return image.set('ID', 
image.id());});

// Set general estethic parameters 
var dem_vis = {bands:"elevation", min:0, max:0.05,         
palette:"#0345ff,#000000"};
var cost_vis = {bands:"cumulative_cost", min:0, max:10000,     
palette:"ff0303,efff05,4eff05,002bff,ff01f7,000000"}

// PART 1: Cumulative Cost based on source rasters
 //import elevation map 
var dem = ee.Image('USGS/NED');

// pixel cost calculation 
var elThreshold = ee.Number(5); //set elevation threshold
var subDEM = dem.updateMask(dem.lt(elThreshold)); //mask pixel above 
elevation threshold
var costDEM = (subDEM.add(30)).divide(1000); //calculate the cost of each 
pixel (height + width pixel (30m)) in km 

// Add DEM to the map
Map.addLayer(costDEM, dem_vis, "SRTM");

// Cumulative cost
var calcCumCost = function(img) {
return costDEM.cumulativeCost({
source:img,
maxDistance:1E5});
}; //write a function that perform the cumulative cost calculation for each 
image given the cost of the pixel 

var demCost = ee.ImageCollection(okID.map(calcCumCost)); // caulcuate     
cumulative cost for each source raster in the image collection 

// PART 2 - Reduce Region: extract cumulative cost for tide gauges 

var tideGauges = 
ee.FeatureCollection('ft:1e1ik7ZklKbRSRVS50Ml_prHBTZ0WbNgW73fw7Ald'); 
//import fusion table of tide gauges

// WORK IN PROGRESS
// Empty Collection to fill
var ft = ee.FeatureCollection(ee.List([]));

// function that extract values from cumulative cost rasters and reduce it 
for points region
var fill = function(img) {
 // gets the values for the points in the current img
var ft2 = img.reduceRegions(tideGauges, ee.Reducer.first(),30);
// set ID
var ID = ee.Feature(null, {'id':img.id()});

// writes the ID in each feature
 var ft3 = ft2.map(function(f){return f.set("id", ID)});
// merges the FeatureCollections
return ft.merge(ft3);
};

// Apply the function to each image in the ImageCollection
var newft = ee.FeatureCollection(demCost.map(fill));
print(newft, 'Potentially: region-reduced cost');

1 Answers1

0

The maxDistance on your cumulativeCost function translates into a neighborhood of 3000 pixels (at 30m), which means each tile needs to bring in a 44 million neighbor pixels, which is just too much memory. You're going to have to lower the maxDistance or increase the scale of the reduceRegion.

Noel Gorelick
  • 489
  • 2
  • 10