Rimozione di buffer sovrapposti utilizzando Google Earth Engine
Ho una linea suddivisa in segmenti di linea, con ogni segmento che ha un buffer intorno. Sto cercando di rimuovere il punto in cui si sovrappongono (fondamentalmente dove i cerchi più scuri si trovano all'interno del buffer di linea stesso), in modo che quando in seguito maschera con il buffer non abbia risultati duplicati.
Qualcuno sa come rimuovere quelle sovrapposizioni (e idealmente mantenere la terra che hanno coperto ancora all'interno di UNA area tamponata)?
var lines = ee.FeatureCollection(
linetosplit.cutLines(ee.List.sequence(0, linetosplit.length(), 9000))
.geometries()
.map(function (geometry) { return ee.Feature(ee.Geometry(geometry));
}));
var buffered = lines.map(function (feature) {
return feature.buffer(2000);
});
Map.addLayer(buffered);
print(buffered)
Collegamento al codice: https://code.earthengine.google.com/b6b989b9d0bed22a8882f95bd68d0d4d
Risposte
È possibile prima estrarre le singole funzionalità dalla raccolta di funzionalità e trovare le intersezioni tra di esse utilizzando:
//extract individual features
var f0 = buffered.filter(ee.Filter.eq("system:index", '0'));
var f1 = buffered.filter(ee.Filter.eq("system:index", '1'));
var f2 = buffered.filter(ee.Filter.eq("system:index", '2'));
var f3 = buffered.filter(ee.Filter.eq("system:index", '3'));
var f4 = buffered.filter(ee.Filter.eq("system:index", '4'));
var f5 = buffered.filter(ee.Filter.eq("system:index", '5'));
//compute spatial intersections between features
var int1 = f0.geometry().intersection(f1.geometry());
var int2 = f1.geometry().intersection(f2.geometry());
var int3 = f2.geometry().intersection(f3.geometry());
var int4 = f3.geometry().intersection(f4.geometry());
var int5 = f4.geometry().intersection(f5.geometry());
Quindi, combini le intersezioni in un multipoligono e calcola la differenza spaziale usando:
//combine intersections and plot
var intersections = ee.Geometry.MultiPolygon([int1, int2, int3, int4, int5]);
Map.addLayer(intersections, {color: 'FFFF00'}, 'intersections');
//compute difference and plot
var difference = buffered.geometry().difference(intersections)
Map.addLayer(difference, {color: '#24f8ff'}, 'difference');