aw6374: climate calculation in modelyear 2025
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good

This commit is contained in:
2025-03-10 08:11:51 +01:00
parent fcbb6c9356
commit 710e73b5f0
2 changed files with 2358 additions and 107 deletions

View File

@@ -232,98 +232,8 @@ namespace FarmMapsAPI.Carbon
public CarbonSummary CalculateClimateScenario(CarbonRequest farmInput)
{
var simpleResult = Calculate(farmInput);
var carbonResultList = new List<CarbonSummary>();
var knmiFile = Helper.GetPlatformIndependentDirectoryPath(Path.Combine(configPath, "KNMI_data.csv"));
var climateFile = Helper.GetPlatformIndependentDirectoryPath(Path.Combine(configPath, "klimaatscenario.csv"));
for (int i = 1; i < 9; i++)
{
var climateData = InitClimateFile(knmiFile, climateFile, i);
var result = Calculate(farmInput, i, climateData);
carbonResultList.Add(result);
}
var carbonTotal = new List<CarbonSummaryList>();
var summaryTotal = new CarbonSummaryList { CropFieldClimate = new List<CropFieldSummaryList>(), CarbonSummary = simpleResult };
var cropFieldSummaryList = new CropFieldSummaryList { Name = carbonResultList[0].CropField[0].Name, SummaryList = new List<YearSummaryClimate>() };
for(var year = 2011; year < 2051; year++)
{
var yearData = carbonResultList.SelectMany(x => x.CropField[0].Summary.Where(x => x.Year == year)).ToList();
if (yearData.Count == 0)
{
continue;
}
var buldensityData = GetMinMaxMedian(yearData, year, "Bulk_Density");
var balanceData = GetMinMaxMedian(yearData, year, "Balance");
var initialData = GetMinMaxMedian(yearData, year, "Initial");
var om_iniData = GetMinMaxMedian(yearData, year, "OM_ini");
var iniCcontentData = GetMinMaxMedian(yearData, year, "IniCcontent");
var co2seqData = GetMinMaxMedian(yearData, year, "CO2seq");
var soc_CarbonCompostData = GetMinMaxMedian(yearData, year, "SOC_CarbonCompost");
var soc_CarbonGreenManure = GetMinMaxMedian(yearData, year, "SOC_CarbonGreenManure");
var soc_CarbonResiduesData = GetMinMaxMedian(yearData, year, "SOC_CarbonResidues");
var soc_CarbonManureManure = GetMinMaxMedian(yearData, year, "SOC_CarbonManure");
var emisionData = GetMinMaxMedian(yearData, year, "Emision");
cropFieldSummaryList.SummaryList.Add(new YearSummaryClimate
{
Year = year,
Bulk_Density = buldensityData,
Balance = balanceData,
Initial = initialData,
IniCcontent = iniCcontentData,
OM_ini = om_iniData,
CO2seq = co2seqData,
SOC_CarbonCompost = soc_CarbonCompostData,
SOC_CarbonGreenManure = soc_CarbonGreenManure,
SOC_CarbonResidues = soc_CarbonResiduesData,
SOC_CarbonManure = soc_CarbonManureManure,
Emision = emisionData,
Crop = yearData[0].Crop,
Total_crop_area = yearData[0].Total_crop_area,
});
}
summaryTotal.CropFieldClimate.Add(cropFieldSummaryList);
foreach(var yearSummary in summaryTotal.CarbonSummary.CropField[0].Summary)
{
//var yearValues = summaryTotal.CropFieldClimate.Where(x => x.SummaryList[0].Year == yearSummary.Year).Select(y => y.SummaryList[0]).ToList();
var yearValues = summaryTotal.CropFieldClimate[0].SummaryList.Where(x => x.Year == yearSummary.Year).ToList();
foreach (var cropFieldClimate in summaryTotal.CropFieldClimate)
{
var yeardata = cropFieldClimate.SummaryList.Where(x => x.Year == yearSummary.Year);
var test = yeardata.Select(x => x.Bulk_Density).First()[1];
}
var Bulk_Density = yearValues.Select(x => x.Bulk_Density).First()[1];
var balance = yearValues.Select(x => x.Balance).First()[1];
var Initial = yearValues.Select(x => x.Initial).First()[1];
var IniCcontent = yearValues.Select(x => x.IniCcontent).First()[1];
var OM_ini = yearValues.Select(x => x.OM_ini).First()[1];
var CO2seq = yearValues.Select(x => x.CO2seq).First()[1];
var SOC_CarbonCompost = yearValues.Select(x => x.SOC_CarbonCompost).First()[1];
var SOC_CarbonGreenManure = yearValues.Select(x => x.SOC_CarbonGreenManure).First()[1];
var SOC_CarbonResidues = yearValues.Select(x => x.SOC_CarbonResidues).First()[1];
var SOC_CarbonManure = yearValues.Select(x => x.SOC_CarbonManure).First()[1];
var Emision = yearValues.Select(x => x.Emision).First()[1];
yearSummary.Bulk_Density = Bulk_Density;
yearSummary.Initial = Initial;
yearSummary.IniCcontent = IniCcontent;
yearSummary.OM_ini = OM_ini;
yearSummary.OM_ini_Climate = yearValues.Select(x => x.OM_ini).First();
yearSummary.CO2seq = CO2seq;
yearSummary.SOC_CarbonCompost = SOC_CarbonCompost;
yearSummary.SOC_CarbonGreenManure = SOC_CarbonGreenManure;
yearSummary.SOC_CarbonResidues = SOC_CarbonResidues;
yearSummary.SOC_CarbonManure = SOC_CarbonManure;
yearSummary.Emision = Emision;
}
return summaryTotal.CarbonSummary;
var simpleResult = Calculate(farmInput);
return simpleResult;
}
private List<double> GetMinMaxMedian(List<YearSummary> yearData, int year, string varName)

File diff suppressed because it is too large Load Diff