KPI ammonia emissions is now fully functional (including in the example input file)

This commit is contained in:
ttenden 2024-08-26 10:35:58 +02:00
parent 67e5cb6bb4
commit fb92fa0d1c
3 changed files with 28 additions and 22 deletions

View File

@ -94,7 +94,7 @@ namespace FarmmapsKPI
int nrun = 1; int nrun = 1;
for (int run = 1; run <= nrun; run++) { for (int run = 1; run <= nrun; run++) {
for (int i = 0; i < fieldsInputs.Count; i++) 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(); watch.Restart();
input = fieldsInputs[i]; input = fieldsInputs[i];

View File

@ -13,8 +13,8 @@
"dataCropfield": { "dataCropfield": {
//"area": 4.22, //Leave empty, KPI app will calculate it from geometry //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "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", //From codelist CL405 "soilName": "Sand",
"cropTypeCode": "1010101", //From codelist CL263 "cropTypeCode": "1010101", //From codelist CL263
"cropTypeName": "Potato", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263
"productionPurposeCode": "003", //From codelist CL251. For testing, see case with consumption & starch potato "productionPurposeCode": "003", //From codelist CL251. For testing, see case with consumption & starch potato
@ -77,7 +77,7 @@
"dataCropfield": { "dataCropfield": {
//"area": 4.22, //Leave empty, KPI app will calculate it from geometry //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "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 "soilName": "Clay", //From codelist CL405
"cropTypeCode": "1010101", //From codelist CL263 "cropTypeCode": "1010101", //From codelist CL263
"cropTypeName": "Potato", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263
@ -141,7 +141,7 @@
"dataCropfield": { "dataCropfield": {
//"area": 4.22, //Leave empty, KPI app will calculate it from geometry //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "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", "soilName": "Sand",
"cropTypeCode": "1010101", //From codelist CL263 "cropTypeCode": "1010101", //From codelist CL263
"cropTypeName": "Potato", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263
@ -199,8 +199,8 @@
"dataCropfield": { "dataCropfield": {
//"area": 4.22, //Leave empty, KPI app will calculate it from geometry //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "final": true, //always true
//"soilCode": "5", //From codelist CL405. Can be omitted if unknown "soilCode": "5", //From codelist CL405. Can be no longer be omitted
//"soilName": "Loam", //From codelist CL405. "soilName": "Loam", //From codelist CL405.
"cropTypeCode": "1010101", //From codelist CL263 "cropTypeCode": "1010101", //From codelist CL263
"cropTypeName": "Potato", //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 //"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 "n": "92", //refers to codelist CL022 with fertilizer types & npk contents
"name": "Kunstmest strooien", //refers to codelist CL127 with operation methods "name": "Kunstmest strooien", //refers to codelist CL127 with operation methods
"product": "7360", //refers to codelist CL022 with fertilizer types "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", "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 //"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 "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 //"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 "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 "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", "quantity": "32000",
"unitCode": "KGMHAR", "unitCode": "KGMHAR",
"contractor": false, "contractor": false,
@ -294,8 +294,8 @@
"dataCropfield": { "dataCropfield": {
//"area": 4.22, //Leave empty, KPI app will calculate it from geometry //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "final": true, //always true
//"soilCode": "5", //From codelist CL405. Can be omitted if unknown "soilCode": "5", //From codelist CL405. Can be no longer be omitted
//"soilName": "Loam", //From codelist CL405. "soilName": "Loam", //From codelist CL405.
"cropTypeCode": "1010101", //From codelist CL263 "cropTypeCode": "1010101", //From codelist CL263
"cropTypeName": "Potato", //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 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property
@ -369,8 +369,8 @@
"dataCropfield": { "dataCropfield": {
//"area": 4.22, //Leave empty, KPI app will calculate it from geometry //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "final": true, //always true
//"soilCode": "5", //From codelist CL405. Can be omitted if unknown "soilCode": "5", //From codelist CL405. Can be no longer be omitted
//"soilName": "Loam", //From codelist CL405. "soilName": "Loam", //From codelist CL405.
"cropTypeCode": "1010101", //From codelist CL263 "cropTypeCode": "1010101", //From codelist CL263
"cropTypeName": "Potato", //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 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property
@ -442,10 +442,10 @@
"fieldName": "caseQuoteNnotProvidedInDataOperations", "fieldName": "caseQuoteNnotProvidedInDataOperations",
"CropfieldItemCode": "", "CropfieldItemCode": "",
"dataCropfield": { "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 //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "final": true, //always true
//"soilCode": "5", //From codelist CL405. Can be omitted if unknown
//"soilName": "Loam", //From codelist CL405.
"cropTypeCode": "1010101", //From codelist CL263 "cropTypeCode": "1010101", //From codelist CL263
"cropTypeName": "Potato", //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 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property
@ -517,6 +517,8 @@
"fieldName": "examplePesticide_11767N", "fieldName": "examplePesticide_11767N",
"CropfieldItemCode": "", // could contain for example this: "abae97f89f3c4ac08953b1b8bea9f076" if this is an exisiting CropfieldItemCode in your account. "CropfieldItemCode": "", // could contain for example this: "abae97f89f3c4ac08953b1b8bea9f076" if this is an exisiting CropfieldItemCode in your account.
"dataCropfield": { "dataCropfield": {
"soilCode": "1", //From codelist CL405. Can be no longer be omitted
"soilName": "Sand",
"final": true, //always true "final": true, //always true
"cropTypeCode": "1010101", //From codelist CL263 "cropTypeCode": "1010101", //From codelist CL263
"cropTypeName": "Potato", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263
@ -588,6 +590,8 @@
"fieldName": "doperwt_heleJaar", "fieldName": "doperwt_heleJaar",
"CropfieldItemCode": "", "CropfieldItemCode": "",
"dataCropfield": { "dataCropfield": {
"soilCode": "1", //From codelist CL405. Can be no longer be omitted
"soilName": "Sand",
"final": true, //always true "final": true, //always true
"cropTypeCode": "1030101", //From codelist CL263 "cropTypeCode": "1030101", //From codelist CL263
"cropTypeName": "Garden pea" //From codelist CL263 "cropTypeName": "Garden pea" //From codelist CL263
@ -641,6 +645,8 @@
"fieldName": "doperwt_groeiperiode", "fieldName": "doperwt_groeiperiode",
"CropfieldItemCode": "", "CropfieldItemCode": "",
"dataCropfield": { "dataCropfield": {
"soilCode": "1", //From codelist CL405. Can be no longer be omitted
"soilName": "Sand",
"final": true, //always true "final": true, //always true
"cropTypeCode": "1030101", //From codelist CL263 "cropTypeCode": "1030101", //From codelist CL263
"cropTypeName": "Garden pea" //From codelist CL263 "cropTypeName": "Garden pea" //From codelist CL263
@ -702,8 +708,8 @@
"dataCropfield": { "dataCropfield": {
//"area": 4.22, //Leave empty, KPI app will calculate it from geometry //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "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", //From codelist CL405 "soilName": "Sand",
"cropTypeCode": "1020101", //From codelist CL263 "cropTypeCode": "1020101", //From codelist CL263
"cropTypeName": "Winter wheat" //From codelist CL263 "cropTypeName": "Winter wheat" //From codelist CL263
}, },
@ -764,8 +770,8 @@
"dataCropfield": { "dataCropfield": {
//"area": 4.22, //Leave empty, KPI app will calculate it from geometry //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "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", //From codelist CL405 "soilName": "Sand",
"cropTypeCode": "1020101", //From codelist CL263 "cropTypeCode": "1020101", //From codelist CL263
"cropTypeName": "Winter wheat" //From codelist CL263 "cropTypeName": "Winter wheat" //From codelist CL263
}, },
@ -830,8 +836,8 @@
"dataCropfield": { "dataCropfield": {
//"area": 4.22, //Leave empty, KPI app will calculate it from geometry //"area": 4.22, //Leave empty, KPI app will calculate it from geometry
"final": true, //always true "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", //From codelist CL405 "soilName": "Sand",
"cropTypeCode": "1020101", //From codelist CL263 "cropTypeCode": "1020101", //From codelist CL263
"cropTypeName": "Winter wheat" //From codelist CL263 "cropTypeName": "Winter wheat" //From codelist CL263
}, },

View File

@ -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)." 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%. 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%. 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,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,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 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

1 KPIid KPIvariable Description Calculated KPItargetvalue KPIthresholdValue
21 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).
22 F1 greenness time of year that the field was covered. Based on NDVI data from AgroDataCube. Target value is 75%. Threshold value is 25%.
23 F2 rotationindex index of diversity of crops over time. Calculated in AgroDataCube Target value is 75%. Threshold value is 25%.
24 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. Currently has a dummy value of 9999. 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. Currently has a dummy value of 9999.
25 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
26 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
27 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