Skip to content

Commit

Permalink
Applied factor on soil component results
Browse files Browse the repository at this point in the history
  • Loading branch information
paulthatjazz committed Jul 3, 2024
1 parent 37d0ed8 commit 2621d10
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ async function renderCategoricalData(extent: Extent, zoom: number, maskMode: boo
return result
}

async function renderNumericData(extent: Extent, zoom: number, maskMode: boolean, maskLayer: string, maskCQL: string, map: string, coverageId: string) {
async function renderNumericData(extent: Extent, zoom: number, maskMode: boolean, maskLayer: string, maskCQL: string, map: string, coverageId: string, factor: number = 1.0) {

const tileGrid = createXYZ()
const mask = await maskFromExtentAndShape(extent, zoom, maskLayer, maskCQL, maskMode)
Expand All @@ -70,7 +70,7 @@ async function renderNumericData(extent: Extent, zoom: number, maskMode: boolean
let y = (outputTileRange.minY + Math.floor(i / image.getWidth()))

const value = rasters[0][i]
result.set(x, y, mask.get(x, y) ? ((value === 255 || value < 0 || value === 32767) ? NaN : value) : NaN)
result.set(x, y, mask.get(x, y) ? ((value === 255 || value < 0 || value === 32767) ? NaN : value / factor) : NaN)

}

Expand Down Expand Up @@ -168,7 +168,7 @@ export class SoilComponent extends BaseComponent {

}else{

outputs[`${opt.name}-${opt.map}`] = await renderNumericData(this.projectExtent, this.projectZoom, this.maskMode, this.maskLayer, this.maskCQL, opt.map, opt.coverageId)
outputs[`${opt.name}-${opt.map}`] = await renderNumericData(this.projectExtent, this.projectZoom, this.maskMode, this.maskLayer, this.maskCQL, opt.map, opt.coverageId, opt.factor)

}
})
Expand Down
38 changes: 26 additions & 12 deletions app/javascript/projects/modelling/isric_soil_filters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ interface SoilGridOptions {
map: string
coverageId: string
outputSocket: Socket
factor?: number
}

// Soil types from the World Reference Base for Soil Resources, used for labelling cat data
Expand Down Expand Up @@ -79,43 +80,49 @@ export const SoilGridOptions : SoilGridOptions[] = [
name: 'Mean (<30cm)',
map: 'ocs',
coverageId: 'ocs_0-30cm_mean',
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: 10
},
{
SCOId: 2,
name: 'Q0.05 (<30cm)',
map: 'ocs',
coverageId: 'ocs_0-30cm_Q0.05',
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: 10
},
{
SCOId: 2,
name: 'Q0.5 (<30cm)',
map: 'ocs',
coverageId: 'ocs_0-30cm_Q0.5',
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: 10

},
{
SCOId: 2,
name: 'Q0.95 (<30cm)',
map: 'ocs',
coverageId: 'ocs_0-30cm_Q0.95',
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: 10

},
{
SCOId: 2,
name: 'Uncertainty (<30cm)',
map: 'ocs',
coverageId: 'ocs_0-30cm_uncertainty',
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: 10
}

]

const ranges = [0, 5, 15, 30, 60, 100, 200]
const maps = ['ocd', 'soc', 'bdod', 'cec', 'cfvo', 'clay', 'nitrogen', 'phh2o', 'sand', 'silt', 'wv1500', 'wv0033', 'wv0010']
const factors = [10, 10, 100, 10, 10, 10, 100, 10, 10, 10, 10, 10, 10]

for(let i = 0; i < ranges.length - 1; i++) {
const range = `${ranges[i]}-${ranges[i+1]}cm`
Expand All @@ -125,35 +132,40 @@ for(let i = 0; i < ranges.length - 1; i++) {
name: `Mean (${i === 0 ? '<5cm' : range})`,
map,
coverageId: `${map}_${range}_mean`,
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: factors[x]
})
SoilGridOptions.push({
SCOId: 3+x,
name: `Q0.05 (${i === 0 ? '<5cm' : range})`,
map,
coverageId: `${map}_${range}_Q0.05`,
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: factors[x]
})
SoilGridOptions.push({
SCOId: 3+x,
name: `Q0.5 (${i === 0 ? '<5cm' : range})`,
map,
coverageId: `${map}_${range}_Q0.5`,
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: factors[x]
})
SoilGridOptions.push({
SCOId: 3+x,
name: `Q0.95 (${i === 0 ? '<5cm' : range})`,
map,
coverageId: `${map}_${range}_Q0.95`,
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: factors[x]
})
SoilGridOptions.push({
SCOId: 3+x,
name: `Uncertainty (${i === 0 ? '<5cm' : range})`,
map,
coverageId: `${map}_${range}_uncertainty`,
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: factors[x]
})
})
}
Expand All @@ -165,14 +177,16 @@ ERBSoilTypes.forEach((soilType, index) => {
name: soilType,
map: 'wrb',
coverageId: 'MostProbable',
outputSocket: booleanDataSocket
outputSocket: booleanDataSocket,
factor: 1
})
SoilGridOptions.push({
SCOId: 1,
name: soilType,
map: 'wrb',
coverageId: soilType,
outputSocket: numericDataSocket
outputSocket: numericDataSocket,
factor: 1

})
})

0 comments on commit 2621d10

Please sign in to comment.