also write totalNapplied to csv file with KPI outputs per cropfield

This commit is contained in:
2023-10-16 15:34:07 +02:00
parent 1a9d5af5f6
commit 2d588026e2
4 changed files with 195 additions and 3 deletions

View File

@@ -288,6 +288,32 @@ namespace FarmmapsKPI
kpioPrevious = kpio;
}
//Total N applied
double totalNapplied = 0.0;
double operationNapplied;
JObject opData;
for (int i = 0; i < crpOperationItemCodes.Count; i++)
{
codeOperation = crpOperationItemCodes[i];
crpOperationItem = await _farmmapsApiService.GetItemAsync(codeOperation);
operationNapplied = crpOperationItem.Data.GetValue("n").ToObject<double>();
totalNapplied = totalNapplied + operationNapplied;
}
//Also add totalNapplied to the csv
dataList = new List<string> { };
//Seems sometimes duplicate KPI items are returned. So check that here and only write if this kpio is different from previous
dataList.Add(kpioPrevious.parentName);
dataList.Add(kpioPrevious.data.area);
dataList.Add(kpioPrevious.data.cropTypeCode);
dataList.Add(kpioPrevious.data.cropTypeName);
dataList.Add("");
dataList.Add("totalNapplied");
dataList.Add(totalNapplied.ToString());
dataList.Add(kpioPrevious.unit);
dataList.Add("");
dataList.Add("");
sw.WriteLine(string.Join(",", dataList));
//Clean up. Only newly created fields
//Look up instruction in Swagger / api / v1 / items /{ code}
if (useExistingCropfieldWithChildren == false && input.DeleteNewlyCreatedAfterCalc == true)

View File

