-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgee.js
120 lines (93 loc) · 3.44 KB
/
gee.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// Colors, code from JRC TMF website
function rgb(r,g,b){
var bin = r << 16 | g << 8 | b;
return (function(h){
return new Array(7-h.length).join("0")+h;
})(bin.toString(16).toUpperCase());
}
var PALETTEAnnualChanges = [
rgb(0,90,0), // val 1. Undisturbed Tropical moist forest (TMF)
rgb(100,155,35), // val 2. Degraded TMF
rgb(255,135,15), // val 3. Deforested land
rgb(210,250,60), // val 4. Forest regrowth
rgb(0,140,190), // val 5. Permanent or seasonal Water
rgb(255,255,255), // val 6. Other land cover
];
var jrc_params = {
min : 1,
max : 6,
palette: PALETTEAnnualChanges
}
function luc_counts(img) {
var reducer_args = {
reducer: ee.Reducer.count(),
scale: 30,
maxPixels: 1e13
}
var undisturbed = img.updateMask(img.eq(1)).reduceRegion(reducer_args);
var uf = ee.Feature(null, undisturbed).set("LUC", "1");
var undisturbed_f = ee.FeatureCollection([ uf ]);
var degraded = img.updateMask(img.eq(2)).reduceRegion(reducer_args);
var degf = ee.Feature(null, degraded).set("LUC", "2");
var degraded_f = ee.FeatureCollection([ degf ]);
var deforested = img.updateMask(img.eq(3)).reduceRegion(reducer_args);
var deff = ee.Feature(null, deforested).set("LUC", "3");
var deforested_f = ee.FeatureCollection([ deff ]);
var regrowth = img.updateMask(img.eq(4)).reduceRegion(reducer_args);
var regf = ee.Feature(null, regrowth).set("LUC", "4");
var regrowth_f = ee.FeatureCollection([ regf ]);
var water = img.updateMask(img.eq(5)).reduceRegion(reducer_args);
var watf = ee.Feature(null, water).set("LUC", "5");
var water_f = ee.FeatureCollection([ watf ]);
var other = img.updateMask(img.eq(6)).reduceRegion(reducer_args);
var othf = ee.Feature(null, other).set("LUC", "6");
var other_f = ee.FeatureCollection([ othf ]);
return undisturbed_f.merge(degraded_f.merge(deforested_f.merge(regrowth_f.merge(water_f.merge(other_f)))));
}
function analyse_year(year, area) {
// JRC for region and year of interest
var jrc_asia = ee.Image.load("projects/JRC/TMF/v1_" + year + "/AnnualChanges/" + area.jrc_region);
// Clip to AOI
var jrc_clipped = jrc_asia.clip(area.aoi);
return {
clipped: jrc_clipped,
lucs: luc_counts(jrc_clipped)
};
}
function analyse(areas, years, export_data, plot_data) {
for (var c = 0; c < areas.length; c++) {
var area = areas[c];
// LUCs
for (var i = 0; i < years.length; i++) {
var year = years[i];
var values = analyse_year(year, area);
var lucs = values.lucs;
var clipped = values.clipped;
if (export_data) {
Export.table.toDrive({
collection: lucs,
folder: "jrc_historic_analysis",
description: ("jrc_counts_" + year + "_" + area.name),
fileNamePrefix: ("jrc_counts_" + year + "_" + area.name)
});
}
if (plot_data) {
Map.addLayer(clipped.select("Dec2008"), jrc_params, ("jrc_" + year + "_" + area.name))
}
}
}
}
var indonesia = {
name: "Indonesia",
aoi: countries.filter(ee.Filter.equals("ADM0_NAME", "Indonesia")),
jrc_region: "1ASIA"
}
var malaysia = {
name: "Malaysia",
aoi: countries.filter(ee.Filter.equals("ADM0_NAME", "Malaysia")),
jrc_region: "1ASIA"
}
var areas = [ indonesia ]
print("Indonesia area:", indonesia.aoi.first().geometry().area(), "msq");
Map.setCenter(103.28, -0.3, 10);
analyse(areas, [2021, 2022], false, true);