Skip to content

Commit 227a581

Browse files
authored
Merge pull request #43 from sentinel-hub/toolbox-demonstrator-d43
Adds demonstrator notebooks
2 parents cf3da02 + f1b4db1 commit 227a581

File tree

6 files changed

+2673
-8
lines changed

6 files changed

+2673
-8
lines changed

AgriDataValue/README.md

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,33 @@ In this folder we show some examples how the toolbox can be used to perform task
66

77
## Table of Contents
88

9-
* data_search.ipynb: querying Earth Observation data
10-
* eo-data.ipynb: retrieving EO data
11-
* indicators.ipynb: access to EO derived data for various existing indicators (e.g. Soil Moisture)
12-
* ndvi_example.ipynb: example how to retrieve NDVI data using Sentinel Hub Process API
13-
* cdse_example.ipynb: how to set up toolkit to work with CDSE
14-
* Air pollution example: retrieving, visualising and analysing NO2 air pollution with the data from the Sentinel-5P satellite
15-
* Burned-up area example: an example of how Sentinel Hub can be used together with eo-learn and eo-grow to train and deploy a model for burned up area detection
16-
* Cloud shadows projection example:
9+
* [./data_search.ipynb](data_search.ipynb): querying Earth Observation data
10+
11+
* [./eo-data.ipynb](eo-data.ipynb): retrieving EO data
12+
13+
* [./indicators.ipynb](indicators.ipynb): access to EO derived data for various existing indicators (e.g. Soil Moisture)
14+
15+
* [./ndvi_example.ipynb](ndvi_example.ipynb): example how to retrieve NDVI data using Sentinel Hub Process API
16+
17+
* [./cdse_example](cdse_example.ipynb): how to set up toolkit to work with CDSE
18+
19+
* [Air pollution](./Air pollution example): retrieving, visualising and analysing NO2 air pollution with the data from the Sentinel-5P satellite
20+
21+
* [Burned up area](./Burned-up_area) : an example of how Sentinel Hub can be used together with eo-learn and eo-grow to train and deploy a model for burned up area detection
22+
23+
* [Cloud shadows projection](./cloud-shadows-projection): Example showing how to use the toolbox to compute sloud shadows. Showing advanced capabilities ot the toolbox for complex processing tasks.
24+
25+
### Examples focusing on ADV datasets and integration:
26+
27+
* [Satellite imagery data](./satellite_imagery_data.ipynb): example showing how to retrieve satellite imagery over a pilot AoI for longitudal agricultural monitoring.
28+
29+
* [Drone data](./drone_data_w_imagery.ipynb): Example showing how the drone data integrated into the toolbox can be retrieved alongside satellite imagery
30+
31+
* [Historical indcators](./historical_indicators_statistics): Example showing how historical indicators can be retrieved and processed over pilot areas
32+
33+
* [Projection indicators](./projection_indicators_statistics.ipynb): Example showing how 5-year and 50 year projection indicators can be retrieved and processed
34+
35+
1736

1837

1938
## Acknowledgements

AgriDataValue/drone_data_w_imagery.ipynb

Lines changed: 258 additions & 0 deletions
Large diffs are not rendered by default.

AgriDataValue/evalscripts.py

