Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 27 additions & 8 deletions AgriDataValue/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,33 @@ In this folder we show some examples how the toolbox can be used to perform task

## Table of Contents

* data_search.ipynb: querying Earth Observation data
* eo-data.ipynb: retrieving EO data
* indicators.ipynb: access to EO derived data for various existing indicators (e.g. Soil Moisture)
* ndvi_example.ipynb: example how to retrieve NDVI data using Sentinel Hub Process API
* cdse_example.ipynb: how to set up toolkit to work with CDSE
* Air pollution example: retrieving, visualising and analysing NO2 air pollution with the data from the Sentinel-5P satellite
* 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
* Cloud shadows projection example:
* [./data_search.ipynb](data_search.ipynb): querying Earth Observation data

* [./eo-data.ipynb](eo-data.ipynb): retrieving EO data

* [./indicators.ipynb](indicators.ipynb): access to EO derived data for various existing indicators (e.g. Soil Moisture)

* [./ndvi_example.ipynb](ndvi_example.ipynb): example how to retrieve NDVI data using Sentinel Hub Process API

* [./cdse_example](cdse_example.ipynb): how to set up toolkit to work with CDSE

* [Air pollution](./Air pollution example): retrieving, visualising and analysing NO2 air pollution with the data from the Sentinel-5P satellite

