I am quite new in GEE but got really stuck!
I want to create buffers around concession areas (raster) of 1km.
I first transformed my vector dataset into raster, reclassified the values to 1 and created a buffer.
That worked out fine. Now I want to have only the 2km layer without the concession areas in it.
The code I used is the following:
//convert vector to raster data - Timber Concessions
print(Timber, "timber") // to check if layer is correct
//Map.addLayer(Timber, {color:'green'}, 'Timber Concessions'); //to check if the layer is there
var Concession = Timber
.filter(ee.Filter.notNull(['superficie']))
.reduceToImage({
properties: ['superficie'],
reducer: ee.Reducer.first()
});
Map.addLayer(Concession, {
palette: 'brown'},
'Timber_Concession_Raster',
false
);
//convert all raster values to value 1
var fromList = [8000, 22588, 23725,28875,25098,30600,33560,35520,
36573,39063,41000, 43612, 53000, 54529, 62570,70810,77600,86820,
89475, 91146, 92530, 93300, 94960, 100200, 104400, 105000, 106472,
123600, 124280, 131100, 139000, 141900, 143000, 145000, 149542, 152772,
164710, 188406, 199900, 221708, 222765, 225500, 235654, 244632, 275770,
296000, 300000, 321840, 322880, 452200, 461296, 510920, 511888, 547026,
568520, 571100, 583000, 621120, 635812, 674600,706452, 1159642];
var toList = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1,
1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1,
1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1,1];
var timberRemap = Concession.remap({
from: fromList,
to: toList,
defaultValue: 0,
bandName: 'first'
});
print(timberRemap, 'timberrep')
Map.addLayer(timberRemap)
//buffer timber concessions by 2km to create buffer areas of high priority areas
var timber_concessions = timberRemap.focal_max({
radius: 2000,
kernelType: 'circle',
units: 'meters',
iterations: 1
});
//This all works fine. But here:
//mask buffered areas with raster of concessions to only get buffer areas / does not work, shows empty raster
var buffered_concessionareas = timber_concessions.select("remapped").where(timberRemap.select("remapped").eq(1),0).selfMask();
print(buffered_concessionareas, 'bufferedworkednot')
Map.addLayer(buffered_concessionareas, {}, 'buffer_areas') //shows only empty raster
Does anyone have any tips?
Best Answer
You can simply mask the buffered result with the originar:
however why wouldn't you use vector buffer and difference? Why are you converting to raster first?