Statistical API Failed to evaluate script!\nundefined:1134: evaluatePixel must return an object containing arrays

I’m using statistical API via Python and I can’t figure out why the below code does not work. I get:

error’: {‘type’: ‘BAD_REQUEST’,
‘message’: ‘Failed to evaluate script!\nundefined:1134: evaluatePixel must return an object containing arrays\n throw “evaluatePixel must return an object containing arrays”;\n ^\n’}},

The code is:

evalscript =‘’’
//VERSION=3
function setup() {
return {
input: [“B01”,“B02”,“B03”,“B04”,“B05”,“B06”,“B07”,“B08”,“B8A”,“B09”,“B11”,“B12”,“SCL”,“dataMask”],
output: [
{id:“coastal_blue”,bands:1,sampleType:“UINT16”},
{id:“blue”,bands:1,sampleType:“UINT16”},
{id:“green”,bands:1,sampleType:“UINT16”},
{id:“red”,bands:1,sampleType:“UINT16”},
{id:“redegde1”,bands:1,sampleType:“UINT16”},
{id:“redegde2”,bands:1,sampleType:“UINT16”},
{id:“redegde3”,bands:1,sampleType:“UINT16”},
{id:“NIR_narrow”,bands:1,sampleType:“UINT16”},
{id:“NIR”,bands:1,sampleType:“UINT16”},
{id:“SWIR_Cirrus”,bands:1,sampleType:“UINT16”},
{id:“SWIR1”,bands:1,sampleType:“UINT16”},
{id:“SWIR2”,bands:1,sampleType:“UINT16”},
{id:“cloud_cover”,bands:1,sampleType: “UINT8”},
{id: “dataMask”,bands:1,sampleType:“UINT8”}
],
};
}

function cloud_detect(samples) {
var scl = samples.SCL;

if (scl === 1) { // SC_SATURATED_DEFECTIVE
    return 1;

} else if (scl === 3) { // SC_CLOUD_SHADOW
return 1;
} else if (scl === 6) { // SC_WATER
return 1;
} else if (scl === 7) { // SC_UNCLASSIFIED
return 1;
} else if (scl === 8) { // SC_CLOUD_MEDIUM_PROBA
return 1;
} else if (scl === 9) { // SC_CLOUD_HIGH_PROBA
return 1;
} else if (scl === 10) { // SC_THIN_CIRRUS
return 1;
} else if (scl === 11) { // SC_SNOW_ICE
return 1;
} else {
return 0;
}
}

function evaluatePixel(sample) {
var cloud_cover = cloud_detect(sample)
return {
coastal_blue: [10000sample.B01],
blue: [10000
sample.B02],
green: [10000sample.B03],
red: [10000
sample.B04],
rededge1: [10000sample.B05],
rededge2: [10000
sample.B06],
rededge3: [10000sample.B07],
NIR_narrow: [10000
sample.B8A],
NIR: [10000sample.B08],
SWIR_Cirrus: [10000
sample.B09],
SWIR1: [10000sample.B11],
SWIR2: [10000
sample.B12],
cloud_cover: [cloud_cover],
dataMask: [sample.dataMask]
}
}
‘’’

stats_request = {
“input”: {
“bounds”: {“geometry”: poly,“properties”: {“crs”: f"http://www.opengis.net/def/crs/EPSG/0/{EPSG_code}“}},
“data”: [{“type”: “sentinel-2-l2a”,“dataFilter”: {“mosaickingOrder”: “leastRecent”}}]
},
“aggregation”:{
“timeRange”:{“from”: f”{sd}T00:00:00Z",“to”: f"{ed}T00:00:00Z"},“aggregationInterval”:{“of”: “P1D”},
“evalscript”: evalscript,“resx”: res,“resy”: res
}
}

headers = {‘Content-Type’: ‘application/json’,‘Accept’: ‘application/json’}
url = “https://services.sentinel-hub.com/api/v1/statistics
response = oauth.request(“POST”, url=url , headers=headers, json=stats_request)
response.json()

These are the parameters:

poly = {‘type’: ‘Polygon’,
‘coordinates’: [[[543524.2066699625, 4913672.475454833],
[543301.7360189715, 4914182.25130983],
[543585.5990637002, 4914305.715457292],
[543636.2003406108, 4914324.679479339],
[543636.5445322505, 4914324.827200528],
[543662.5099398704, 4914337.441878019],
[543662.6089071627, 4914337.491664552],
[543676.3631063607, 4914344.651227288],
[543678.5419234377, 4914345.355938862],
[543902.1623488602, 4913826.227753871],
[543524.2066699625, 4913672.475454833]]]}

res = 10
sd = ‘2022-06-01’
ed = ‘2022-08-01’
EPSG_code = 32635

The forum website/app does not render the code properly, and I can’t upload a TXT file of the script, so here is a screenshot, hope it is clearer

Hi, I had a look into the errors for you. You are right, it didn’t render in correctly so thank you for attaching the screenshot.

Your error is actually a Typo in the inputs in the setup function. Whilst your outputs are “rededge1”, “rededge2” & “rededge3”, you defined them as “redegde1”, “redegde2” & “redegde3” in your inputs which is why the script doesn’t run.

Once you fix that, it should run smoothly :slight_smile:

Hi, thank you, that was the problem… I guess I looked at this script so long that my eyes got used to this typo.

I hope it will be possible in the future to attach txt files or jupyter notebooks to questions here, it will be very helpful.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.