* [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

* [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.

### Examples focusing on ADV datasets and integration:

* [Satellite imagery data](./satellite_imagery_data.ipynb): example showing how to retrieve satellite imagery over a pilot AoI for longitudal agricultural monitoring.

* [Drone data](./drone_data_w_imagery.ipynb): Example showing how the drone data integrated into the toolbox can be retrieved alongside satellite imagery

* [Historical indcators](./historical_indicators_statistics): Example showing how historical indicators can be retrieved and processed over pilot areas

* [Projection indicators](./projection_indicators_statistics.ipynb): Example showing how 5-year and 50 year projection indicators can be retrieved and processed




## Acknowledgements
Expand Down
258 changes: 258 additions & 0 deletions AgriDataValue/drone_data_w_imagery.ipynb

Large diffs are not rendered by default.

354 changes: 354 additions & 0 deletions AgriDataValue/evalscripts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,354 @@
evalscript_baresoil = """
//VERSION=3

//Author: Domagoj Korais

function setup() {
return {
input: [{
bands: ["B02", "B03", "B04", "B05", "B07", "B08", "B11"],
units: "reflectance"
}],
output: {
id:"baresoil",
bands: 1,
sampleType: "AUTO"
}
}
}

function evaluatePixel(sample) {
var num_NBSI = ((sample.B11 + sample.B04)-(sample.B08 + sample.B02));
var den_NBSI = ((sample.B11 + sample.B04)+(sample.B08 + sample.B02));

var NBSI = num_NBSI/den_NBSI;
var NDVI = index(sample.B08, sample.B04);
var NDVI_RE3 = index(sample.B08, sample.B07);
var CL_RE = sample.B07 / sample.B05 - 1;

var is_bare_soil = NDVI <= -0.1 ? false : predict(NBSI, NDVI, NDVI_RE3, CL_RE) > 0.5;
return [is_bare_soil]
}


var DecisionTreeClassifier = function() {

var findMax = function(nums) {
var index = 0;
for (var i = 0; i < nums.length; i++) {
index = nums[i] > nums[index] ? i : index;
}
return index;
};

this.predict = function(features) {
var classes = new Array(2);

if (features[1] <= 0.2880808413028717) {
if (features[2] <= -0.001884871511720121) {
if (features[2] <= -0.01514277933165431) {
if (features[0] <= -0.05856157839298248) {
if (features[3] <= 0.4919503927230835) {
if (features[1] <= 0.22891760617494583) {
classes[0] = 109;
classes[1] = 75;
} else {
classes[0] = 77;
classes[1] = 5;
}
} else {
if (features[3] <= 0.6081486344337463) {
classes[0] = 47;
classes[1] = 128;
} else {
classes[0] = 22;
classes[1] = 311;
}
}
} else {
if (features[1] <= 0.23794686794281006) {
if (features[3] <= 0.24695706367492676) {
classes[0] = 51;
classes[1] = 132;
} else {
classes[0] = 352;
classes[1] = 3683;
}
} else {
if (features[3] <= 0.4766134023666382) {
classes[0] = 91;
classes[1] = 57;
} else {
classes[0] = 209;
classes[1] = 1278;
}
}
}
} else {
if (features[0] <= -0.01485772943124175) {
if (features[3] <= 0.46598660945892334) {
if (features[1] <= 0.23513969033956528) {
classes[0] = 80;
classes[1] = 30;
} else {
classes[0] = 83;
classes[1] = 4;
}
} else {
classes[0] = 38;
classes[1] = 42;
}
} else {
if (features[1] <= 0.24381835758686066) {
if (features[0] <= 0.017081347294151783) {
classes[0] = 37;
classes[1] = 60;
} else {
classes[0] = 72;
classes[1] = 437;
}
} else {
if (features[3] <= 0.4962599277496338) {
classes[0] = 84;
classes[1] = 43;
} else {
classes[0] = 23;
classes[1] = 66;
}
}
}
}
} else {
if (features[2] <= 0.012518306728452444) {
if (features[0] <= 0.011857263278216124) {
if (features[3] <= 0.44026511907577515) {
if (features[0] <= -0.025940910913050175) {
classes[0] = 155;
classes[1] = 2;
} else {
classes[0] = 122;
classes[1] = 13;
}
} else {
classes[0] = 58;
classes[1] = 38;
}
} else {
if (features[1] <= 0.21599827706813812) {
classes[0] = 44;
classes[1] = 86;
} else {
if (features[3] <= 0.4378824234008789) {
classes[0] = 145;
classes[1] = 37;
} else {
classes[0] = 57;
classes[1] = 55;
}
}
}
} else {
if (features[3] <= 0.4603644013404846) {
if (features[1] <= 0.21943768113851547) {
if (features[0] <= 0.021366839297115803) {
classes[0] = 131;
classes[1] = 4;
} else {
classes[0] = 58;
classes[1] = 25;
}
} else {
if (features[3] <= 0.42150408029556274) {
classes[0] = 982;
classes[1] = 19;
} else {
classes[0] = 237;
classes[1] = 14;
}
}
} else {
classes[0] = 84;
classes[1] = 26;
}
}
}
} else {
if (features[2] <= -0.047297170385718346) {
if (features[1] <= 0.40251147747039795) {
if (features[3] <= 0.6912856698036194) {
classes[0] = 114;
classes[1] = 25;
} else {
if (features[1] <= 0.3502514660358429) {
if (features[3] <= 0.7766227126121521) {
classes[0] = 29;
classes[1] = 74;
} else {
classes[0] = 64;
classes[1] = 516;
}
} else {
if (features[0] <= -0.027021611109375954) {
classes[0] = 84;
classes[1] = 236;
} else {
classes[0] = 72;
classes[1] = 30;
}
}
}
} else {
if (features[1] <= 0.4671569764614105) {
if (features[0] <= -0.05327927693724632) {
if (features[2] <= -0.0706191249191761) {
classes[0] = 43;
classes[1] = 41;
} else {
classes[0] = 99;
classes[1] = 40;
}
} else {
if (features[1] <= 0.4272315502166748) {
classes[0] = 67;
classes[1] = 18;
} else {
classes[0] = 121;
classes[1] = 9;
}
}
} else {
if (features[3] <= 1.3283718824386597) {
classes[0] = 137;
classes[1] = 16;
} else {
if (features[2] <= -0.08075670152902603) {
classes[0] = 75;
classes[1] = 5;
} else {
classes[0] = 453;
classes[1] = 4;
}
}
}
}
} else {
if (features[1] <= 0.3474765121936798) {
if (features[3] <= 0.5934110283851624) {
if (features[2] <= 0.003244615043513477) {
if (features[0] <= -0.03575599752366543) {
classes[0] = 330;
classes[1] = 39;
} else {
classes[0] = 360;
classes[1] = 138;
}
} else {
if (features[2] <= 0.01407763920724392) {
classes[0] = 607;
classes[1] = 57;
} else {
classes[0] = 2837;
classes[1] = 48;
}
}
} else {
if (features[2] <= -0.021189325489103794) {
if (features[0] <= 0.008428129367530346) {
classes[0] = 113;
classes[1] = 342;
} else {
classes[0] = 82;
classes[1] = 90;
}
} else {
if (features[2] <= 0.010304238181561232) {
classes[0] = 290;
classes[1] = 266;
} else {
classes[0] = 142;
classes[1] = 28;
}
}
}
} else {
if (features[2] <= 0.00489223818294704) {
if (features[1] <= 0.4410252124071121) {
if (features[0] <= -0.034201690927147865) {
classes[0] = 1971;
classes[1] = 653;
} else {
classes[0] = 2273;
classes[1] = 234;
}
} else {
if (features[3] <= 1.035286784172058) {
classes[0] = 1973;
classes[1] = 195;
} else {
classes[0] = 9665;
classes[1] = 144;
}
}
} else {
if (features[2] <= 0.016115683130919933) {
if (features[1] <= 0.4877214878797531) {
classes[0] = 2990;
classes[1] = 137;
} else {
classes[0] = 1448;
classes[1] = 18;
}
} else {
if (features[0] <= -0.04386013746261597) {
classes[0] = 7991;
classes[1] = 130;
} else {
classes[0] = 7008;
classes[1] = 44;
}
}
}
}
}
}

return findMax(classes);
};

};

function predict(NBSI, NDVI, NDVI_RE3, CL_RE){
var clf = new DecisionTreeClassifier();
return [1/(1+Math.exp(-1*clf.predict([NBSI, NDVI, NDVI_RE3, CL_RE])))];
}
"""

evalscript_ndvi = """
//VERSION=3
function setup() {
return {
input: [
{
bands: ["B04", "B08", "dataMask"],
}
],
output: [
{
id: "bands",
bands: ["NDVI"],
sampleType: SampleType.FLOAT32
},
{
id: "dataMask",
bands: 1
}
] };
}

function evaluatePixel(samples) {
return {
bands: [index(samples.B08, samples.B04)],
dataMask: [samples.dataMask]
};
}
"""
Loading