Learning objectives of this use case
- The relationship between land tenure and land governace
- Four main sources which provide data to monitor land tenure
- Landmark
- World database of protected areas (protected planet)
- Global forrest watch
- Global deforrestation dataset
The Google Earth Engine Code used here can be found below the videos as well as by following this link:
https://code.earthengine.google.com/8fceb83eb5092e7b01450f4754969f9c
Up next: Introduction to first Use Case
- Unterstand the realtionship between land tenure and land governance
- Find out how indigenous people and conservation success correlate.
- Get to know the different data sources you’ll make use of.
Up next: Hands on exercise
- Get a brief introduction to the Google Earth Engine
- Learn how to apply different bands
- Do some basic coding and print your first results
Code used in the video
var indig_cons = ee.FeatureCollection("users/konradhentze/indig_conservation_area"),
cat1a_cons = ee.FeatureCollection("users/konradhentze/prot_area_cat1a");
///////////////////////// COMPARING DEFORESTATION \\\\\\\\\\\\\\\\\\\\\\\\\
Map.addLayer(indig_cons, {}, 'Indigenous conservation area')
Map.addLayer(cat1a_cons, {}, 'Conservation area IUCN cat 1a')
//load the Hansen dataset as an image
var HansenChange = ee.Image('UMD/hansen/global_forest_change_2019_v1_7')
print('Hansen forest cover change dataset', HansenChange)
//we SELECT with .select([]) to extract uniques variables from the dataset above
var lossImage = HansenChange.select(['loss']); //HINT: Caps in your variables ease reading
var gainImage = HansenChange.select(['gain']); //HINT: [] is always something within something. Mostly a band
var treeCover = HansenChange.select(['treecover2000']);
print('Loss image Hansen dataset', lossImage)
// use .and to COMBINE the two bands above
// the condition means 1 where a AND b (meaning the very same pixel shows loss in one and gain in the other dataset)
var gainAndLoss = gainImage.and(lossImage);
//print the result and see: We could have renamed the band it does not make sense
print('Forest gain and loss from Hansen dataset', gainAndLoss)
// Show the loss and gain image and the other images from the previous section
Map.addLayer(HansenChange.mask(HansenChange), {
bands: ['treecover2000'],
palette: ['000000', '00FF00'],
max: 100
}, 'forest cover masked');
Map.addLayer(HansenChange.mask(HansenChange), {
bands: ['loss'],
palette: ['FF0000'],
max: 100
}, 'forest loss masked');
Map.addLayer(HansenChange.mask(HansenChange), {
bands: ['gain'],
palette: ['0000FF'],
max: 100
}, 'forest gain masked');
Map.addLayer(gainAndLoss.updateMask(gainAndLoss),
{palette: 'FF00FF'}, 'Gain and Loss');
///////////////////////// CALCULATION AND STATISTICS WITH REDUCERS \\\\\\\\\\\\\\\\\\\\\\\\\
//By using a reducer (calculating means, stats, etc.) we can actually create spatial statistics based on
//information from other features or layer.
// call the conservation areas from the assets.
print(indig_cons)
print(cat1a_cons)
// Sum the values of forest loss pixels in the protected areas.
// to do this, we first have to use the mutliply function to get the square meters instead of the number of pixels
var areaImage = lossImage.multiply(ee.Image.pixelArea());
var SumLossIndig = areaImage.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: indig_cons,
scale: 30,
});
var SumLossCat1a = areaImage.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: cat1a_cons,
scale: 30,
});
print(SumLossIndig);
print('Forestry loss in indigenous area: ', SumLossIndig.get('loss'), 'square meters');
print(SumLossCat1a);
print('Forestry loss in protected area: ', SumLossCat1a.get('loss'), 'square meters');
Map.addLayer(indig_cons, {}, 'Indigenous conservation area')
Map.addLayer(cat1a_cons, {}, 'Conservation area IUCN cat 1a')
Up next: Combine and visualize your data
- Learn how to finally combine tenure data and data on deforrestation
- Learn how to calculate the sum of forrest loss in different areasand
- Finally visualize your data
Code used in the video
var indig_cons = ee.FeatureCollection("users/konradhentze/indig_conservation_area"),
cat1a_cons = ee.FeatureCollection("users/konradhentze/prot_area_cat1a");
///////////////////////// COMPARING DEFORESTATION \\\\\\\\\\\\\\\\\\\\\\\\\
Map.addLayer(indig_cons, {}, 'Indigenous conservation area')
Map.addLayer(cat1a_cons, {}, 'Conservation area IUCN cat 1a')
//load the Hansen dataset as an image
var HansenChange = ee.Image('UMD/hansen/global_forest_change_2019_v1_7')
print('Hansen forest cover change dataset', HansenChange)
//we SELECT with .select([]) to extract uniques variables from the dataset above
var lossImage = HansenChange.select(['loss']); //HINT: Caps in your variables ease reading
var gainImage = HansenChange.select(['gain']); //HINT: [] is always something within something. Mostly a band
var treeCover = HansenChange.select(['treecover2000']);
print('Loss image Hansen dataset', lossImage)
// use .and to COMBINE the two bands above
// the condition means 1 where a AND b (meaning the very same pixel shows loss in one and gain in the other dataset)
var gainAndLoss = gainImage.and(lossImage);
//print the result and see: We could have renamed the band it does not make sense
print('Forest gain and loss from Hansen dataset', gainAndLoss)
// Show the loss and gain image and the other images from the previous section
Map.addLayer(HansenChange.mask(HansenChange), {
bands: ['treecover2000'],
palette: ['000000', '00FF00'],
max: 100
}, 'forest cover masked');
Map.addLayer(HansenChange.mask(HansenChange), {
bands: ['loss'],
palette: ['FF0000'],
max: 100
}, 'forest loss masked');
Map.addLayer(HansenChange.mask(HansenChange), {
bands: ['gain'],
palette: ['0000FF'],
max: 100
}, 'forest gain masked');
Map.addLayer(gainAndLoss.updateMask(gainAndLoss),
{palette: 'FF00FF'}, 'Gain and Loss');
///////////////////////// CALCULATION AND STATISTICS WITH REDUCERS \\\\\\\\\\\\\\\\\\\\\\\\\
//By using a reducer (calculating means, stats, etc.) we can actually create spatial statistics based on
//information from other features or layer.
// call the conservation areas from the assets.
print(indig_cons)
print(cat1a_cons)
// Sum the values of forest loss pixels in the protected areas.
// to do this, we first have to use the mutliply function to get the square meters instead of the number of pixels
var areaImage = lossImage.multiply(ee.Image.pixelArea());
var SumLossIndig = areaImage.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: indig_cons,
scale: 30,
});
var SumLossCat1a = areaImage.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: cat1a_cons,
scale: 30,
});
print(SumLossIndig);
print('Forestry loss in indigenous area: ', SumLossIndig.get('loss'), 'square meters');
print(SumLossCat1a);
print('Forestry loss in protected area: ', SumLossCat1a.get('loss'), 'square meters');
Map.addLayer(indig_cons, {}, 'Indigenous conservation area')
Map.addLayer(cat1a_cons, {}, 'Conservation area IUCN cat 1a')
Sources & further reading
Tenure and SDGs Land Portal
https://landportal.org/book/sdgs
Data on indigenous and community lands
http://www.landmarkmap.org/
Data on protected areas
https://www.protectedplanet.net/en
Tenure and environmental protection
http://www.fao.org/americas/publicaciones-audio-video/forest-gov-by-indigenous/en/
Remote sensing of deforestation
https://glad.earthengine.app/view/global-forest-change
Remote sensing of tenure, agricultural production and degradation
http://researchspace.csir.co.za/dspace/bitstream/handle/10204/1563/wessels_2004.pdf?sequence=3
Remote sensing to ensure land tenure security
https://its4land.com/
https://www.mdpi.com/journal/remotesensing/special_issues/Land_Administration