Skip to content

Instantly share code, notes, and snippets.

@mlubej
Last active November 2, 2021 11:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mlubej/28ba379ccf0be0b627ce1bb695d496fc to your computer and use it in GitHub Desktop.
Save mlubej/28ba379ccf0be0b627ce1bb695d496fc to your computer and use it in GitHub Desktop.
A proof-of-principle Sentinel Hub Evalscript for detecting mowing events on the pixel level
//VERSION=3
function setup() {
return {
input: ["B04", "B08", "CLP", "dataMask"],
output: {bands: 2, sampleType: SampleType.INT8},
mosaicking: "ORBIT"
}
}
function evaluatePixel(samples, scenes)
{
let dates = [];
let values = [];
for (let i = 0; i < samples.length; i++) {
var sample = samples[i];
var scene = scenes[i];
// define variables
let NDVI = index(sample.B08, sample.B04);
let CLP = sample.CLP/255.0;
let DM = sample.dataMask;
// keep non-cloudy obs.
if (CLP < CLP_THR && DM == 1) {
dates.push(scene.date);
values.push(NDVI);
}
var dataMask = 0;
var mowing_events = [];
if (dates.length > 0) {
dataMask = 1;
events = getMowingEvents(dates, values);
}
return [events.length, dataMask];
}
function getMowingEvents(dates, values)
{
// 1. find peaks & valleys
// 2. determine pixel-mowing candidates
// 3. apply filtering
// 4. ...
// 5. profit
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment