Geographic Information Systems Asked on November 29, 2021
I am trying to calculate the area of watershed within each polygon for a set of square polygons (1km*1km) in my study area. I converted a water image to a featureCollection of water polygons, it works great. I get an error when I try to intersect the square polygon layer to the water featureCollection. I also would like to export the result to a csv.
//my study area
var studyArea = ee.FeatureCollection('users/oamram/ABM_Kenya/StudyArea');
//square polygons 1km in dimensions
var polygons = ee.FeatureCollection('users/oamram/ABM_Kenya/Polygons1km');
Map.centerObject(studyArea,13);
var start = '2014-01-01';
var finish = '2014-01-31';
//get water dataset
var dataset = ee.ImageCollection('JRC/GSW1_0/MonthlyHistory')
.filter(ee.Filter.date(start, finish));
//select water layer
var water = dataset.select('water');
//identify water area
var sumWater = water.reduce(ee.Reducer.sum());
//clip to my study area
var clipped = sumWater.clip(studyArea);
var waterVis = {
min: 0.0,
max: 2.0,
palette: ['ffffff', 'fffcb8', '0905ff'],
};
//Apply watermask- water values =2 in this layer//;
var maskedComposite = clipped.updateMask(clipped.eq(2));
// Convert the water areas to vectors.
var vectors = maskedComposite.reduceToVectors({
geometry: studyArea,
crs: maskedComposite.projection(),
scale: 30,
geometryType: 'polygon',
eightConnected: false,
labelProperty: 'water'
});
**//everything works up to here**
// Compute the intersection, for each feature in the feature collection.
var polyIntersect = polygons.map(function(feature){
var intersection = vectors.intersection(feature, ee.ErrorMargin(1));
return feature.set({'Intersect': intersection.area().divide(1000 * 1000)});
});
The error is get is this:
vectors.intersection is not a function
vectors
is a FeatureCollection
and hasn't got an intersection
method. That method is for the class Feature
. This is what I'd do:
// cast vectors
vectors = ee.FeatureCollection(vectors)
// make vectors a list
var vectorList = vectors.toList(vectors.size())
var polyIntersect = polygons.iterate(function(feature, list){
list = ee.List(list)
feature = ee.Feature(feature)
var intersection = vectorList.map(function(feat) {
feat = ee.Feature(feat)
var intersection = feat.intersection(feature, ee.ErrorMargin(1));
return ee.Feature(intersection).set({'Intersect': intersection.area().divide(1000 * 1000)})
})
return list.add(intersection)
}, ee.List([]));
polyIntersect = ee.FeatureCollection(ee.List(polyIntersect).flatten())
Map.addLayer(polyIntersect)
link: https://code.earthengine.google.com/cef9d625cce4f0078c258e38ceff46f6
Answered by Rodrigo E. Principe on November 29, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP