How to process data using JavaScript API for Google Earth Engine on an external application?

101 Views Asked by At

I'm using the JavaScript API in an application that I'm building in OutSystems. I imported the API javascript but all the scripts examples that I'm finding create objects. The print(object) command in the console outputs values but I don't know of any equivalent command that I can use in an external script to read these objects.

I'm using the following script:

// Load watersheds from a data table and filter to the continental US.
var sheds = ee.FeatureCollection('USGS/WBD/2017/HUC06')
  .filterBounds(ee.Geometry.Rectangle(-127.18, 19.39, -62.75, 51.29));

// This function computes the squared difference between an area property
// and area computed directly from the feature's geometry.
var areaDiff = function(feature) {
  // Compute area in sq. km directly from the geometry.
  var area = feature.geometry().area().divide(1000 * 1000);
  // Compute the difference between computed area and the area property.
  var diff = area.subtract(ee.Number.parse(feature.get('areasqkm')));
  // Return the feature with the squared difference set to the 'diff' property.
  return feature.set('diff', diff.pow(2));
};

// Calculate RMSE for population of difference pairs.
var rmse = ee.Number(
  // Map the difference function over the collection.
  sheds.map(areaDiff)
  // Reduce to get the mean squared difference.
  .reduceColumns(ee.Reducer.mean(), ['diff'])
  .get('mean')
)
// Compute the square root of the mean square to get RMSE.
.sqrt();

// Print the result.
console.log('RMSE=', rmse);

However what it outputs is "RMSE= Qo {H: N, args: {…}, T: null, Uc: null}"

On the Google Earth Engine console, replacing console.log() with print(), I've got the result RMSE= 50.29671057565058

Please advise.

1

There are 1 best solutions below

0
Kevin Reid On BEST ANSWER

All of these objects are not values that you can usefully print; they are descriptions of computations that could be performed, but haven't yet been. You need to call .evaluate() with a callback to send the request to the Earth Engine servers.

The reason print() works in the Earth Engine console is because it does this for you automatically.