From fb92fa0d1c30b2506fbf4def6c912aa4891b8276 Mon Sep 17 00:00:00 2001 From: ttenden Date: Mon, 26 Aug 2024 10:35:58 +0200 Subject: [PATCH] KPI ammonia emissions is now fully functional (including in the example input file) --- FarmmapsKPI/KPIApplication.cs | 2 +- FarmmapsKPI/KPIInput.json | 46 +++++++++++++++++++--------------- FarmmapsKPI/KPIdefinitions.csv | 2 +- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/FarmmapsKPI/KPIApplication.cs b/FarmmapsKPI/KPIApplication.cs index e3d8af9..66494dd 100644 --- a/FarmmapsKPI/KPIApplication.cs +++ b/FarmmapsKPI/KPIApplication.cs @@ -94,7 +94,7 @@ namespace FarmmapsKPI int nrun = 1; for (int run = 1; run <= nrun; run++) { for (int i = 0; i < fieldsInputs.Count; i++) - //for (int i = 2; i < 3; i++) // for testing + //for (int i = 3; i < 4; i++) // for testing { watch.Restart(); input = fieldsInputs[i]; diff --git a/FarmmapsKPI/KPIInput.json b/FarmmapsKPI/KPIInput.json index 6fdf94d..e24d7aa 100644 --- a/FarmmapsKPI/KPIInput.json +++ b/FarmmapsKPI/KPIInput.json @@ -13,8 +13,8 @@ "dataCropfield": { //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - "soilCode": "1", //From codelist CL405. Can be omitted if unknown - "soilName": "Sand", //From codelist CL405 + "soilCode": "1", //From codelist CL405. Can be no longer be omitted + "soilName": "Sand", "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 "productionPurposeCode": "003", //From codelist CL251. For testing, see case with consumption & starch potato @@ -77,7 +77,7 @@ "dataCropfield": { //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - "soilCode": "7", //From codelist CL405. Can be omitted if unknown + "soilCode": "7", //From codelist CL405. Can no longer be omitted "soilName": "Clay", //From codelist CL405 "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 @@ -141,7 +141,7 @@ "dataCropfield": { //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - "soilCode": "1", //From codelist CL405. Can be omitted if unknown + "soilCode": "1", //From codelist CL405. Can be no longer be omitted "soilName": "Sand", "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 @@ -199,8 +199,8 @@ "dataCropfield": { //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - //"soilCode": "5", //From codelist CL405. Can be omitted if unknown - //"soilName": "Loam", //From codelist CL405. + "soilCode": "5", //From codelist CL405. Can be no longer be omitted + "soilName": "Loam", //From codelist CL405. "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property @@ -220,7 +220,7 @@ "n": "92", //refers to codelist CL022 with fertilizer types & npk contents "name": "Kunstmest strooien", //refers to codelist CL127 with operation methods "product": "7360", //refers to codelist CL022 with fertilizer types - "type": "MOR", //indicates wether the fertilization is anorganic (MAN) or organic (MOR) + //"type": "MAN", //indicates wether the fertilization is anorganic (MAN) or organic (MOR) "quantity": "200", //"status": "3", // refers to codelist CL256. where 3 stand for completed. The status does not matter and is not used in the KPI calculations "operationCode": "7", // refers to codelist CL018 consisting of main catergorie of operations. Code 7 stands for fertilization @@ -241,7 +241,7 @@ //"status": "3", // refers to codelist CL256. where 3 stand for completed. The status does not matter and is not used in the KPI calculations "operationCode": "7", // refers to codelist CL018 consisting of main catergorie of operations. Code 7 stands for fertilization "product": "2329", //refers to codelist CL022 with fertilizer types - "type": "MAN",//indicates wether the fertilization is anorganic (MAN) or organic (MOR) + //"type": "MAN",//indicates wether the fertilization is anorganic (MAN) or organic (MOR) "quantity": "32000", "unitCode": "KGMHAR", "contractor": false, @@ -294,8 +294,8 @@ "dataCropfield": { //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - //"soilCode": "5", //From codelist CL405. Can be omitted if unknown - //"soilName": "Loam", //From codelist CL405. + "soilCode": "5", //From codelist CL405. Can be no longer be omitted + "soilName": "Loam", //From codelist CL405. "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property @@ -369,8 +369,8 @@ "dataCropfield": { //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - //"soilCode": "5", //From codelist CL405. Can be omitted if unknown - //"soilName": "Loam", //From codelist CL405. + "soilCode": "5", //From codelist CL405. Can be no longer be omitted + "soilName": "Loam", //From codelist CL405. "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property @@ -442,10 +442,10 @@ "fieldName": "caseQuoteNnotProvidedInDataOperations", "CropfieldItemCode": "", "dataCropfield": { + "soilCode": "1", //From codelist CL405. Can be no longer be omitted + "soilName": "Sand", //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - //"soilCode": "5", //From codelist CL405. Can be omitted if unknown - //"soilName": "Loam", //From codelist CL405. "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property @@ -517,6 +517,8 @@ "fieldName": "examplePesticide_11767N", "CropfieldItemCode": "", // could contain for example this: "abae97f89f3c4ac08953b1b8bea9f076" if this is an exisiting CropfieldItemCode in your account. "dataCropfield": { + "soilCode": "1", //From codelist CL405. Can be no longer be omitted + "soilName": "Sand", "final": true, //always true "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 @@ -588,6 +590,8 @@ "fieldName": "doperwt_heleJaar", "CropfieldItemCode": "", "dataCropfield": { + "soilCode": "1", //From codelist CL405. Can be no longer be omitted + "soilName": "Sand", "final": true, //always true "cropTypeCode": "1030101", //From codelist CL263 "cropTypeName": "Garden pea" //From codelist CL263 @@ -641,6 +645,8 @@ "fieldName": "doperwt_groeiperiode", "CropfieldItemCode": "", "dataCropfield": { + "soilCode": "1", //From codelist CL405. Can be no longer be omitted + "soilName": "Sand", "final": true, //always true "cropTypeCode": "1030101", //From codelist CL263 "cropTypeName": "Garden pea" //From codelist CL263 @@ -702,8 +708,8 @@ "dataCropfield": { //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - "soilCode": "1", //From codelist CL405. Can be omitted if unknown - "soilName": "Sand", //From codelist CL405 + "soilCode": "1", //From codelist CL405. Can be no longer be omitted + "soilName": "Sand", "cropTypeCode": "1020101", //From codelist CL263 "cropTypeName": "Winter wheat" //From codelist CL263 }, @@ -764,8 +770,8 @@ "dataCropfield": { //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - "soilCode": "1", //From codelist CL405. Can be omitted if unknown - "soilName": "Sand", //From codelist CL405 + "soilCode": "1", //From codelist CL405. Can be no longer be omitted + "soilName": "Sand", "cropTypeCode": "1020101", //From codelist CL263 "cropTypeName": "Winter wheat" //From codelist CL263 }, @@ -830,8 +836,8 @@ "dataCropfield": { //"area": 4.22, //Leave empty, KPI app will calculate it from geometry "final": true, //always true - "soilCode": "1", //From codelist CL405. Can be omitted if unknown - "soilName": "Sand", //From codelist CL405 + "soilCode": "1", //From codelist CL405. Can be no longer be omitted + "soilName": "Sand", "cropTypeCode": "1020101", //From codelist CL263 "cropTypeName": "Winter wheat" //From codelist CL263 }, diff --git a/FarmmapsKPI/KPIdefinitions.csv b/FarmmapsKPI/KPIdefinitions.csv index c140e48..17b6faf 100644 --- a/FarmmapsKPI/KPIdefinitions.csv +++ b/FarmmapsKPI/KPIdefinitions.csv @@ -21,7 +21,7 @@ D1,pesticides,"kg/ha of active ingredient. Sum over kg a.i. of the different cr E1,mpb,"milieubelastingspunten. For each pesticide applied show 3 sub-mbp's: aquaticLife, groundWater, soilLife",Retrieved from CTBG,"0 applications with exceedances of either the target MBP or risks. MBP's consist of three categories (groundwater, soil life, and aquatic life). An value of <100 in either or these categories counts as exceedance. Each application of pesticides cannot have more then one exceedance for MBP. Risks consist of two categories (natural enemies and pollinators), a value of B or C in either category counts as exceedance. Each application of pesticides cannot have more then one exceedance for risks. Values and methodology come from Environmental Yardstick for Pesticides (https://www.milieumeetlat.nl/). The same calculation method is also used in biodiversiteitsmonitoring akkerbouw (https://www.bo-akkerbouw.nl/kennis-en-innovatie/pps-biodiversiteitsmonitor-akkerbouw).","0 applications with exceedances of either the target MBP or risks. MBP's consist of three categories (groundwater, soil life, and aquatic life). An value of <10 in either or these categories counts as exceedance. Each application of pesticides cannot have more then one exceedance for MBP. Risks consist of two categories (natural enemies and pollinators), a value of B or C in either category counts as exceedance. Each application of pesticides cannot have more then one exceedance for risks. Values and methodology come from Environmental Yardstick for Pesticides (https://www.milieumeetlat.nl/). The same calculation method is also used in biodiversiteitsmonitoring akkerbouw (https://www.bo-akkerbouw.nl/kennis-en-innovatie/pps-biodiversiteitsmonitor-akkerbouw)." F1,greenness,time of year that the field was covered. ,Based on NDVI data from AgroDataCube.,Target value is 75%.,Threshold value is 25%. F2,rotationindex,index of diversity of crops over time. ,Calculated in AgroDataCube,Target value is 75%.,Threshold value is 25%. -G1,ammonia emissions,"ammonia emissions from crop residues, green manure, artificial fertilizers and organic fertilizers.",Calculated KPI internal model & parameters and from user input: fertilizer/manure applications.,There is not target value yet for this KPI. It currently has a dummy value of 9999.,There is not target value yet for this KPI. It currently has a dummy value of 9999. +G1,ammonia emissions,"ammonia emissions from crop residues, green manure, artificial fertilizers and organic fertilizers.",Calculated KPI internal model & parameters and from user input: fertilizer/manure applications.,There is not target value yet for this KPI. Currently has a dummy value of 9999.,There is not target value yet for this KPI. Currently has a dummy value of 9999. G1,Manure,ammonia emissions from manure.,Calculated KPI internal model & parameters and from user input: manure applications.,there are no target values for individual compenets of KPI's,there are no threshold values for individual compenets of KPI's G1,GreenManure,ammonia emissions from green manure (also called cover crop). ,Calculated KPI internal model & parameters.,there are no target values for individual compenets of KPI's,there are no threshold values for individual compenets of KPI's G1,CropResidues,ammonia emissions from crop residues. ,Calculated KPI internal model & parameters.,there are no target values for individual compenets of KPI's,there are no threshold values for individual compenets of KPI's