openforis-whisp 0.1.0a7__py3-none-any.whl → 1.0.0a1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openforis_whisp/datasets.py +134 -4
- openforis_whisp/parameters/lookup_gee_datasets.csv +172 -155
- openforis_whisp/risk.py +316 -21
- {openforis_whisp-0.1.0a7.dist-info → openforis_whisp-1.0.0a1.dist-info}/METADATA +51 -7
- {openforis_whisp-0.1.0a7.dist-info → openforis_whisp-1.0.0a1.dist-info}/RECORD +7 -7
- {openforis_whisp-0.1.0a7.dist-info → openforis_whisp-1.0.0a1.dist-info}/LICENSE +0 -0
- {openforis_whisp-0.1.0a7.dist-info → openforis_whisp-1.0.0a1.dist-info}/WHEEL +0 -0
openforis_whisp/datasets.py
CHANGED
|
@@ -100,9 +100,53 @@ def fdap_forest_prep():
|
|
|
100
100
|
fdap_forest = fdap_forest_raw.gt(0.75)
|
|
101
101
|
return fdap_forest.rename("Forest_FDaP")
|
|
102
102
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
#########################primary forest
|
|
104
|
+
# EUFO JRC Global forest type - primary
|
|
105
|
+
def gft_primary_prep():
|
|
106
|
+
gft_raw = ee.ImageCollection("JRC/GFC2020_subtypes/V0").mosaic()
|
|
107
|
+
gft_primary = gft_raw.eq(10)
|
|
108
|
+
return gft_primary.rename("GFT_primary")
|
|
109
|
+
|
|
110
|
+
# Intact Forest Landscape 2020
|
|
111
|
+
def IFL_2020_prep():
|
|
112
|
+
IFL_2020 = ee.Image('users/potapovpeter/IFL_2020')
|
|
113
|
+
return IFL_2020.rename("IFL_2020")
|
|
114
|
+
|
|
115
|
+
# European Primary Forest Dataset
|
|
116
|
+
def EPFD_prep():
|
|
117
|
+
EPFD=ee.FeatureCollection("HU_BERLIN/EPFD/V2/polygons")
|
|
118
|
+
EPFD_binary = ee.Image().paint(EPFD,1)
|
|
119
|
+
return EPFD_binary.rename('European_Primary_Forest')
|
|
120
|
+
|
|
121
|
+
# EUFO JRC Global forest type - naturally regenerating planted/plantation forests
|
|
122
|
+
def gft_nat_reg_prep():
|
|
123
|
+
gft_raw = ee.ImageCollection("JRC/GFC2020_subtypes/V0").mosaic()
|
|
124
|
+
gft_nat_reg = gft_raw.eq(1)
|
|
125
|
+
return gft_nat_reg.rename("GFT_naturally_regenerating")
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
#########################planted and plantation forests
|
|
129
|
+
|
|
130
|
+
# EUFO JRC Global forest type - planted/plantation forests
|
|
131
|
+
def gft_plantation_prep():
|
|
132
|
+
gft_raw = ee.ImageCollection("JRC/GFC2020_subtypes/V0").mosaic()
|
|
133
|
+
gft_plantation = gft_raw.eq(20)
|
|
134
|
+
return gft_plantation.rename("GFT_planted_plantation")
|
|
135
|
+
|
|
136
|
+
def IIASA_planted_prep():
|
|
137
|
+
iiasa = ee.Image('projects/sat-io/open-datasets/GFM/FML_v3-2');
|
|
138
|
+
iiasa_PL = iiasa.eq(31).Or(iiasa.eq(32))
|
|
139
|
+
return iiasa_PL.rename('IIASA_planted_plantation')
|
|
140
|
+
|
|
141
|
+
#########################TMF regrowth in 2023
|
|
142
|
+
def tmf_regrowth_prep():
|
|
143
|
+
# Load the TMF Degradation annual product
|
|
144
|
+
TMF_AC=ee.ImageCollection('projects/JRC/TMF/v1_2023/AnnualChanges').mosaic()
|
|
145
|
+
TMF_AC_2023=TMF_AC.select('Dec2023')
|
|
146
|
+
Regrowth_TMF = TMF_AC_2023.eq(4)
|
|
147
|
+
return Regrowth_TMF.rename('TMF_regrowth_2023')
|
|
148
|
+
|
|
149
|
+
############tree crops
|
|
106
150
|
|
|
107
151
|
# TMF_plant (plantations in 2020)
|
|
108
152
|
def jrc_tmf_plantation_prep():
|
|
@@ -165,6 +209,17 @@ def fdap_palm_prep():
|
|
|
165
209
|
)
|
|
166
210
|
return fdap_palm.rename("Oil_palm_FDaP")
|
|
167
211
|
|
|
212
|
+
def fdap_palm_2023_prep():
|
|
213
|
+
fdap_palm2020_model_raw = ee.ImageCollection("projects/forestdatapartnership/assets/palm/model_2024a")
|
|
214
|
+
fdap_palm = (
|
|
215
|
+
fdap_palm2020_model_raw
|
|
216
|
+
.filterDate('2023-01-01', '2023-12-31')
|
|
217
|
+
.mosaic()
|
|
218
|
+
.gt(0.83) # Threshold for Oil Palm
|
|
219
|
+
|
|
220
|
+
)
|
|
221
|
+
return fdap_palm.rename("Oil_palm_2023_FDaP")
|
|
222
|
+
|
|
168
223
|
|
|
169
224
|
# Rubber FDaP
|
|
170
225
|
def fdap_rubber_prep():
|
|
@@ -178,6 +233,16 @@ def fdap_rubber_prep():
|
|
|
178
233
|
)
|
|
179
234
|
return fdap_rubber.rename("Rubber_FDaP")
|
|
180
235
|
|
|
236
|
+
def fdap_rubber_2023_prep():
|
|
237
|
+
fdap_rubber2020_model_raw = ee.ImageCollection("projects/forestdatapartnership/assets/rubber/model_2024a")
|
|
238
|
+
fdap_rubber = (
|
|
239
|
+
fdap_rubber2020_model_raw
|
|
240
|
+
.filterDate('2023-01-01', '2023-12-31')
|
|
241
|
+
.mosaic()
|
|
242
|
+
.gt(0.93) # Threshold for Rubber
|
|
243
|
+
|
|
244
|
+
)
|
|
245
|
+
return fdap_rubber.rename("Rubber_2023_FDaP")
|
|
181
246
|
|
|
182
247
|
# Cocoa FDaP
|
|
183
248
|
def fdap_cocoa_prep():
|
|
@@ -191,6 +256,16 @@ def fdap_cocoa_prep():
|
|
|
191
256
|
)
|
|
192
257
|
return fdap_cocoa.rename("Cocoa_FDaP")
|
|
193
258
|
|
|
259
|
+
def fdap_cocoa_2023_prep():
|
|
260
|
+
fdap_cocoa2020_model_raw = ee.ImageCollection("projects/forestdatapartnership/assets/cocoa/model_2024a")
|
|
261
|
+
fdap_cocoa = (
|
|
262
|
+
fdap_cocoa2020_model_raw
|
|
263
|
+
.filterDate('2023-01-01', '2023-12-31')
|
|
264
|
+
.mosaic()
|
|
265
|
+
.gt(0.5) # Threshold for Cocoa
|
|
266
|
+
|
|
267
|
+
)
|
|
268
|
+
return fdap_cocoa.rename("Cocoa_2023_FDaP")
|
|
194
269
|
|
|
195
270
|
# Cocoa_bnetd
|
|
196
271
|
def civ_ocs2020_prep():
|
|
@@ -212,7 +287,41 @@ def rbge_rubber_prep():
|
|
|
212
287
|
.rename("Rubber_RBGE")
|
|
213
288
|
)
|
|
214
289
|
|
|
215
|
-
|
|
290
|
+
################## seasonal crops
|
|
291
|
+
|
|
292
|
+
#soy 2020 Brazil
|
|
293
|
+
def soy_song_2020_prep():
|
|
294
|
+
return ee.Image('projects/glad/soy_annual_SA/2020').unmask().rename("Soy_Song_2020")
|
|
295
|
+
##############2023
|
|
296
|
+
# ESRI 2023
|
|
297
|
+
# ESRI 2023 - Tree Cover
|
|
298
|
+
def esri_2023_TC_prep():
|
|
299
|
+
esri_lulc10_raw = ee.ImageCollection("projects/sat-io/open-datasets/landcover/ESRI_Global-LULC_10m_TS")
|
|
300
|
+
esri_lulc10_TC = esri_lulc10_raw.filterDate('2023-01-01', '2023-12-31').mosaic().eq(2)
|
|
301
|
+
return esri_lulc10_TC.rename('ESRI_2023_TC')
|
|
302
|
+
|
|
303
|
+
# ESRI 2023 - Crop
|
|
304
|
+
def esri_2023_crop_prep():
|
|
305
|
+
esri_lulc10_raw = ee.ImageCollection("projects/sat-io/open-datasets/landcover/ESRI_Global-LULC_10m_TS")
|
|
306
|
+
esri_lulc10_crop = esri_lulc10_raw.filterDate('2023-01-01', '2023-12-31').mosaic().eq(5)
|
|
307
|
+
return esri_lulc10_crop.rename('ESRI_2023_crop')
|
|
308
|
+
|
|
309
|
+
# GLC_FCS30D 2022
|
|
310
|
+
|
|
311
|
+
# GLC_FCS30D Tree Cover
|
|
312
|
+
# forest classes + swamp + mangrove / what to do with shrubland?
|
|
313
|
+
def GLC_FCS30D_TC_2022_prep():
|
|
314
|
+
GLC_FCS30D = ee.ImageCollection("projects/sat-io/open-datasets/GLC-FCS30D/annual").mosaic().select(22)
|
|
315
|
+
GLC_FCS30D_TC = (GLC_FCS30D.gte(51)).And(GLC_FCS30D.lte(92)).Or(GLC_FCS30D.eq(181)).Or(GLC_FCS30D.eq(185))
|
|
316
|
+
return GLC_FCS30D_TC.rename('GLC_FCS30D_TC_2022')
|
|
317
|
+
|
|
318
|
+
# GLC_FCS30D crop
|
|
319
|
+
# 10 Rainfed cropland; 11 Herbaceous cover; 12 Tree or shrub cover (Orchard); 20 Irrigated cropland
|
|
320
|
+
def GLC_FCS30D_crop_2022_prep():
|
|
321
|
+
GLC_FCS30D = ee.ImageCollection("projects/sat-io/open-datasets/GLC-FCS30D/annual").mosaic().select(22)
|
|
322
|
+
GLC_FCS30D_crop = GLC_FCS30D.gte(10).And(GLC_FCS30D.lte(20))
|
|
323
|
+
return GLC_FCS30D_crop.rename('GLC_FCS30D_crop_2022')
|
|
324
|
+
|
|
216
325
|
#### disturbances by year
|
|
217
326
|
|
|
218
327
|
# RADD_year_2019 to RADD_year_< current year >
|
|
@@ -605,6 +714,27 @@ def esa_fire_before_2020_prep():
|
|
|
605
714
|
.rename("ESA_fire_before_2020")
|
|
606
715
|
)
|
|
607
716
|
|
|
717
|
+
#########################logging concessions
|
|
718
|
+
#http://data.globalforestwatch.org/datasets?q=logging&sort_by=relevance
|
|
719
|
+
def logging_concessions_prep():
|
|
720
|
+
RCA=ee.FeatureCollection('projects/ee-whisp/assets/logging/RCA_Permis_dExploitation_et_dAmenagement')
|
|
721
|
+
RCA_binary = ee.Image().paint(RCA,1)
|
|
722
|
+
CMR=ee.FeatureCollection('projects/ee-whisp/assets/logging/Cameroon_Forest_Management_Units')
|
|
723
|
+
CMR_binary = ee.Image().paint(CMR,1)
|
|
724
|
+
Eq_G=ee.FeatureCollection('projects/ee-whisp/assets/logging/Equatorial_Guinea_logging_concessions')
|
|
725
|
+
Eq_G_binary = ee.Image().paint(Eq_G,1)
|
|
726
|
+
DRC=ee.FeatureCollection('projects/ee-whisp/assets/logging/DRC_Forest_concession_agreements')
|
|
727
|
+
DRC_binary = ee.Image().paint(DRC,1)
|
|
728
|
+
Liberia=ee.FeatureCollection('projects/ee-whisp/assets/logging/Liberia_Forest_Management_Contracts')
|
|
729
|
+
Liberia_binary = ee.Image().paint(Liberia,1)
|
|
730
|
+
RoC=ee.FeatureCollection('projects/ee-whisp/assets/logging/Republic_of_the_Congo_logging_concessions')
|
|
731
|
+
Roc_binary = ee.Image().paint(RoC,1)
|
|
732
|
+
Sarawak=ee.FeatureCollection('projects/ee-whisp/assets/logging/Sarawak_logging_concessions')
|
|
733
|
+
Sarawak_binary = ee.Image().paint(Sarawak,1)
|
|
734
|
+
logging_concessions_binary=ee.ImageCollection([RCA_binary, CMR_binary, Eq_G_binary,DRC_binary,Liberia_binary,Roc_binary,Sarawak_binary]).mosaic()
|
|
735
|
+
|
|
736
|
+
return logging_concessions_binary.rename('GFW_logging')
|
|
737
|
+
|
|
608
738
|
|
|
609
739
|
# ###Combining datasets
|
|
610
740
|
|
|
@@ -1,155 +1,172 @@
|
|
|
1
|
-
name,order,theme,use_for_risk,exclude_from_output,col_type,is_nullable,is_required,corresponding_variable
|
|
2
|
-
EUFO_2020,10,treecover,1,0,float32,1,0,jrc_gfc_2020_prep
|
|
3
|
-
GLAD_Primary,20,treecover,1,0,float32,1,0,glad_pht_prep
|
|
4
|
-
TMF_undist,30,treecover,1,0,float32,1,0,jrc_tmf_undisturbed_prep
|
|
5
|
-
JAXA_FNF_2020,40,treecover
|
|
6
|
-
GFC_TC_2020,50,treecover,1,0,float32,1,0,glad_gfc_10pc_prep
|
|
7
|
-
Forest_FDaP,60,treecover,1,0,float32,1,0,glad_gfc_10pc_prep
|
|
8
|
-
ESA_TC_2020,70,treecover,1,0,float32,1,0,esa_worldcover_trees_prep
|
|
9
|
-
TMF_plant,80,commodities,1,0,float32,1,0,jrc_tmf_plantation_prep
|
|
10
|
-
Oil_palm_Descals,90,commodities,1,0,float32,1,0,creaf_descals_palm_prep
|
|
11
|
-
Oil_palm_FDaP,100,commodities,1,0,float32,1,0,fdap_palm_prep
|
|
12
|
-
Cocoa_FDaP,110,commodities,1,0,float32,1,0,fdap_cocoa
|
|
13
|
-
Cocoa_ETH,120,commodities,1,0,float32,1,0,eth_kalischek_cocoa_prep
|
|
14
|
-
Cocoa_bnetd,130,commodities,1,0,float32,1,0,civ_ocs2020_prep
|
|
15
|
-
Rubber_FDaP,140,commodities,1,0,float32,1,0,fdap_rubber_prep
|
|
16
|
-
Rubber_RBGE,150,commodities,1,0,float32,1,0,rbge_rubber_prep
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
1
|
+
name,order,theme,theme_timber,use_for_risk,use_for_risk_timber,exclude_from_output,col_type,is_nullable,is_required,corresponding_variable
|
|
2
|
+
EUFO_2020,10,treecover,naturally_reg_2020,1,1,0,float32,1,0,jrc_gfc_2020_prep
|
|
3
|
+
GLAD_Primary,20,treecover,primary,1,1,0,float32,1,0,glad_pht_prep
|
|
4
|
+
TMF_undist,30,treecover,primary,1,1,0,float32,1,0,jrc_tmf_undisturbed_prep
|
|
5
|
+
JAXA_FNF_2020,40,treecover,,1,0,0,float32,1,0,jaxa_forest_prep
|
|
6
|
+
GFC_TC_2020,50,treecover,naturally_reg_2020,1,1,0,float32,1,0,glad_gfc_10pc_prep
|
|
7
|
+
Forest_FDaP,60,treecover,naturally_reg_2020,1,1,0,float32,1,0,glad_gfc_10pc_prep
|
|
8
|
+
ESA_TC_2020,70,treecover,naturally_reg_2020,1,1,0,float32,1,0,esa_worldcover_trees_prep
|
|
9
|
+
TMF_plant,80,commodities,,1,1,0,float32,1,0,jrc_tmf_plantation_prep
|
|
10
|
+
Oil_palm_Descals,90,commodities,,1,1,0,float32,1,0,creaf_descals_palm_prep
|
|
11
|
+
Oil_palm_FDaP,100,commodities,,1,1,0,float32,1,0,fdap_palm_prep
|
|
12
|
+
Cocoa_FDaP,110,commodities,,1,1,0,float32,1,0,fdap_cocoa
|
|
13
|
+
Cocoa_ETH,120,commodities,,1,1,0,float32,1,0,eth_kalischek_cocoa_prep
|
|
14
|
+
Cocoa_bnetd,130,commodities,,1,1,0,float32,1,0,civ_ocs2020_prep
|
|
15
|
+
Rubber_FDaP,140,commodities,,1,1,0,float32,1,0,fdap_rubber_prep
|
|
16
|
+
Rubber_RBGE,150,commodities,,1,1,0,float32,1,0,rbge_rubber_prep
|
|
17
|
+
Soy_Song_2020,155,commodities,,1,1,0,float32,1,0,soy_song_2020_prep
|
|
18
|
+
WDPA,160,ancilliary,,0,0,1,bool,1,0,wcmc_wdpa_protection_prep
|
|
19
|
+
KBA,170,ancilliary,,0,0,1,bool,1,0,birdlife_kbas_biodiversity_prep
|
|
20
|
+
TMF_def_2000,180,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
21
|
+
TMF_def_2001,190,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
22
|
+
TMF_def_2002,200,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
23
|
+
TMF_def_2003,210,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
24
|
+
TMF_def_2004,220,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
25
|
+
TMF_def_2005,230,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
26
|
+
TMF_def_2006,240,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
27
|
+
TMF_def_2007,250,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
28
|
+
TMF_def_2008,260,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
29
|
+
TMF_def_2009,270,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
30
|
+
TMF_def_2010,280,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
31
|
+
TMF_def_2011,290,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
32
|
+
TMF_def_2012,300,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
33
|
+
TMF_def_2013,310,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
34
|
+
TMF_def_2014,320,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
35
|
+
TMF_def_2015,330,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
36
|
+
TMF_def_2016,340,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
37
|
+
TMF_def_2017,350,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
38
|
+
TMF_def_2018,360,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
39
|
+
TMF_def_2019,370,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
40
|
+
TMF_def_2020,380,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
41
|
+
TMF_def_2021,390,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
42
|
+
TMF_def_2022,400,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
43
|
+
TMF_def_2023,410,disturbance_before,,0,0,0,float32,1,0,tmf_def_per_year_prep
|
|
44
|
+
TMF_deg_2000,420,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
45
|
+
TMF_deg_2001,430,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
46
|
+
TMF_deg_2002,440,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
47
|
+
TMF_deg_2003,450,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
48
|
+
TMF_deg_2004,460,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
49
|
+
TMF_deg_2005,470,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
50
|
+
TMF_deg_2006,480,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
51
|
+
TMF_deg_2007,490,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
52
|
+
TMF_deg_2008,500,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
53
|
+
TMF_deg_2009,510,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
54
|
+
TMF_deg_2010,520,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
55
|
+
TMF_deg_2011,530,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
56
|
+
TMF_deg_2012,540,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
57
|
+
TMF_deg_2013,550,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
58
|
+
TMF_deg_2014,560,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
59
|
+
TMF_deg_2015,570,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
60
|
+
TMF_deg_2016,580,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
61
|
+
TMF_deg_2017,590,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
62
|
+
TMF_deg_2018,600,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
63
|
+
TMF_deg_2019,610,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
64
|
+
TMF_deg_2020,620,disturbance_before,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
65
|
+
TMF_deg_2021,630,disturbance_after,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
66
|
+
TMF_deg_2022,640,disturbance_after,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
67
|
+
TMF_deg_2023,650,disturbance_after,,0,0,0,float32,1,0,tmf_deg_per_year_prep
|
|
68
|
+
GFC_loss_year_2001,660,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
69
|
+
GFC_loss_year_2002,670,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
70
|
+
GFC_loss_year_2003,680,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
71
|
+
GFC_loss_year_2004,690,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
72
|
+
GFC_loss_year_2005,700,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
73
|
+
GFC_loss_year_2006,710,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
74
|
+
GFC_loss_year_2007,720,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
75
|
+
GFC_loss_year_2008,730,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
76
|
+
GFC_loss_year_2009,740,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
77
|
+
GFC_loss_year_2010,750,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
78
|
+
GFC_loss_year_2011,760,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
79
|
+
GFC_loss_year_2012,770,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
80
|
+
GFC_loss_year_2013,780,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
81
|
+
GFC_loss_year_2014,790,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
82
|
+
GFC_loss_year_2015,800,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
83
|
+
GFC_loss_year_2016,810,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
84
|
+
GFC_loss_year_2017,820,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
85
|
+
GFC_loss_year_2018,830,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
86
|
+
GFC_loss_year_2019,840,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
87
|
+
GFC_loss_year_2020,850,disturbance_before,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
88
|
+
GFC_loss_year_2021,860,disturbance_after,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
89
|
+
GFC_loss_year_2022,870,disturbance_after,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
90
|
+
GFC_loss_year_2023,880,disturbance_after,,0,0,0,float32,1,0,glad_gfc_loss_per_year_prep
|
|
91
|
+
RADD_year_2019,890,disturbance_before,,0,0,0,float32,1,0,radd_year_prep
|
|
92
|
+
RADD_year_2020,900,disturbance_before,,0,0,0,float32,1,0,radd_year_prep
|
|
93
|
+
RADD_year_2021,910,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
|
|
94
|
+
RADD_year_2022,920,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
|
|
95
|
+
RADD_year_2023,930,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
|
|
96
|
+
RADD_year_2024,940,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
|
|
97
|
+
RADD_year_2025,941,disturbance_after,,0,0,0,float32,1,0,radd_year_prep
|
|
98
|
+
DIST_year_2024,945,disturbance_after,,0,0,1,float32,1,0,glad_dist_year_prep
|
|
99
|
+
DIST_year_2025,946,disturbance_after,,0,0,1,float32,1,0,glad_dist_year_prep
|
|
100
|
+
ESA_fire_2001,950,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
101
|
+
ESA_fire_2002,960,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
102
|
+
ESA_fire_2003,970,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
103
|
+
ESA_fire_2004,980,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
104
|
+
ESA_fire_2005,990,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
105
|
+
ESA_fire_2006,1000,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
106
|
+
ESA_fire_2007,1010,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
107
|
+
ESA_fire_2008,1020,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
108
|
+
ESA_fire_2009,1030,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
109
|
+
ESA_fire_2010,1040,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
110
|
+
ESA_fire_2011,1050,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
111
|
+
ESA_fire_2012,1060,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
112
|
+
ESA_fire_2013,1070,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
113
|
+
ESA_fire_2014,1080,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
114
|
+
ESA_fire_2015,1090,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
115
|
+
ESA_fire_2016,1100,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
116
|
+
ESA_fire_2017,1110,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
117
|
+
ESA_fire_2018,1120,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
118
|
+
ESA_fire_2019,1130,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
119
|
+
ESA_fire_2020,1140,disturbance_before,,0,0,0,float32,1,0,esa_fire_prep
|
|
120
|
+
MODIS_fire_2000,1150,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
121
|
+
MODIS_fire_2001,1160,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
122
|
+
MODIS_fire_2002,1170,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
123
|
+
MODIS_fire_2003,1180,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
124
|
+
MODIS_fire_2004,1190,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
125
|
+
MODIS_fire_2005,1200,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
126
|
+
MODIS_fire_2006,1210,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
127
|
+
MODIS_fire_2007,1220,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
128
|
+
MODIS_fire_2008,1230,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
129
|
+
MODIS_fire_2009,1240,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
130
|
+
MODIS_fire_2010,1250,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
131
|
+
MODIS_fire_2011,1260,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
132
|
+
MODIS_fire_2012,1270,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
133
|
+
MODIS_fire_2013,1280,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
134
|
+
MODIS_fire_2014,1290,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
135
|
+
MODIS_fire_2015,1300,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
136
|
+
MODIS_fire_2016,1310,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
137
|
+
MODIS_fire_2017,1320,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
138
|
+
MODIS_fire_2018,1330,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
139
|
+
MODIS_fire_2019,1340,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
140
|
+
MODIS_fire_2020,1350,disturbance_before,,0,0,0,float32,1,0,modis_fire_prep
|
|
141
|
+
MODIS_fire_2021,1360,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
|
|
142
|
+
MODIS_fire_2022,1370,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
|
|
143
|
+
MODIS_fire_2023,1380,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
|
|
144
|
+
MODIS_fire_2024,1390,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
|
|
145
|
+
MODIS_fire_2025,1391,disturbance_after,,0,0,0,float32,1,0,modis_fire_prep
|
|
146
|
+
TMF_deg_before_2020,1400,disturbance_before,,1,1,0,float32,1,0,tmf_deg_before_2020_prep
|
|
147
|
+
TMF_def_before_2020,1410,disturbance_before,,1,1,0,float32,1,0,tmf_def_before_2020_prep
|
|
148
|
+
GFC_loss_before_2020,1420,disturbance_before,,1,1,0,float32,1,0,glad_gfc_loss_before_2020_prep
|
|
149
|
+
ESA_fire_before_2020,1430,disturbance_before,,1,1,0,float32,1,0,esa_fire_before_2020_prep
|
|
150
|
+
MODIS_fire_before_2020,1440,disturbance_before,,1,1,0,float32,1,0,modis_fire_before_2020_prep
|
|
151
|
+
RADD_before_2020,1450,disturbance_before,,1,1,0,float32,1,0,radd_before_2020_prep
|
|
152
|
+
TMF_deg_after_2020,1460,disturbance_after,,1,1,0,float32,1,0,tmf_deg_after_2020_prep
|
|
153
|
+
TMF_def_after_2020,1470,disturbance_after,,1,1,0,float32,1,0,tmf_def_after_2020_prep
|
|
154
|
+
GFC_loss_after_2020,1480,disturbance_after,,1,1,0,float32,1,0,glad_gfc_loss_after_2020_prep
|
|
155
|
+
MODIS_fire_after_2020,1490,disturbance_after,,1,1,0,float32,1,0,modis_fire_after_2020_prep
|
|
156
|
+
RADD_after_2020,1500,disturbance_after,,1,1,0,float32,1,0,RADD_after_2020_prep
|
|
157
|
+
DIST_after_2020,1600,disturbance_after,,1,1,0,float32,1,0,glad_dist_after_2020_prep
|
|
158
|
+
GFT_primary,1700,,primary,,1,0,float32,1,0,gft_primary_prep
|
|
159
|
+
IFL_2020,1710,,primary,,1,0,float32,1,0,IFL_2020_prep
|
|
160
|
+
European_Primary_Forest,1720,,primary,,1,0,float32,1,0,EPFD_prep
|
|
161
|
+
GFT_naturally_regenerating,1800,,naturally_reg_2020,,1,0,float32,1,0,gft_nat_reg_prep
|
|
162
|
+
GFT_planted_plantation,1900,,planted_plantation_2020,,1,0,float32,1,0,gft_plantation_prep
|
|
163
|
+
IIASA_planted_plantation,1910,,planted_plantation_2020,,1,0,float32,1,0,IIASA_planted_prep
|
|
164
|
+
TMF_regrowth_2023,2000,,treecover_post2020,,1,0,float32,1,0,tmf_regrowth_prep
|
|
165
|
+
ESRI_2023_TC,2010,,treecover_post2020,,1,0,float32,1,0,esri_2023_TC_prep
|
|
166
|
+
GLC_FCS30D_TC_2022,2020,,treecover_post2020,,1,0,float32,1,0,GLC_FCS30D_TC_2022_prep
|
|
167
|
+
Oil_palm_2023_FDaP,2100,,agri_post_2020,,1,0,float32,1,0,fdap_palm_2023_prep
|
|
168
|
+
Rubber_2023_FDaP,2110,,agri_post_2020,,1,0,float32,1,0,fdap_rubber_2023_prep
|
|
169
|
+
Cocoa_2023_FDaP,2120,,agri_post_2020,,1,0,float32,1,0,fdap_cocoa_2023_prep
|
|
170
|
+
ESRI_2023_crop,2130,,agri_post_2020,,1,0,float32,1,0,esri_2023_crop_prep
|
|
171
|
+
GLC_FCS30D_crop_2022,2140,,agri_post_2020,,1,0,float32,1,0,GLC_FCS30D_crop_2022_prep
|
|
172
|
+
GFW_logging,2200,,logging_concession,,1,0,float32,1,0,logging_concessions_prep
|
openforis_whisp/risk.py
CHANGED
|
@@ -23,14 +23,35 @@ def whisp_risk(
|
|
|
23
23
|
ind_2_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
24
24
|
ind_3_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
25
25
|
ind_4_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
26
|
+
ind_5_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
27
|
+
ind_6_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
28
|
+
ind_7_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
29
|
+
ind_8_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
30
|
+
ind_9_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
31
|
+
ind_10_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
32
|
+
ind_11_pcent_threshold: float = 10, # default values (draft decision tree and parameters)
|
|
26
33
|
ind_1_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
27
34
|
ind_2_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
28
35
|
ind_3_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
29
36
|
ind_4_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
ind_5_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
38
|
+
ind_6_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
39
|
+
ind_7_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
40
|
+
ind_8_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
41
|
+
ind_9_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
42
|
+
ind_10_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
43
|
+
ind_11_input_columns: pd.Series = None, # see lookup_gee_datasets for details
|
|
44
|
+
ind_1_name: str = "Ind_01_treecover",
|
|
45
|
+
ind_2_name: str = "Ind_02_commodities",
|
|
46
|
+
ind_3_name: str = "Ind_03_disturbance_before_2020",
|
|
47
|
+
ind_4_name: str = "Ind_04_disturbance_after_2020",
|
|
48
|
+
ind_5_name: str = "Ind_05_primary_2020",
|
|
49
|
+
ind_6_name: str ="Ind_06_nat_reg_forest_2020",
|
|
50
|
+
ind_7_name: str ="Ind_07_planted_plantations_2020",
|
|
51
|
+
ind_8_name: str ="Ind_08_planted_plantations_post_2020",
|
|
52
|
+
ind_9_name: str ="Ind_09_treecover_post_2020",
|
|
53
|
+
ind_10_name: str ="Ind_10_agri_post_2020",
|
|
54
|
+
ind_11_name: str ="Ind_11_logging_concession",
|
|
34
55
|
low_name: str = "no",
|
|
35
56
|
high_name: str = "yes",
|
|
36
57
|
) -> data_lookup_type:
|
|
@@ -59,33 +80,69 @@ def whisp_risk(
|
|
|
59
80
|
"""
|
|
60
81
|
|
|
61
82
|
if ind_1_input_columns is None:
|
|
62
|
-
ind_1_input_columns =
|
|
83
|
+
ind_1_input_columns = get_cols_ind_01_treecover(lookup_gee_datasets_df)
|
|
63
84
|
if ind_2_input_columns is None:
|
|
64
|
-
ind_2_input_columns =
|
|
85
|
+
ind_2_input_columns = get_cols_ind_02_commodities(lookup_gee_datasets_df)
|
|
65
86
|
if ind_3_input_columns is None:
|
|
66
|
-
ind_3_input_columns =
|
|
87
|
+
ind_3_input_columns = get_cols_ind_03_dist_before_2020(lookup_gee_datasets_df)
|
|
67
88
|
if ind_4_input_columns is None:
|
|
68
|
-
ind_4_input_columns =
|
|
89
|
+
ind_4_input_columns = get_cols_ind_04_dist_after_2020(lookup_gee_datasets_df)
|
|
90
|
+
if ind_5_input_columns is None:
|
|
91
|
+
ind_5_input_columns = get_cols_ind_05_primary_2020(lookup_gee_datasets_df)
|
|
92
|
+
if ind_6_input_columns is None:
|
|
93
|
+
ind_6_input_columns = get_cols_ind_06_nat_reg_2020(lookup_gee_datasets_df)
|
|
94
|
+
if ind_7_input_columns is None:
|
|
95
|
+
ind_7_input_columns = get_cols_ind_07_planted_2020(lookup_gee_datasets_df)
|
|
96
|
+
if ind_8_input_columns is None:
|
|
97
|
+
ind_8_input_columns = get_cols_ind_08_planted_post_2020(lookup_gee_datasets_df)
|
|
98
|
+
if ind_9_input_columns is None:
|
|
99
|
+
ind_9_input_columns = get_cols_ind_09_treecover_post_2020(lookup_gee_datasets_df)
|
|
100
|
+
if ind_10_input_columns is None:
|
|
101
|
+
ind_10_input_columns = get_cols_ind_10_agri_post_2020(lookup_gee_datasets_df)
|
|
102
|
+
if ind_11_input_columns is None:
|
|
103
|
+
ind_11_input_columns = get_cols_ind_11_logging(lookup_gee_datasets_df)
|
|
104
|
+
|
|
69
105
|
|
|
70
106
|
# Check range of values
|
|
71
107
|
check_range(ind_1_pcent_threshold)
|
|
72
108
|
check_range(ind_2_pcent_threshold)
|
|
73
109
|
check_range(ind_3_pcent_threshold)
|
|
74
110
|
check_range(ind_4_pcent_threshold)
|
|
75
|
-
|
|
111
|
+
check_range(ind_5_pcent_threshold)
|
|
112
|
+
check_range(ind_6_pcent_threshold)
|
|
113
|
+
check_range(ind_7_pcent_threshold)
|
|
114
|
+
check_range(ind_8_pcent_threshold)
|
|
115
|
+
check_range(ind_9_pcent_threshold)
|
|
116
|
+
check_range(ind_10_pcent_threshold)
|
|
117
|
+
check_range(ind_11_pcent_threshold)
|
|
118
|
+
|
|
76
119
|
input_cols = [
|
|
77
120
|
ind_1_input_columns,
|
|
78
121
|
ind_2_input_columns,
|
|
79
122
|
ind_3_input_columns,
|
|
80
123
|
ind_4_input_columns,
|
|
124
|
+
ind_5_input_columns,
|
|
125
|
+
ind_6_input_columns,
|
|
126
|
+
ind_7_input_columns,
|
|
127
|
+
ind_8_input_columns,
|
|
128
|
+
ind_9_input_columns,
|
|
129
|
+
ind_10_input_columns,
|
|
130
|
+
ind_11_input_columns,
|
|
81
131
|
]
|
|
82
132
|
thresholds = [
|
|
83
133
|
ind_1_pcent_threshold,
|
|
84
134
|
ind_2_pcent_threshold,
|
|
85
135
|
ind_3_pcent_threshold,
|
|
86
136
|
ind_4_pcent_threshold,
|
|
137
|
+
ind_5_pcent_threshold,
|
|
138
|
+
ind_6_pcent_threshold,
|
|
139
|
+
ind_7_pcent_threshold,
|
|
140
|
+
ind_8_pcent_threshold,
|
|
141
|
+
ind_9_pcent_threshold,
|
|
142
|
+
ind_10_pcent_threshold,
|
|
143
|
+
ind_11_pcent_threshold,
|
|
87
144
|
]
|
|
88
|
-
names = [ind_1_name, ind_2_name, ind_3_name, ind_4_name]
|
|
145
|
+
names = [ind_1_name, ind_2_name, ind_3_name, ind_4_name,ind_5_name,ind_6_name,ind_7_name,ind_8_name,ind_9_name,ind_10_name,ind_11_name]
|
|
89
146
|
[check_range(threshold) for threshold in thresholds]
|
|
90
147
|
|
|
91
148
|
df_w_indicators = add_indicators(
|
|
@@ -97,18 +154,41 @@ def whisp_risk(
|
|
|
97
154
|
high_name,
|
|
98
155
|
)
|
|
99
156
|
|
|
100
|
-
|
|
157
|
+
df_w_indicators_and_risk_pcrop = add_eudr_risk_pcrop_col(
|
|
158
|
+
df=df_w_indicators,
|
|
159
|
+
ind_1_name=ind_1_name,
|
|
160
|
+
ind_2_name=ind_2_name,
|
|
161
|
+
ind_3_name=ind_3_name,
|
|
162
|
+
ind_4_name=ind_4_name,
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
df_w_indicators_and_risk_acrop = add_eudr_risk_acrop_col(
|
|
101
166
|
df=df_w_indicators,
|
|
102
167
|
ind_1_name=ind_1_name,
|
|
103
168
|
ind_2_name=ind_2_name,
|
|
104
169
|
ind_3_name=ind_3_name,
|
|
105
170
|
ind_4_name=ind_4_name,
|
|
106
171
|
)
|
|
172
|
+
|
|
173
|
+
df_w_indicators_and_risk_timber = add_eudr_risk_timber_col(
|
|
174
|
+
df=df_w_indicators,
|
|
175
|
+
ind_1_name=ind_1_name,
|
|
176
|
+
ind_2_name=ind_2_name,
|
|
177
|
+
ind_3_name=ind_3_name,
|
|
178
|
+
ind_4_name=ind_4_name,
|
|
179
|
+
ind_5_name=ind_5_name,
|
|
180
|
+
ind_6_name=ind_6_name,
|
|
181
|
+
ind_7_name=ind_7_name,
|
|
182
|
+
ind_8_name=ind_8_name,
|
|
183
|
+
ind_9_name=ind_9_name,
|
|
184
|
+
ind_10_name=ind_10_name,
|
|
185
|
+
ind_11_name=ind_11_name
|
|
186
|
+
)
|
|
107
187
|
|
|
108
|
-
return
|
|
188
|
+
return df_w_indicators_and_risk_timber
|
|
109
189
|
|
|
110
190
|
|
|
111
|
-
def
|
|
191
|
+
def add_eudr_risk_pcrop_col(
|
|
112
192
|
df: data_lookup_type,
|
|
113
193
|
ind_1_name: str,
|
|
114
194
|
ind_2_name: str,
|
|
@@ -136,17 +216,109 @@ def add_eudr_risk_col(
|
|
|
136
216
|
or row[ind_2_name] == "yes"
|
|
137
217
|
or row[ind_3_name] == "yes"
|
|
138
218
|
):
|
|
139
|
-
df.at[index, "
|
|
219
|
+
df.at[index, "risk_pcrop"] = "low"
|
|
140
220
|
# If none of the first three indicators suggest low risk and Indicator 4 suggests no risk, set EUDR_risk to "more_info_needed"
|
|
141
221
|
elif row[ind_4_name] == "no":
|
|
142
|
-
df.at[index, "
|
|
222
|
+
df.at[index, "risk_pcrop"] = "more_info_needed"
|
|
143
223
|
# If none of the above conditions are met, set EUDR_risk to "high"
|
|
144
224
|
else:
|
|
145
|
-
df.at[index, "
|
|
225
|
+
df.at[index, "risk_pcrop"] = "high"
|
|
146
226
|
|
|
147
227
|
return df
|
|
148
228
|
|
|
149
229
|
|
|
230
|
+
def add_eudr_risk_acrop_col(
|
|
231
|
+
df: data_lookup_type,
|
|
232
|
+
ind_1_name: str,
|
|
233
|
+
ind_2_name: str,
|
|
234
|
+
ind_3_name: str,
|
|
235
|
+
ind_4_name: str,
|
|
236
|
+
) -> data_lookup_type:
|
|
237
|
+
"""
|
|
238
|
+
Adds the EUDR (European Union Deforestation Risk) column to the DataFrame based on indicator values.
|
|
239
|
+
|
|
240
|
+
Args:
|
|
241
|
+
df (DataFrame): Input DataFrame.
|
|
242
|
+
ind_1_name (str, optional): Name of first indicator column. Defaults to "Indicator_1_treecover".
|
|
243
|
+
ind_2_name (str, optional): Name of second indicator column. Defaults to "Indicator_2_commodities".
|
|
244
|
+
ind_3_name (str, optional): Name of third indicator column. Defaults to "Indicator_3_disturbance_before_2020".
|
|
245
|
+
ind_4_name (str, optional): Name of fourth indicator column. Defaults to "Indicator_4_disturbance_after_2020".
|
|
246
|
+
|
|
247
|
+
Returns:
|
|
248
|
+
DataFrame: DataFrame with added 'EUDR_risk' column.
|
|
249
|
+
"""
|
|
250
|
+
|
|
251
|
+
# soy risk
|
|
252
|
+
for index, row in df.iterrows():
|
|
253
|
+
# If there is no tree cover in 2020, set EUDR_risk_soy to "low"
|
|
254
|
+
if row[ind_1_name] == "no" or row[ind_2_name] == "yes":
|
|
255
|
+
df.at[index, 'risk_acrop'] = "low"
|
|
256
|
+
# If there is tree cover in 2020 and distrubances post 2020, set EUDR_risk_soy to "high"
|
|
257
|
+
elif row[ind_1_name] == "yes" and row[ind_4_name] == "yes":
|
|
258
|
+
df.at[index, 'risk_acrop'] = "high"
|
|
259
|
+
# If tree cover and no disturbances post 2020, set EUDR_risk to "more_info_needed"
|
|
260
|
+
else :
|
|
261
|
+
df.at[index, 'risk_acrop'] = "more_info_needed"
|
|
262
|
+
|
|
263
|
+
return df
|
|
264
|
+
|
|
265
|
+
def add_eudr_risk_timber_col(
|
|
266
|
+
df: data_lookup_type,
|
|
267
|
+
ind_1_name: str,
|
|
268
|
+
ind_2_name: str,
|
|
269
|
+
ind_3_name: str,
|
|
270
|
+
ind_4_name: str,
|
|
271
|
+
ind_5_name: str,
|
|
272
|
+
ind_6_name: str,
|
|
273
|
+
ind_7_name: str,
|
|
274
|
+
ind_8_name: str,
|
|
275
|
+
ind_9_name: str,
|
|
276
|
+
ind_10_name: str,
|
|
277
|
+
ind_11_name: str,
|
|
278
|
+
)-> data_lookup_type:
|
|
279
|
+
"""
|
|
280
|
+
Adds the EUDR (European Union Deforestation Risk) column to the DataFrame based on indicator values.
|
|
281
|
+
|
|
282
|
+
Args:
|
|
283
|
+
df (DataFrame): Input DataFrame.
|
|
284
|
+
ind_1_name (str, optional): Name of first indicator column. Defaults to "Indicator_1_treecover".
|
|
285
|
+
ind_2_name (str, optional): Name of second indicator column. Defaults to "Indicator_2_commodities".
|
|
286
|
+
ind_3_name (str, optional): Name of third indicator column. Defaults to "Indicator_3_disturbance_before_2020".
|
|
287
|
+
ind_4_name (str, optional): Name of fourth indicator column. Defaults to "Indicator_4_disturbance_after_2020".
|
|
288
|
+
|
|
289
|
+
Returns:
|
|
290
|
+
DataFrame: DataFrame with added 'EUDR_risk' column.
|
|
291
|
+
"""
|
|
292
|
+
|
|
293
|
+
for index, row in df.iterrows():
|
|
294
|
+
# If there is a commodity in 2020 OR if there is planted-plantation in 2020 AND no agriculture in 2023, set EUDR_risk_degrad to "low"
|
|
295
|
+
if row[ind_2_name] == "yes" or (row[ind_7_name] == "yes" and row[ind_10_name] == "no"):
|
|
296
|
+
df.at[index, 'risk_timber'] = "low"
|
|
297
|
+
# If there is no tree cover, set EUDR_risk_degrad to "low"? no because of unstocked forests
|
|
298
|
+
# if row[ind_1_name] == "no" or row[ind_3_name] == "yes" or row[ind_7_name] == "yes":
|
|
299
|
+
# df.at[index, 'EUDR_risk_degrad'] = "low"
|
|
300
|
+
# If primary or naturally regenerating or planted forest in 2020 AND agricultural use in 2023, set EUDR_risk to high
|
|
301
|
+
elif (row[ind_5_name] == "yes" or row[ind_6_name] == "yes" or row[ind_7_name] == "yes") and row[ind_10_name] == "yes":
|
|
302
|
+
df.at[index, 'risk_timber'] = "high"
|
|
303
|
+
#If primary or naturally regenerating AND planted post 2020, set EUDR_risk to "high"
|
|
304
|
+
elif (row[ind_5_name] == "yes" or row[ind_6_name] == "yes") and row[ind_8_name] == "yes":
|
|
305
|
+
df.at[index, 'risk_timber'] = "high"
|
|
306
|
+
# If primary or naturally regenerating or planted forest in 2020 and OWL in 2023, set EUDR_risk to high
|
|
307
|
+
#elif (row[ind_5_name] == "yes" or row[ind_6_name] == "yes" or row[ind_7_name] == "yes") and row[ind_10_name] == "yes":
|
|
308
|
+
# df.at[index, 'EUDR_risk_timber'] = "high"
|
|
309
|
+
|
|
310
|
+
# If primary forest OR naturally regenerating AND an information on management practice OR tree cover post 2020, set EUDR_risk_degrad to "low"
|
|
311
|
+
elif (row[ind_5_name] == "yes" or row[ind_6_name] == "yes") and (row[ind_9_name] == "yes" or row[ind_11_name] == "yes"):
|
|
312
|
+
df.at[index, 'risk_timber'] = "low"
|
|
313
|
+
# If primary or naturally regenerating and no other info, set EUDR_risk to "more_info_needed"
|
|
314
|
+
elif row[ind_5_name] == "yes" or row[ind_6_name] == "yes" :
|
|
315
|
+
df.at[index, 'risk_timber'] = "more_info_needed"
|
|
316
|
+
# If none of the above conditions are met, set EUDR_risk to "high"
|
|
317
|
+
else:
|
|
318
|
+
df.at[index, 'risk_timber'] = "high"
|
|
319
|
+
|
|
320
|
+
return df
|
|
321
|
+
|
|
150
322
|
def add_indicators(
|
|
151
323
|
df: data_lookup_type,
|
|
152
324
|
input_cols: list[str],
|
|
@@ -220,7 +392,7 @@ def add_indicator_column(
|
|
|
220
392
|
return df
|
|
221
393
|
|
|
222
394
|
|
|
223
|
-
def
|
|
395
|
+
def get_cols_ind_01_treecover(lookup_gee_datasets_df):
|
|
224
396
|
"""
|
|
225
397
|
Generate a list of dataset names for the treecover theme, excluding those marked for exclusion.
|
|
226
398
|
|
|
@@ -241,7 +413,7 @@ def get_cols_ind_1_treecover(lookup_gee_datasets_df):
|
|
|
241
413
|
)
|
|
242
414
|
|
|
243
415
|
|
|
244
|
-
def
|
|
416
|
+
def get_cols_ind_02_commodities(lookup_gee_datasets_df):
|
|
245
417
|
"""
|
|
246
418
|
Generate a list of dataset names for the commodities theme, excluding those marked for exclusion.
|
|
247
419
|
|
|
@@ -262,7 +434,7 @@ def get_cols_ind_2_commodities(lookup_gee_datasets_df):
|
|
|
262
434
|
)
|
|
263
435
|
|
|
264
436
|
|
|
265
|
-
def
|
|
437
|
+
def get_cols_ind_03_dist_before_2020(lookup_gee_datasets_df):
|
|
266
438
|
"""
|
|
267
439
|
Generate a list of dataset names for the disturbance before 2020 theme, excluding those marked for exclusion.
|
|
268
440
|
|
|
@@ -283,7 +455,7 @@ def get_cols_ind_3_dist_before_2020(lookup_gee_datasets_df):
|
|
|
283
455
|
)
|
|
284
456
|
|
|
285
457
|
|
|
286
|
-
def
|
|
458
|
+
def get_cols_ind_04_dist_after_2020(lookup_gee_datasets_df):
|
|
287
459
|
"""
|
|
288
460
|
Generate a list of dataset names for the disturbance after 2020 theme, excluding those marked for exclusion.
|
|
289
461
|
|
|
@@ -303,7 +475,130 @@ def get_cols_ind_4_dist_after_2020(lookup_gee_datasets_df):
|
|
|
303
475
|
]
|
|
304
476
|
)
|
|
305
477
|
|
|
478
|
+
def get_cols_ind_05_primary_2020(lookup_gee_datasets_df):
|
|
479
|
+
"""
|
|
480
|
+
Generate a list of dataset names for primary forests in 2020
|
|
481
|
+
|
|
482
|
+
Args:
|
|
483
|
+
lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
|
|
484
|
+
|
|
485
|
+
Returns:
|
|
486
|
+
list: List of dataset names set to be used in the risk calculations for the degradation - primary forest in 2020, excluding those marked for exclusion.
|
|
487
|
+
"""
|
|
488
|
+
lookup_gee_datasets_df = lookup_gee_datasets_df[
|
|
489
|
+
lookup_gee_datasets_df["exclude_from_output"] != 1
|
|
490
|
+
]
|
|
491
|
+
return list(lookup_gee_datasets_df["name"][
|
|
492
|
+
(lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
|
|
493
|
+
(lookup_gee_datasets_df["theme_timber"] == "primary")
|
|
494
|
+
])
|
|
495
|
+
|
|
496
|
+
def get_cols_ind_06_nat_reg_2020(lookup_gee_datasets_df):
|
|
497
|
+
"""
|
|
498
|
+
Generate a list of dataset names for naturally_reg_2020 forests in 2020
|
|
499
|
+
|
|
500
|
+
Args:
|
|
501
|
+
lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
|
|
502
|
+
|
|
503
|
+
Returns:
|
|
504
|
+
list: List of dataset names set to be used in the risk calculations for the degradation - naturally_reg_2020 in 2020, excluding those marked for exclusion.
|
|
505
|
+
"""
|
|
506
|
+
lookup_gee_datasets_df = lookup_gee_datasets_df[
|
|
507
|
+
lookup_gee_datasets_df["exclude_from_output"] != 1
|
|
508
|
+
]
|
|
509
|
+
return list(lookup_gee_datasets_df["name"][
|
|
510
|
+
(lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
|
|
511
|
+
(lookup_gee_datasets_df["theme_timber"] == "naturally_reg_2020")
|
|
512
|
+
])
|
|
513
|
+
|
|
514
|
+
def get_cols_ind_07_planted_2020(lookup_gee_datasets_df):
|
|
515
|
+
"""
|
|
516
|
+
Generate a list of dataset names for planted and plantation forests in 2020
|
|
517
|
+
|
|
518
|
+
Args:
|
|
519
|
+
lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
|
|
520
|
+
|
|
521
|
+
Returns:
|
|
522
|
+
list: List of dataset names set to be used in the risk calculations for the degradation - planted and plantation forests in 2020, excluding those marked for exclusion.
|
|
523
|
+
"""
|
|
524
|
+
lookup_gee_datasets_df = lookup_gee_datasets_df[
|
|
525
|
+
lookup_gee_datasets_df["exclude_from_output"] != 1
|
|
526
|
+
]
|
|
527
|
+
return list(lookup_gee_datasets_df["name"][
|
|
528
|
+
(lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
|
|
529
|
+
(lookup_gee_datasets_df["theme_timber"] == "planted_plantation_2020")
|
|
530
|
+
])
|
|
531
|
+
def get_cols_ind_08_planted_post_2020(lookup_gee_datasets_df):
|
|
532
|
+
"""
|
|
533
|
+
Generate a list of dataset names for planted and plantation forests post 2020
|
|
534
|
+
|
|
535
|
+
Args:
|
|
536
|
+
lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
|
|
537
|
+
|
|
538
|
+
Returns:
|
|
539
|
+
list: List of dataset names set to be used in the risk calculations for the degradation - planted and plantation forests post 2020, excluding those marked for exclusion.
|
|
540
|
+
"""
|
|
541
|
+
lookup_gee_datasets_df = lookup_gee_datasets_df[
|
|
542
|
+
lookup_gee_datasets_df["exclude_from_output"] != 1
|
|
543
|
+
]
|
|
544
|
+
return list(lookup_gee_datasets_df["name"][
|
|
545
|
+
(lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
|
|
546
|
+
(lookup_gee_datasets_df["theme_timber"] == "planted_plantation_post_2020")
|
|
547
|
+
])
|
|
548
|
+
def get_cols_ind_09_treecover_post_2020(lookup_gee_datasets_df):
|
|
549
|
+
"""
|
|
550
|
+
Generate a list of dataset names for treecover post 2020
|
|
306
551
|
|
|
552
|
+
Args:
|
|
553
|
+
lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
|
|
554
|
+
|
|
555
|
+
Returns:
|
|
556
|
+
list: List of dataset names set to be used in the risk calculations for the degradation - treecover post 2020, excluding those marked for exclusion.
|
|
557
|
+
"""
|
|
558
|
+
lookup_gee_datasets_df = lookup_gee_datasets_df[
|
|
559
|
+
lookup_gee_datasets_df["exclude_from_output"] != 1
|
|
560
|
+
]
|
|
561
|
+
return list(lookup_gee_datasets_df["name"][
|
|
562
|
+
(lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
|
|
563
|
+
(lookup_gee_datasets_df["theme_timber"] == "treecover_post2020")
|
|
564
|
+
])
|
|
565
|
+
|
|
566
|
+
def get_cols_ind_10_agri_post_2020(lookup_gee_datasets_df):
|
|
567
|
+
"""
|
|
568
|
+
Generate a list of dataset names for croplands post 2020
|
|
569
|
+
|
|
570
|
+
Args:
|
|
571
|
+
lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
|
|
572
|
+
|
|
573
|
+
Returns:
|
|
574
|
+
list: List of dataset names set to be used in the risk calculations for the degradation - croplands post 2020, excluding those marked for exclusion.
|
|
575
|
+
"""
|
|
576
|
+
lookup_gee_datasets_df = lookup_gee_datasets_df[
|
|
577
|
+
lookup_gee_datasets_df["exclude_from_output"] != 1
|
|
578
|
+
]
|
|
579
|
+
return list(lookup_gee_datasets_df["name"][
|
|
580
|
+
(lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
|
|
581
|
+
(lookup_gee_datasets_df["theme_timber"] == "agri_post_2020")
|
|
582
|
+
])
|
|
583
|
+
|
|
584
|
+
def get_cols_ind_11_logging(lookup_gee_datasets_df):
|
|
585
|
+
"""
|
|
586
|
+
Generate a list of dataset names for logging concessions (2020 if available)
|
|
587
|
+
|
|
588
|
+
Args:
|
|
589
|
+
lookup_gee_datasets_df (pd.DataFrame): DataFrame containing dataset information.
|
|
590
|
+
|
|
591
|
+
Returns:
|
|
592
|
+
list: List of dataset names set to be used in the risk calculations for the degradation - logging concessions, excluding those marked for exclusion.
|
|
593
|
+
"""
|
|
594
|
+
lookup_gee_datasets_df = lookup_gee_datasets_df[
|
|
595
|
+
lookup_gee_datasets_df["exclude_from_output"] != 1
|
|
596
|
+
]
|
|
597
|
+
return list(lookup_gee_datasets_df["name"][
|
|
598
|
+
(lookup_gee_datasets_df["use_for_risk_timber"] == 1) &
|
|
599
|
+
(lookup_gee_datasets_df["theme_timber"] == "logging_concession")
|
|
600
|
+
])
|
|
601
|
+
|
|
307
602
|
def clamp(
|
|
308
603
|
value: float | pd.Series, min_val: float, max_val: float
|
|
309
604
|
) -> float | pd.Series:
|
|
@@ -326,4 +621,4 @@ def clamp(
|
|
|
326
621
|
|
|
327
622
|
def check_range(value: float) -> None:
|
|
328
623
|
if not (0 <= value <= 100):
|
|
329
|
-
raise ValueError("Value must be between 0 and 100.")
|
|
624
|
+
raise ValueError("Value must be between 0 and 100.")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: openforis-whisp
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0a1
|
|
4
4
|
Summary: Whisp (What is in that plot) is an open-source solution which helps to produce relevant forest monitoring information and support compliance with deforestation-related regulations.
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: whisp,geospatial,data-processing
|
|
@@ -107,12 +107,40 @@ However, under the same circumstances but with <u>no</u> disturbances reported a
|
|
|
107
107
|
*The Whisp algorithm visualized:*
|
|
108
108
|

|
|
109
109
|
|
|
110
|
+
## Whisp datasets for timber <a name="whisp_datasets_timber"></a>
|
|
111
|
+
***Whisp*** implements the convergence of evidence approach by providing a transparent and public processing flow using datasets covering the following categories:
|
|
112
|
+
1) Tree and forest cover (at the end of 2020);
|
|
113
|
+
2) Commodities (i.e., crop plantations and other agricultural uses at the end of 2020);
|
|
114
|
+
3) Disturbances **before 2020** (i.e., degradation or deforestation until 2020-12-31);
|
|
115
|
+
4) Disturbances **after 2020** (i.e., degradation or deforestation from 2021-01-01 onward).
|
|
116
|
+
5) Primary forests in 2020;
|
|
117
|
+
6) Naturally regenerating forests in 2020;
|
|
118
|
+
7) Planted and plantation forests in 2020;
|
|
119
|
+
8) Planted and plantation forests in 2023;
|
|
120
|
+
9) Treecover in 2023;
|
|
121
|
+
10) Commodities or croplands in 2023.
|
|
122
|
+
11) Logging concessions;
|
|
123
|
+
|
|
124
|
+
There are multiple datasets for each category. Find the full current [list of datasets used in Whisp here](https://github.com/forestdatapartnership/whisp/blob/main/layers_description.md).
|
|
125
|
+
Whisp checks the plots provided by the user by running zonal statistics on them to answer the following questions:
|
|
126
|
+
|
|
127
|
+
1) Was there tree cover in 2020?
|
|
128
|
+
2) Were there commodity plantations or other agricultural uses in 2020?
|
|
129
|
+
3) Were there disturbances until 2020-12-31?
|
|
130
|
+
4) Were there disturbances after 2020-12-31 / starting 2021-01-01?
|
|
131
|
+
5) Were there primary forests in 2020?
|
|
132
|
+
6) Were there naturally regenerating forests in 2020?
|
|
133
|
+
7) Were there planted and plantation forests in 2020?
|
|
134
|
+
8) Were there planted and plantation forests in 2023?
|
|
135
|
+
9) Was there treecover in 2023?
|
|
136
|
+
10) Were there commodity plantations or other agricultural uses in 2023?
|
|
137
|
+
11) Were there logging concessions?
|
|
110
138
|
|
|
111
139
|
# Run Whisp python package from a notebook
|
|
112
140
|
|
|
113
141
|
For most users we suggest using the Whisp App to process their plot data. But for some, using the python package directly will fit their workflow.
|
|
114
142
|
|
|
115
|
-
A simple example of the package functionality can be seen in this [Colab Notebook](https://github.com/forestdatapartnership/whisp/blob/main/notebooks/Colab_whisp_geojson_to_csv.ipynb)
|
|
143
|
+
A simple example of the package functionality can be seen in this [Colab Notebook](https://github.com/forestdatapartnership/whisp/blob/main/notebooks/Colab_whisp_geojson_to_csv.ipynb)
|
|
116
144
|
|
|
117
145
|
## Requirements for running the package
|
|
118
146
|
|
|
@@ -124,7 +152,7 @@ More info on Whisp can be found in [here](https://openknowledge.fao.org/items/e9
|
|
|
124
152
|
|
|
125
153
|
## Python package installation
|
|
126
154
|
|
|
127
|
-
The Whisp package is available on pip
|
|
155
|
+
The Whisp package is available on pip
|
|
128
156
|
https://pypi.org/project/openforis-whisp/
|
|
129
157
|
|
|
130
158
|
|
|
@@ -142,7 +170,22 @@ More info on Whisp can be found in [here](https://openknowledge.fao.org/items/e9
|
|
|
142
170
|
|
|
143
171
|
|
|
144
172
|
## How to add data layers to Whisp
|
|
145
|
-
There are two main approaches:
|
|
173
|
+
There are two main approaches:
|
|
174
|
+
1) Request that a layer be incorporated into the core Whisp inputs, or
|
|
175
|
+
|
|
176
|
+
2) Add your own data directly to complement the core datasets.
|
|
177
|
+
|
|
178
|
+
Currently the latter approach is under revision since moving to implementation in a python package. In the meantime please contact us through the issues page if this is functionality is useful to you.
|
|
179
|
+
|
|
180
|
+
Requesting a layer addition:
|
|
181
|
+
If you think a particular dataset has wide applicability for Whisp users, you can request it be added to the main Whisp repository by logging as an issue in Github [here] (https://github.com/forestdatapartnership/whisp/issues/). Before submitting a request, consider the following:
|
|
182
|
+
|
|
183
|
+
- Is the resolution high enough for plot-level analysis? (e.g., 30m or 10m resolution)
|
|
184
|
+
|
|
185
|
+
- Is there an indication of data quality? (e.g., accuracy assessment detailed in a scientific publication)
|
|
186
|
+
|
|
187
|
+
- Is there relevant metadata available?
|
|
188
|
+
|
|
146
189
|
|
|
147
190
|
## Contributing to the Whisp code base
|
|
148
191
|
Contributions to the Whisp code in GitHub are welcome. They can be made by forking the repository making and pushing the required changes, then making a pull request to the Whisp repository. After briefly reviewing the request, we can make a branch for which to make a new pull request to. After final checks we can then incorporate the code in main. If in doubt get in contact first or log as an issue [here](https://github.com/forestdatapartnership/whisp/issues/).
|
|
@@ -166,10 +209,10 @@ Please read the [contributing guidelines](contributing_guidelines.md) for good p
|
|
|
166
209
|
|
|
167
210
|
## Code of Conduct <a name="whisp_conduct"></a>
|
|
168
211
|
|
|
169
|
-
**Purpose**
|
|
212
|
+
**Purpose**
|
|
170
213
|
We are dedicated to maintaining a safe and respectful environment for all users. Harassment or abusive behavior will not be tolerated. <br>
|
|
171
214
|
|
|
172
|
-
**Scope**
|
|
215
|
+
**Scope**
|
|
173
216
|
This Code applies to all interactions on the repository and on the app.
|
|
174
217
|
|
|
175
218
|
**Expectations** <br>
|
|
@@ -182,6 +225,7 @@ This Code applies to all interactions on the repository and on the app.
|
|
|
182
225
|
*- Discrimination:* Any form of hate speech or exclusion based on race, gender, orientation, or other identities.<br>
|
|
183
226
|
*- Inappropriate Content:* Posting offensive, harmful, or explicit material.
|
|
184
227
|
|
|
185
|
-
**Reporting**
|
|
228
|
+
**Reporting**
|
|
186
229
|
Users can report violations directly to us by emailing the address listed in the "Contact Us" section of the website:
|
|
187
230
|
https://openforis.org/solutions/whisp/
|
|
231
|
+
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
openforis_whisp/__init__.py,sha256=ozyJr8a-da-_dIq6gy2sD5U-2CevrgWF6XztqNU1Oew,2373
|
|
2
2
|
openforis_whisp/data_conversion.py,sha256=96en23_ysP7OfOJNGBssDyaX8seuzYGUarqdgnbI4SU,10961
|
|
3
|
-
openforis_whisp/datasets.py,sha256=
|
|
3
|
+
openforis_whisp/datasets.py,sha256=UJPq_ssUPQDja-4KNHGhLCwAq-GoutjUT_IEkVjpgwE,29398
|
|
4
4
|
openforis_whisp/logger.py,sha256=bcKu82a3njNIBiRghDcO_cC-SOK62cYAYuTaSWq7s9I,1354
|
|
5
5
|
openforis_whisp/parameters/__init__.py,sha256=KL7iORJVjSpZatYjoyWckcmQJnE89_DBC8R6_0_eR6o,349
|
|
6
6
|
openforis_whisp/parameters/config_runtime.py,sha256=b1Rk7VSRsfo6ucXeuZgm-jwW0-tL90bgbNqKMcLyV40,1233
|
|
7
7
|
openforis_whisp/parameters/lookup_context_and_metadata.csv,sha256=4eciReFRPRSDeKBiUiODbhFrtZcguxgxc2DOlMB6qG8,1003
|
|
8
|
-
openforis_whisp/parameters/lookup_gee_datasets.csv,sha256=
|
|
8
|
+
openforis_whisp/parameters/lookup_gee_datasets.csv,sha256=B6HpxfGQy009qtUjm_cqQByrFl3DomH6BVGlXvdY8jM,13515
|
|
9
9
|
openforis_whisp/pd_schemas.py,sha256=W_ocS773LHfc05dJqvWRa-bRdX0wKFoNp0lMxgFx94Y,2681
|
|
10
10
|
openforis_whisp/reformat.py,sha256=_ByLR5bu_gPecH6W4jxymkcIN5Hph3bRIuRfjZByNBU,12125
|
|
11
|
-
openforis_whisp/risk.py,sha256=
|
|
11
|
+
openforis_whisp/risk.py,sha256=KyCgbYaWXW79LFQ__XcgAGvO3jLqlno3A1YoRnWX_7E,27375
|
|
12
12
|
openforis_whisp/stats.py,sha256=Y-IfazrTA_O5wQ8YE0GypXQYopp1V-ym_jPLwtNCw4M,26405
|
|
13
13
|
openforis_whisp/utils.py,sha256=hpeY9aA3BND2m9c15PZ6_nClemsfiVNUEzA4pQXfztA,5330
|
|
14
|
-
openforis_whisp-0.
|
|
15
|
-
openforis_whisp-0.
|
|
16
|
-
openforis_whisp-0.
|
|
17
|
-
openforis_whisp-0.
|
|
14
|
+
openforis_whisp-1.0.0a1.dist-info/LICENSE,sha256=nqyqICO95iw_iwzP1t_IIAf7ZX3DPbL_M9WyQfh2q1k,1085
|
|
15
|
+
openforis_whisp-1.0.0a1.dist-info/METADATA,sha256=fjVpIZnaKO8E_qD_KsrndyyUVmWl_4Y3iue2PRdiP7M,13634
|
|
16
|
+
openforis_whisp-1.0.0a1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
|
17
|
+
openforis_whisp-1.0.0a1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|