@@ -64,6 +64,7 @@
},
{
"useExistingCropfieldWithChildren": false,
"deleteNewlyCreatedAfterCalc": true,
"CropfieldItemCode": "",
"dataCropfield": {
//"area": 4.22, //not needed for KPI calculation, but shown here to know this is a possible property
@@ -85,11 +86,11 @@
"contractor": false,
"designator": "Kunstmest strooien",
"from": "2022-05-23T11:34:00",
"method": "70400",
"method": "70400", //refers to codelist 127 with operation types
"n": "92",
"name": "Kunstmest strooien",
"operationCode": "7",
"product": "7360",
"product": "7360", //refers to codelist 022 with fertilizer types
"quantity": "200",
"status": "3",
"to": "2022-05-23T12:34:00",
@@ -151,6 +152,151 @@
]
]
}
},
{
"useExistingCropfieldWithChildren": false,
"deleteNewlyCreatedAfterCalc": true,
"CropfieldItemCode": "",
"dataCropfield": {
//"area": 4.22, //not needed for KPI calculation, but shown here to know this is a possible property
"final": true, //always true
//"soilCode": "5", //not needed for KPI calculation, but shown here to know this is a possible property
//"soilName": "Loam", //not needed for KPI calculation, but shown here to know this is a possible property
"cropTypeCode": "1010101",
"cropTypeName": "Potato",
//"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property
//"emergenceDate": "2022-05-16T00:00:00", //not needed for KPI calculation, but shown here to know this is a possible property
"productionPurposeCode": "003"
//"productionPurposeName": "consumption" //not needed for KPI calculation, but shown here to know this is a possible property
},
"CropRecordingItemCode": "",
"OperationItemCodes": [],
"dataOperations": [
{
"area": "0.08", //?!
"contractor": false,
"designator": "Kunstmest strooien",
"from": "2022-05-23T11:34:00",
"method": "70400",
"n": "92",
"name": "Kunstmest strooien",
"operationCode": "7",
"product": "7360",
"quantity": "200",
"status": "3",
"to": "2022-05-23T12:34:00",
"unit": "kg/ha",
"unitCode": "KGMHAR"
}
],
"CropfieldCharacteristicItemCode": "",
"DataCropfieldCharacteristic": {
"code": "860619", //PO20231004: so what does this code mean? Can we see the code list somewhere?
"label": "cropyield",
"value": "48.01"
},
//"DownloadFolder": "Downloads", //"C:\\hugoschrererdir\\kpidir\\", // "Downloads", -> if you just put "Downloads" the program will download to somewhere in ..\FarmMapsApiClient_WURtest\FarmmapsDataDownload\bin\Debug\netcoreapp3.1\Downloads\
"CropYear": 2022,
"fieldName": "aardappelveld_test_Potato_Urea92kgNha",
"geometryJson": {
"type": "Polygon",
"coordinates": [
[
[
5.5945257993548765,
52.57080744107003
],
[
5.598645994070678,
52.571540800206236
],
[
5.599381743127071,
52.57012773140724
],
[
5.595408698222548,
52.56968054825188
],
[
5.5945257993548765,
52.57080744107003
]
]
]
}
},
{
"useExistingCropfieldWithChildren": false,
"deleteNewlyCreatedAfterCalc": true,
"CropfieldItemCode": "",
"dataCropfield": {
//"area": 4.22, //not needed for KPI calculation, but shown here to know this is a possible property
"final": true, //always true
//"soilCode": "5", //not needed for KPI calculation, but shown here to know this is a possible property
//"soilName": "Loam", //not needed for KPI calculation, but shown here to know this is a possible property
"cropTypeCode": "1010101",
"cropTypeName": "Potato",
//"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property
//"emergenceDate": "2022-05-16T00:00:00", //not needed for KPI calculation, but shown here to know this is a possible property
"productionPurposeCode": "003"
//"productionPurposeName": "consumption" //not needed for KPI calculation, but shown here to know this is a possible property
},
"CropRecordingItemCode": "",
"OperationItemCodes": [],
"dataOperations": [
{
"area": "0.08", //?!
"contractor": false,
"designator": "Kunstmest strooien",
"from": "2022-05-23T11:34:00",
"method": "70400",
//"n": "92",
"name": "Kunstmest strooien",
"operationCode": "7",
"product": "7360",
"quantity": "200",
"status": "3",
"to": "2022-05-23T12:34:00",
"unit": "kg/ha",
"unitCode": "KGMHAR"
}
],
"CropfieldCharacteristicItemCode": "",
"DataCropfieldCharacteristic": {
"code": "860619", //PO20231004: so what does this code mean? Can we see the code list somewhere?
"label": "cropyield",
"value": "48.01"
},
//"DownloadFolder": "Downloads", //"C:\\hugoschrererdir\\kpidir\\", // "Downloads", -> if you just put "Downloads" the program will download to somewhere in ..\FarmMapsApiClient_WURtest\FarmmapsDataDownload\bin\Debug\netcoreapp3.1\Downloads\
"CropYear": 2022,
"fieldName": "aardappelveld_test_Potato_Urea200kgha",
"geometryJson": {
"type": "Polygon",
"coordinates": [
[
[
5.5945257993548765,
52.57080744107003
],
[
5.598645994070678,
52.571540800206236
],
[
5.599381743127071,
52.57012773140724
],
[
5.595408698222548,
52.56968054825188
],
[
5.5945257993548765,
52.57080744107003
]
]
]
}
}
]

View File

@@ -6,3 +6,4 @@ C1,organic matter supply,Organic matter surplus = Organic matter from manure + C
D1,pesticides,?
,KPItargetvalue,target value as in benchmark value for same crop in same region
,KPIthresholdValue,threshold from ??? Ask farmmaps. Surplus nitrogen / phosphate / pesticides must not be above threshold. Surplus organic matter supply must be above threshold
,totalNapplied,"Not a KPI output, simply calculated from the input operations with their respective ""n"" in their ""data"""
1 KPIid KPIvariable Description
6 D1 pesticides ?
7 KPItargetvalue target value as in benchmark value for same crop in same region
8 KPIthresholdValue threshold from ??? Ask farmmaps. Surplus nitrogen / phosphate / pesticides must not be above threshold. Surplus organic matter supply must be above threshold
9 totalNapplied Not a KPI output, simply calculated from the input operations with their respective "n" in their "data"