Lines changed: 354 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,354 @@
1+
evalscript_baresoil = """
2+
//VERSION=3
3+
4+
//Author: Domagoj Korais
5+
6+
function setup() {
7+
return {
8+
input: [{
9+
bands: ["B02", "B03", "B04", "B05", "B07", "B08", "B11"],
10+
units: "reflectance"
11+
}],
12+
output: {
13+
id:"baresoil",
14+
bands: 1,
15+
sampleType: "AUTO"
16+
}
17+
}
18+
}
19+
20+
function evaluatePixel(sample) {
21+
var num_NBSI = ((sample.B11 + sample.B04)-(sample.B08 + sample.B02));
22+
var den_NBSI = ((sample.B11 + sample.B04)+(sample.B08 + sample.B02));
23+
24+
var NBSI = num_NBSI/den_NBSI;
25+
var NDVI = index(sample.B08, sample.B04);
26+
var NDVI_RE3 = index(sample.B08, sample.B07);
27+
var CL_RE = sample.B07 / sample.B05 - 1;
28+
29+
var is_bare_soil = NDVI <= -0.1 ? false : predict(NBSI, NDVI, NDVI_RE3, CL_RE) > 0.5;
30+
return [is_bare_soil]
31+
}
32+
33+
34+
var DecisionTreeClassifier = function() {
35+
36+
var findMax = function(nums) {
37+
var index = 0;
38+
for (var i = 0; i < nums.length; i++) {
39+
index = nums[i] > nums[index] ? i : index;
40+
}
41+
return index;
42+
};
43+
44+
this.predict = function(features) {
45+
var classes = new Array(2);
46+
47+
if (features[1] <= 0.2880808413028717) {
48+
if (features[2] <= -0.001884871511720121) {
49+
if (features[2] <= -0.01514277933165431) {
50+
if (features[0] <= -0.05856157839298248) {
51+
if (features[3] <= 0.4919503927230835) {
52+
if (features[1] <= 0.22891760617494583) {
53+
classes[0] = 109;
54+
classes[1] = 75;
55+
} else {
56+
classes[0] = 77;
57+
classes[1] = 5;
58+
}
59+
} else {
60+
if (features[3] <= 0.6081486344337463) {
61+
classes[0] = 47;
62+
classes[1] = 128;
63+
} else {
64+
classes[0] = 22;
65+
classes[1] = 311;
66+
}
67+
}
68+
} else {
69+
if (features[1] <= 0.23794686794281006) {
70+
if (features[3] <= 0.24695706367492676) {
71+
classes[0] = 51;
72+
classes[1] = 132;
73+
} else {
74+
classes[0] = 352;
75+
classes[1] = 3683;
76+
}
77+
} else {
78+
if (features[3] <= 0.4766134023666382) {
79+
classes[0] = 91;
80+
classes[1] = 57;
81+
} else {
82+
classes[0] = 209;
83+
classes[1] = 1278;
84+
}
85+
}
86+
}
87+
} else {
88+
if (features[0] <= -0.01485772943124175) {
89+
if (features[3] <= 0.46598660945892334) {
90+
if (features[1] <= 0.23513969033956528) {
91+
classes[0] = 80;
92+
classes[1] = 30;
93+
} else {
94+
classes[0] = 83;
95+
classes[1] = 4;
96+
}
97+
} else {
98+
classes[0] = 38;
99+
classes[1] = 42;
100+
}
101+
} else {
102+
if (features[1] <= 0.24381835758686066) {
103+
if (features[0] <= 0.017081347294151783) {
104+
classes[0] = 37;
105+
classes[1] = 60;
106+
} else {
107+
classes[0] = 72;
108+
classes[1] = 437;
109+
}
110+
} else {
111+
if (features[3] <= 0.4962599277496338) {
112+
classes[0] = 84;
113+
classes[1] = 43;
114+
} else {
115+
classes[0] = 23;
116+
classes[1] = 66;
117+
}
118+
}
119+
}
120+
}
121+
} else {
122+
if (features[2] <= 0.012518306728452444) {
123+
if (features[0] <= 0.011857263278216124) {
124+
if (features[3] <= 0.44026511907577515) {
125+
if (features[0] <= -0.025940910913050175) {
126+
classes[0] = 155;
127+
classes[1] = 2;
128+
} else {
129+
classes[0] = 122;
130+
classes[1] = 13;
131+
}
132+
} else {
133+
classes[0] = 58;
134+
classes[1] = 38;
135+
}
136+
} else {
137+
if (features[1] <= 0.21599827706813812) {
138+
classes[0] = 44;
139+
classes[1] = 86;
140+
} else {
141+
if (features[3] <= 0.4378824234008789) {
142+
classes[0] = 145;
143+
classes[1] = 37;
144+
} else {
145+
classes[0] = 57;
146+
classes[1] = 55;
147+
}
148+
}
149+
}
150+
} else {
151+
if (features[3] <= 0.4603644013404846) {
152+
if (features[1] <= 0.21943768113851547) {
153+
if (features[0] <= 0.021366839297115803) {
154+
classes[0] = 131;
155+
classes[1] = 4;
156+
} else {
157+
classes[0] = 58;
158+
classes[1] = 25;
159+
}
160+
} else {
161+
if (features[3] <= 0.42150408029556274) {
162+
classes[0] = 982;
163+
classes[1] = 19;
164+
} else {
165+
classes[0] = 237;
166+
classes[1] = 14;
167+
}
168+
}
169+
} else {
170+
classes[0] = 84;
171+
classes[1] = 26;
172+
}
173+
}
174+
}
175+
} else {
176+
if (features[2] <= -0.047297170385718346) {
177+
if (features[1] <= 0.40251147747039795) {
178+
if (features[3] <= 0.6912856698036194) {
179+
classes[0] = 114;
180+
classes[1] = 25;
181+
} else {
182+
if (features[1] <= 0.3502514660358429) {
183+
if (features[3] <= 0.7766227126121521) {
184+
classes[0] = 29;
185+
classes[1] = 74;
186+
} else {
187+
classes[0] = 64;
188+
classes[1] = 516;
189+
}
190+
} else {
191+
if (features[0] <= -0.027021611109375954) {
192+
classes[0] = 84;
193+
classes[1] = 236;
194+
} else {
195+
classes[0] = 72;
196+
classes[1] = 30;
197+
}
198+
}
199+
}
200+
} else {
201+
if (features[1] <= 0.4671569764614105) {
202+
if (features[0] <= -0.05327927693724632) {
203+
if (features[2] <= -0.0706191249191761) {
204+
classes[0] = 43;
205+
classes[1] = 41;
206+
} else {
207+
classes[0] = 99;
208+
classes[1] = 40;
209+
}
210+
} else {
211+
if (features[1] <= 0.4272315502166748) {
212+
classes[0] = 67;
213+
classes[1] = 18;
214+
} else {
215+
classes[0] = 121;
216+
classes[1] = 9;
217+
}
218+
}
219+
} else {
220+
if (features[3] <= 1.3283718824386597) {
221+
classes[0] = 137;
222+
classes[1] = 16;
223+
} else {
224+
if (features[2] <= -0.08075670152902603) {
225+
classes[0] = 75;
226+
classes[1] = 5;
227+
} else {
228+
classes[0] = 453;
229+
classes[1] = 4;
230+
}
231+
}
232+
}
233+
}
234+
} else {
235+
if (features[1] <= 0.3474765121936798) {
236+
if (features[3] <= 0.5934110283851624) {
237+
if (features[2] <= 0.003244615043513477) {
238+
if (features[0] <= -0.03575599752366543) {
239+
classes[0] = 330;
240+
classes[1] = 39;
241+
} else {
242+
classes[0] = 360;
243+
classes[1] = 138;
244+
}
245+
} else {
246+
if (features[2] <= 0.01407763920724392) {
247+
classes[0] = 607;
248+
classes[1] = 57;
249+
} else {
250+
classes[0] = 2837;
251+
classes[1] = 48;
252+
}
253+
}
254+
} else {
255+
if (features[2] <= -0.021189325489103794) {
256+
if (features[0] <= 0.008428129367530346) {
257+
classes[0] = 113;
258+
classes[1] = 342;
259+
} else {
260+
classes[0] = 82;
261+
classes[1] = 90;
262+
}
263+
} else {
264+
if (features[2] <= 0.010304238181561232) {
265+
classes[0] = 290;
266+
classes[1] = 266;
267+
} else {
268+
classes[0] = 142;
269+
classes[1] = 28;
270+
}
271+
}
272+
}
273+
} else {
274+
if (features[2] <= 0.00489223818294704) {
275+
if (features[1] <= 0.4410252124071121) {
276+
if (features[0] <= -0.034201690927147865) {
277+
classes[0] = 1971;
278+
classes[1] = 653;
279+
} else {
280+
classes[0] = 2273;
281+
classes[1] = 234;
282+
}
283+
} else {
284+
if (features[3] <= 1.035286784172058) {
285+
classes[0] = 1973;
286+
classes[1] = 195;
287+
} else {
288+
classes[0] = 9665;
289+
classes[1] = 144;
290+
}
291+
}
292+
} else {
293+
if (features[2] <= 0.016115683130919933) {
294+
if (features[1] <= 0.4877214878797531) {
295+
classes[0] = 2990;
296+
classes[1] = 137;
297+
} else {
298+
classes[0] = 1448;
299+
classes[1] = 18;
300+
}
301+
} else {
302+
if (features[0] <= -0.04386013746261597) {
303+
classes[0] = 7991;
304+
classes[1] = 130;
305+
} else {
306+
classes[0] = 7008;
307+
classes[1] = 44;
308+
}
309+
}
310+
}
311+
}
312+
}
313+
}
314+
315+
return findMax(classes);
316+
};
317+
318+
};
319+
320+
function predict(NBSI, NDVI, NDVI_RE3, CL_RE){
321+
var clf = new DecisionTreeClassifier();
322+
return [1/(1+Math.exp(-1*clf.predict([NBSI, NDVI, NDVI_RE3, CL_RE])))];
323+
}
324+
"""
325+
326+
evalscript_ndvi = """
327+
//VERSION=3
328+
function setup() {
329+
return {
330+
input: [
331+
{
332+
bands: ["B04", "B08", "dataMask"],
333+
}
334+
],
335+
output: [
336+
{
337+
id: "bands",
338+
bands: ["NDVI"],
339+
sampleType: SampleType.FLOAT32
340+
},
341+
{
342+
id: "dataMask",
343+
bands: 1
344+
}
345+
] };
346+
}
347+
348+
function evaluatePixel(samples) {
349+
return {
350+
bands: [index(samples.B08, samples.B04)],
351+
dataMask: [samples.dataMask]
352+
};
353+
}
354+
"""

0 commit comments

Comments
 (0)