94 Commits

Author SHA1 Message Date
cff1942865 Merged develop into master
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-12-10 13:58:21 +01:00
ed036640b3 cleanup
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-12-09 14:47:49 +01:00
2f4be34aa9 cleanup
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-12-09 14:44:36 +01:00
be5996372c readme
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-12-09 14:36:16 +01:00
0e8be57d43 aw7152: namespace change
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-12-09 13:41:19 +01:00
0ff0a44fdb aw7152: open source, moved lib to sub folder, added console app
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-12-09 10:42:43 +01:00
03f2b95e53 aw7152: make lib open source, remove farmmaps dependencies
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-12-09 10:02:31 +01:00
jenkins
d08ef7c6b5 Updated project references #144
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-10-16 08:18:53 +00:00
jenkins
4e13da52e2 [ci skip] Updated project references #119
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2025-08-21 14:35:26 +00:00
jenkins
a5b6c9ec08 Updated project references #118
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-08-21 14:06:23 +00:00
jenkins
3cb1193ef5 [ci skip] Updated project references #117
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-08-21 13:34:54 +00:00
jenkins
da2788842b Updated project references #116
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-08-21 13:13:14 +00:00
jenkins
6413805154 [ci skip] Updated project references #115
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-08-21 10:44:47 +00:00
jenkins
8563a97ff0 Updated project references #114
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-08-21 10:13:04 +00:00
jenkins
ba8727a3e8 [ci skip] Updated project references #113
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-08-21 09:46:12 +00:00
jenkins
cb6f93fe14 Updated project references #112
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-08-21 09:26:34 +00:00
jenkins
2362128312 [ci skip] Updated project references #111
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-06-19 11:18:57 +00:00
jenkins
7ccc064e69 Updated project references #110
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-06-19 10:35:35 +00:00
jenkins
30df488707 [ci skip] Updated project references #109
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-06-19 10:09:35 +00:00
jenkins
714346b479 Updated project references #108
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-06-19 09:43:10 +00:00
d760f4dffd Merged develop into master
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-06-19 11:16:43 +02:00
jenkins
a95635fdca [ci skip] Updated project references #133
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-04-10 14:43:49 +00:00
jenkins
b653d7be9f Updated project references #132
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-04-10 14:38:58 +00:00
jenkins
6cc591204e [ci skip] Updated project references #131
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-04-09 12:08:28 +00:00
5e6f2f4629 AW-6139 Migratie naar .NET 8
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-04-09 14:07:46 +02:00
jenkins
32ac3c5de6 [ci skip] Updated project references #107
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2025-04-04 16:03:13 +00:00
jenkins
8e6b8d841e Updated project references #106
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-04 14:47:03 +00:00
jenkins
1a9e2d549b [ci skip] Updated project references #105
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-04 13:38:25 +00:00
jenkins
e02ca34281 Updated project references #104
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-04 13:02:28 +00:00
e93c282505 Merged develop into master
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-04 14:26:55 +02:00
jenkins
db213f41df [ci skip] Updated project references #126
Some checks failed
FarmMaps.Develop/CarbonLib/pipeline/head There was a failure building this commit
2025-04-04 08:58:29 +00:00
jenkins
5ae8dc6611 Updated project references #125
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-04-04 08:48:18 +00:00
jenkins
aaa2ebea25 [ci skip] Updated project references #103
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2025-04-03 14:20:34 +00:00
jenkins
e82ba2bbe5 Updated project references #102
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-03 13:54:07 +00:00
jenkins
57b930ff38 [ci skip] Updated project references #101
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-03 13:28:49 +00:00
jenkins
0e18c12436 Updated project references #100
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-03 13:13:47 +00:00
jenkins
204b926128 [ci skip] Updated project references #99
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-03 10:34:33 +00:00
jenkins
0ebc86674b Updated project references #98
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-03 10:04:52 +00:00
jenkins
d1b31452da [ci skip] Updated project references #97
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-03 09:39:11 +00:00
jenkins
9eb1699986 Updated project references #96
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-04-03 09:27:18 +00:00
370869ea72 fix median of balance
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-03-28 14:23:00 +01:00
710e73b5f0 aw6374: climate calculation in modelyear 2025
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-03-10 08:11:51 +01:00
fcbb6c9356 aw6374: modelYear as string
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-03-07 20:37:55 +01:00
jenkins
f1f742d434 [ci skip] Updated project references #121
Some checks reported errors
FarmMaps.Develop/CarbonLib/pipeline/head Something is wrong with the build of this commit
2025-02-17 07:30:45 +00:00
8651f534c9 aw6383: climate scenario
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2025-02-17 08:27:19 +01:00
jenkins
7fc0084a41 [ci skip] Updated project references #95
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-01-29 15:53:42 +00:00
jenkins
1ea260dee0 Updated project references #94
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-01-29 15:23:02 +00:00
jenkins
8ab217f534 [ci skip] Updated project references #93
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-01-29 14:57:49 +00:00
jenkins
1eef5faae2 Updated project references #92
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-01-29 14:46:13 +00:00
579a2d9b8d Merged develop into master
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-01-29 15:21:33 +01:00
jenkins
988a23963c Updated project references #119
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-12-16 09:18:32 +00:00
jenkins
5be21f548f [ci skip] Updated project references #116
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-12-09 17:50:04 +00:00
jenkins
99b58cd618 Updated project references #115
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-12-09 17:41:35 +00:00
jenkins
2617e52a83 [ci skip] Updated project references #91
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-12-09 14:17:10 +00:00
jenkins
b935b3967c Updated project references #90
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-12-09 13:47:42 +00:00
jenkins
c227461eee [ci skip] Updated project references #89
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-12-09 13:17:46 +00:00
jenkins
6f0669ff4c Updated project references #88
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-12-09 13:01:48 +00:00
f12e735dd6 Merged develop into master
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-12-09 13:02:30 +01:00
eb2e80d312 aw6383: cleanup
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-11-17 15:01:27 +01:00
25ee9ff819 aw6373: init property
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-11-14 15:57:10 +01:00
9e63a86e1e aw6373: ignore property
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-11-14 15:21:37 +01:00
346b6eaf78 aw6373: read organic matter from eurofins if available
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-11-14 13:51:34 +01:00
jenkins
7f510c7c8e Updated project references #109
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-10-29 13:00:18 +00:00
jenkins
d1dff49fea [ci skip] Updated project references #87
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-10-23 07:21:15 +00:00
jenkins
c0f855d505 Updated project references #86
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-10-23 06:51:24 +00:00
jenkins
ef07bdef0b [ci skip] Updated project references #85
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-10-23 06:26:38 +00:00
jenkins
7658cf9c66 Updated project references #84
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-10-23 06:05:16 +00:00
bfee63f562 Merged develop into master
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-10-23 00:08:41 +02:00
4416146ff4 aw6374: each year new calculation model; fix OM -> Carbon switch, calculation based on carbon
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-10-15 08:52:36 +02:00
jenkins
06b7b252f5 [ci skip] Updated project references #105
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-10-10 10:10:04 +00:00
jenkins
5369cbc59f Updated project references #104
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-10-10 10:00:31 +00:00
jenkins
9189592655 Updated project references #101
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-10-09 14:39:08 +00:00
jenkins
e2cb0649b5 [ci skip] Updated project references #82
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-09-24 21:07:08 +00:00
jenkins
74e30a0c80 Updated project references #81
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-09-24 20:36:33 +00:00
jenkins
d973289d4c [ci skip] Updated project references #80
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-09-24 20:06:16 +00:00
jenkins
23b6a0d620 Updated project references #79
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-09-24 19:44:31 +00:00
jenkins
65e4ed4755 Updated project references #77
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-09-24 19:22:11 +00:00
jenkins
d1a8976785 [ci skip] Updated project references #76
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-09-24 18:52:24 +00:00
jenkins
c6b7133d94 Updated project references #75
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-09-24 18:27:01 +00:00
jenkins
efa893dd47 Updated project references #99
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-09-18 10:02:03 +00:00
jenkins
2c3041f27c Updated project references #98
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-09-18 09:55:11 +00:00
f480970ab7 Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/CarbonLib into develop
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-09-02 09:29:13 +02:00
9e11b5e845 aw6355: undo this new solution... 2024-09-02 09:28:40 +02:00
jenkins
3fab1b48a0 [ci skip] Updated project references #96
Some checks reported errors
FarmMaps.Develop/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-09-02 06:20:30 +00:00
c89607ebbc aw6355: new solution organic matter/carbon factor
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-09-02 08:19:47 +02:00
jenkins
d20fe7d3c4 [ci skip] Updated project references #95
Some checks reported errors
FarmMaps.Develop/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-08-27 12:53:00 +00:00
666cc07979 aw6355: fix organic matter/carbon factor (0.54)
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-08-27 14:52:09 +02:00
jenkins
6a1ab4dc8a [ci skip] Updated project references #74
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-08-26 14:18:19 +00:00
jenkins
cd3a991157 Updated project references #73
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-08-26 13:46:57 +00:00
jenkins
075d5a6081 [ci skip] Updated project references #72
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-08-26 13:16:34 +00:00
jenkins
f78deaca8a Updated project references #71
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-08-26 12:51:17 +00:00
jenkins
1255865fb4 Updated project references #69
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-08-26 08:33:24 +00:00
jenkins
76a7adba55 [ci skip] Updated project references #68
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-08-26 08:07:22 +00:00
jenkins
0dafbf3250 Updated project references #67
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-08-26 07:51:41 +00:00
85 changed files with 116710 additions and 20180 deletions

View File

@@ -0,0 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\CarbonLib\CarbonLib.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="config24\*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config24\Mapping\*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config25\*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config25\Mapping\*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<None Update="Input.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.14.36414.22 d17.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CarbonConsoleApp", "CarbonConsoleApp.csproj", "{C5B1B8B2-0BAD-451E-95B6-FCCA898E4308}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C5B1B8B2-0BAD-451E-95B6-FCCA898E4308}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5B1B8B2-0BAD-451E-95B6-FCCA898E4308}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C5B1B8B2-0BAD-451E-95B6-FCCA898E4308}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5B1B8B2-0BAD-451E-95B6-FCCA898E4308}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {436FBE19-E06A-4510-8714-CDED7BE0528F}
EndGlobalSection
EndGlobal

331
CarbonConsoleApp/Input.txt Normal file
View File

@@ -0,0 +1,331 @@
{
"geometry": null,
"PostalCode": 9797,
"CropFields": [
{
"Name": "082acba5b448433a86700fde3874a333",
"Area": 5.63,
"SoilType": "Klei",
"SoilProperty": {
"OM_Const": 2.28,
"C_Const": null,
"OM_Choice": "o",
"Clay_Content": 30.0,
"Depth10": false,
"Depth": 25
},
"HistoricalCropData": [
{
"Year": 2013,
"Crops": [
{
"Crop": "Sugarbeet",
"OrganicManures": [
{
"Type": "COMPOST",
"Quantity": 15.0
}
],
"CropYield": 91700.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2014,
"Crops": [
{
"Crop": "fodder_maize",
"OrganicManures": [],
"CropYield": 48200.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2015,
"Crops": [
{
"Crop": "Onion",
"OrganicManures": [],
"CropYield": 60400.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2016,
"Crops": [
{
"Crop": "Cons_pot_clay",
"OrganicManures": [],
"CropYield": 48000.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2017,
"Crops": [
{
"Crop": "Sugarbeet",
"OrganicManures": [],
"CropYield": 106400.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2018,
"Crops": [
{
"Crop": "Winter_wheat",
"OrganicManures": [],
"CropYield": 9700.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2019,
"Crops": [
{
"Crop": "Winter_wheat",
"OrganicManures": [],
"CropYield": 10400.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2020,
"Crops": [
{
"Crop": "Onion",
"OrganicManures": [],
"CropYield": 47700.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2021,
"Crops": [
{
"Crop": "Cons_pot_clay",
"OrganicManures": [
{
"Type": "VMSTAL",
"Quantity": 20.0
},
{
"Type": "COMPOST",
"Quantity": 18.0
}
],
"CropYield": 44900.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2022,
"Crops": [
{
"Crop": "Winter_wheat",
"OrganicManures": [],
"CropYield": 10400.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2023,
"Crops": [
{
"Crop": "Onion",
"OrganicManures": [],
"CropYield": 47700.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2024,
"Crops": [
{
"Crop": "Cons_pot_clay",
"OrganicManures": [],
"CropYield": 44900.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2025,
"Crops": [
{
"Crop": "Winter_wheat",
"OrganicManures": [],
"CropYield": 10400.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2026,
"Crops": [
{
"Crop": "Onion",
"OrganicManures": [],
"CropYield": 47700.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2027,
"Crops": [
{
"Crop": "Cons_pot_clay",
"OrganicManures": [],
"CropYield": 44900.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2028,
"Crops": [
{
"Crop": "Winter_wheat",
"OrganicManures": [],
"CropYield": 10400.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2029,
"Crops": [
{
"Crop": "Onion",
"OrganicManures": [],
"CropYield": 47700.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2030,
"Crops": [
{
"Crop": "Cons_pot_clay",
"OrganicManures": [],
"CropYield": 44900.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2031,
"Crops": [
{
"Crop": "Winter_wheat",
"OrganicManures": [],
"CropYield": 10400.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2032,
"Crops": [
{
"Crop": "Onion",
"OrganicManures": [],
"CropYield": 47700.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2033,
"Crops": [
{
"Crop": "Cons_pot_clay",
"OrganicManures": [],
"CropYield": 44900.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2034,
"Crops": [
{
"Crop": "Winter_wheat",
"OrganicManures": [],
"CropYield": 10400.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
},
{
"Year": 2035,
"Crops": [
{
"Crop": "Onion",
"OrganicManures": [],
"CropYield": 47700.0,
"CropRes": false,
"Irrigation": "0,0,0,0,0,0,0,0,0,0,0,0"
}
]
}
],
"GreenManures": [
{
"Year": 2013,
"GreenManureTypes": [
{
"Type": "Gerst",
"Quality": "Matig"
}
]
},
{
"Year": 2032,
"GreenManureTypes": [
{
"Type": "EngelsRaaigras",
"Quality": "Goed"
}
]
}
]
}
]
}

View File

@@ -0,0 +1,29 @@
using CarbonService.Models;
using CarbonLib.Carbon;
using Newtonsoft.Json;
namespace CarbonConsoleApp
{
class Program
{
static void Main(string[] args)
{
var configPath = "config25";
ICarbonCalculation carbonCalc = new CarbonLib.Carbon.CarbonCalculation25(configPath);
var request = new CarbonRequest();
using (var reader = new StreamReader("input.txt"))
{
var filecontent = reader.ReadToEnd();
request = JsonConvert.DeserializeObject<CarbonRequest>(filecontent);
}
var result = carbonCalc.CalculateClimateScenario(request);
using (var writer = new StreamWriter("output.txt"))
{
var resultText = JsonConvert.SerializeObject(result, Formatting.Indented);
writer.WriteLine(resultText);
}
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -2015,174 +2015,174 @@ zone9;M9;2022;15.33333333;119.3616;57
zone9;M10;2022;14.45806452;37.2232;37.4
zone9;M11;2022;9.188333333;54.3768;17.3
zone9;M12;2022;3.775806452;78.9695;6.2
zone10;M1;2023;2.570967742;92.9857;7
zone10;M2;2023;3.619642857;63.614;13.3
zone10;M3;2023;5.253225806;17.0571;40.2
zone10;M4;2023;12.00666667;13.4214;75.9
zone10;M5;2023;13.42419355;22.1785;96.6
zone10;M6;2023;15.88333333;116.3787;93.1
zone10;M7;2023;15.68548387;134.8429;79
zone10;M8;2023;16.70967742;114.8358;72.3
zone10;M9;2023;15.285;55.614;54.3
zone10;M10;2023;10.69032258;68.9927;31
zone10;M11;2023;6.063333333;10.7284;12.7
zone10;M12;2023;5.543548387;147.307;6.1
zone11;M1;2023;4.098387097;103.7457;9.2
zone11;M2;2023;5.375;55.7453;14.1
zone11;M3;2023;7.256451613;14.6787;46.8
zone11;M4;2023;13.57666667;15.6212;85.2
zone11;M5;2023;14.4483871;19.4363;105.6
zone11;M6;2023;16.18833333;81.9908;96.7
zone11;M7;2023;16.47741935;120.0879;91.2
zone11;M8;2023;17.61451613;97.5971;78
zone11;M9;2023;16.86833333;73.0788;59.4
zone11;M10;2023;13.4983871;57.5938;38.2
zone11;M11;2023;9.515;6.8638;16.1
zone11;M12;2023;6.790322581;176.4061;8.7
zone12;M1;2023;4.098387097;95.2223;9.2
zone12;M2;2023;5.375;67.5888;14.1
zone12;M3;2023;7.256451613;15.6332;46.8
zone12;M4;2023;13.57666667;14.9444;85.2
zone12;M5;2023;14.4483871;22.8556;105.6
zone12;M6;2023;16.18833333;114.2112;96.7
zone12;M7;2023;16.47741935;144.0221;91.2
zone12;M8;2023;17.61451613;84.5222;78
zone12;M9;2023;16.86833333;68.1109;59.4
zone12;M10;2023;13.4983871;61.8112;38.2
zone12;M11;2023;9.515;7.9333;16.1
zone12;M12;2023;6.790322581;162.1223;8.7
zone13;M1;2023;3.116129032;78.659;8.4
zone13;M2;2023;4.866071429;67.6998;14.7
zone13;M3;2023;6.830645161;18.1226;43.6
zone13;M4;2023;13.115;20.4727;77.8
zone13;M5;2023;14.72258065;18;104.5
zone13;M6;2023;16.61833333;86.3408;91.1
zone13;M7;2023;16.07096774;110.3317;75.5
zone13;M8;2023;17.62096774;119.2863;76.2
zone13;M9;2023;16.325;47.709;57.5
zone13;M10;2023;11.52903226;68.2273;33.1
zone13;M11;2023;7.75;11.8361;16.8
zone13;M12;2023;5.598387097;139.1456;6.3
zone14;M1;2023;3.116129032;76.6364;8.4
zone14;M2;2023;4.866071429;65.9273;14.7
zone14;M3;2023;6.830645161;17.3726;43.6
zone14;M4;2023;13.115;22.4364;77.8
zone14;M5;2023;14.72258065;12.9184;104.5
zone14;M6;2023;16.61833333;88.7911;91.1
zone14;M7;2023;16.07096774;94.0999;75.5
zone14;M8;2023;17.62096774;122.0818;76.2
zone14;M9;2023;16.325;38.7091;57.5
zone14;M10;2023;11.52903226;61.2546;33.1
zone14;M11;2023;7.75;9.3366;16.8
zone14;M12;2023;5.598387097;127.9182;6.3
zone15;M1;2023;3.116129032;98.3308;8.4
zone15;M2;2023;4.866071429;57.2769;14.7
zone15;M3;2023;6.830645161;14.8769;43.6
zone15;M4;2023;13.115;27.823;77.8
zone15;M5;2023;14.72258065;15.0693;104.5
zone15;M6;2023;16.61833333;91.846;91.1
zone15;M7;2023;16.07096774;59.1692;75.5
zone15;M8;2023;17.62096774;128.7846;76.2
zone15;M9;2023;16.325;38.2615;57.5
zone15;M10;2023;11.52903226;45.2002;33.1
zone15;M11;2023;7.75;4.1231;16.8
zone15;M12;2023;5.598387097;127.6848;6.3
zone2;M1;2023;3.543548387;49.4862;8.7
zone2;M2;2023;3.916071429;39.7653;12
zone2;M3;2023;5.103225806;6.9687;38.3
zone2;M4;2023;11.68166667;10.0553;82.2
zone2;M5;2023;13.25967742;37.9034;101
zone2;M6;2023;15.36;107.4618;105.5
zone2;M7;2023;15.53064516;135.6482;90.5
zone2;M8;2023;16.44193548;111.1758;76.4
zone2;M9;2023;15.54833333;77.3722;53
zone2;M10;2023;11.83709677;86.8723;31.3
zone2;M11;2023;7.631666667;9.0171;12
zone2;M12;2023;6.622580645;142.5519;6.5
zone3;M1;2023;3.543548387;51.5206;8.7
zone3;M2;2023;3.916071429;41.0516;12
zone3;M3;2023;5.103225806;11.8276;38.3
zone3;M4;2023;11.68166667;8.0034;82.2
zone3;M5;2023;13.25967742;48.5448;101
zone3;M6;2023;15.36;87.9966;105.5
zone3;M7;2023;15.53064516;119.7274;90.5
zone3;M8;2023;16.44193548;117.9793;76.4
zone3;M9;2023;15.54833333;77.3414;53
zone3;M10;2023;11.83709677;84.993;31.3
zone3;M11;2023;7.631666667;6.1963;12
zone3;M12;2023;6.622580645;163.6138;6.5
zone4;M1;2023;3.330645161;63.8957;8.8
zone4;M2;2023;4.558928571;58.7521;12.7
zone4;M3;2023;6.15483871;5.5694;41
zone4;M4;2023;12.95833333;13.3346;78.6
zone4;M5;2023;13.63548387;21.0478;93.7
zone4;M6;2023;15.85833333;97.2956;92.2
zone4;M7;2023;15.7516129;166.7304;81.7
zone4;M8;2023;16.71935484;109.4001;70.2
zone4;M9;2023;15.615;85.3304;53.8
zone4;M10;2023;11.63709677;92.0259;31.6
zone4;M11;2023;7.425;9.3171;13.9
zone4;M12;2023;6.303225806;136.1607;7.2
zone5;M1;2023;3.330645161;71.4199;8.8
zone5;M2;2023;4.558928571;57.4199;12.7
zone5;M3;2023;6.15483871;6.8799;41
zone5;M4;2023;12.95833333;11.4666;78.6
zone5;M5;2023;13.63548387;34.7799;93.7
zone5;M6;2023;15.85833333;116.1202;92.2
zone5;M7;2023;15.7516129;137.4402;81.7
zone5;M8;2023;16.71935484;106.34;70.2
zone5;M9;2023;15.615;73.9735;53.8
zone5;M10;2023;11.63709677;84.1735;31.6
zone5;M11;2023;7.425;10.7201;13.9
zone5;M12;2023;6.303225806;123.4599;7.2
zone6;M1;2023;3.330645161;73.9384;8.8
zone6;M2;2023;4.558928571;48.6692;12.7
zone6;M3;2023;6.15483871;12.3114;41
zone6;M4;2023;12.95833333;18.4693;78.6
zone6;M5;2023;13.63548387;31.2348;93.7
zone6;M6;2023;15.85833333;98.7426;92.2
zone6;M7;2023;15.7516129;116.1806;81.7
zone6;M8;2023;16.71935484;144.8885;70.2
zone6;M9;2023;15.615;71.9346;53.8
zone6;M10;2023;11.63709677;72.9422;31.6
zone6;M11;2023;7.425;8.5655;13.9
zone6;M12;2023;6.303225806;132.1266;7.2
zone7;M1;2023;2.338709677;93.07;7.9
zone7;M2;2023;3.239285714;73.8538;12.6
zone7;M3;2023;4.95483871;12.0865;38.4
zone7;M4;2023;11.69333333;13.6433;78.9
zone7;M5;2023;12.61290323;21.4972;89.1
zone7;M6;2023;15.12333333;105.3594;90.1
zone7;M7;2023;15.10645161;180.5029;74.7
zone7;M8;2023;16.16451613;115.9189;70.1
zone7;M9;2023;14.695;74.5026;51.2
zone7;M10;2023;10.45322581;66.6648;28.6
zone7;M11;2023;5.826666667;7.6998;10.7
zone7;M12;2023;5.461290323;151.1055;6.2
zone8;M1;2023;2.338709677;88.0968;7.9
zone8;M2;2023;3.239285714;66.5846;12.6
zone8;M3;2023;4.95483871;13.7031;38.4
zone8;M4;2023;11.69333333;17.9455;78.9
zone8;M5;2023;12.61290323;27.506;89.1
zone8;M6;2023;15.12333333;120.4997;90.1
zone8;M7;2023;15.10645161;173.5938;74.7
zone8;M8;2023;16.16451613;122.9727;70.1
zone8;M9;2023;14.695;78.9758;51.2
zone8;M10;2023;10.45322581;81.5215;28.6
zone8;M11;2023;5.826666667;13.333;10.7
zone8;M12;2023;5.461290323;152.603;6.2
zone9;M1;2023;2.570967742;84.5473;7
zone9;M2;2023;3.619642857;53.4589;13.3
zone9;M3;2023;5.253225806;14.1823;40.2
zone9;M4;2023;12.00666667;28.6236;75.9
zone9;M5;2023;13.42419355;18.9353;96.6
zone9;M6;2023;15.88333333;86.5588;93.1
zone9;M7;2023;15.68548387;96.6589;79
zone9;M8;2023;16.70967742;151.0351;72.3
zone9;M9;2023;15.285;48.3236;54.3
zone9;M10;2023;10.69032258;76.3174;31
zone9;M11;2023;6.063333333;8.4762;12.7
zone9;M12;2023;5.543548387;129.4527;6.1
zone2;M1;2023;6.066129032;131.4824;9.8
zone2;M2;2023;5.958928571;26.1585;19.2
zone2;M3;2023;6.485483871;87.1447;36.5
zone2;M4;2023;8.45;77.4588;61.7
zone2;M5;2023;12.33387097;33.2551;96.9
zone2;M6;2023;17.90333333;12.6483;130.4
zone2;M7;2023;17.83064516;124.6999;107.2
zone2;M8;2023;17.25322581;99.731;89.1
zone2;M9;2023;17.89166667;70.6379;67.6
zone2;M10;2023;13.45322581;161.0862;28.1
zone2;M11;2023;8.531666667;178.3895;12
zone2;M12;2023;6.775806452;125.5826;6.3
zone3;M1;2023;6.066129032;129.2307;9.8
zone3;M2;2023;5.958928571;32.6539;19.2
zone3;M3;2023;6.485483871;89.0266;36.5
zone3;M4;2023;8.45;69.3959;61.7
zone3;M5;2023;12.33387097;47.6652;96.9
zone3;M6;2023;17.90333333;14.6883;130.4
zone3;M7;2023;17.83064516;120.1691;107.2
zone3;M8;2023;17.25322581;96.8728;89.1
zone3;M9;2023;17.89166667;55.0538;67.6
zone3;M10;2023;13.45322581;151.45;28.1
zone3;M11;2023;8.531666667;166.823;12
zone3;M12;2023;6.775806452;140.6231;6.3
zone4;M1;2023;5.646774194;128.0908;9.1
zone4;M2;2023;5.408928571;22.0634;17.3
zone4;M3;2023;6.946774194;93.0821;33.2
zone4;M4;2023;8.636666667;88.6546;59.8
zone4;M5;2023;13.27419355;32.3137;99.3
zone4;M6;2023;18.85;18.5181;131.6
zone4;M7;2023;17.93387097;103.8637;97.2
zone4;M8;2023;17.60645161;127.5864;83
zone4;M9;2023;17.52333333;89.0589;65.7
zone4;M10;2023;13.23548387;168.65;28.1
zone4;M11;2023;7.745;215.0817;12
zone4;M12;2023;6.529032258;121.8679;6
zone5;M1;2023;5.646774194;133.7419;9.1
zone5;M2;2023;5.408928571;27.5334;17.3
zone5;M3;2023;6.946774194;84.9834;33.2
zone5;M4;2023;8.636666667;92.9581;59.8
zone5;M5;2023;13.27419355;51.55;99.3
zone5;M6;2023;18.85;19.2917;131.6
zone5;M7;2023;17.93387097;113.9667;97.2
zone5;M8;2023;17.60645161;121.6665;83
zone5;M9;2023;17.52333333;72.3669;65.7
zone5;M10;2023;13.23548387;150.2168;28.1
zone5;M11;2023;7.745;171.7748;12
zone5;M12;2023;6.529032258;136.0582;6
zone6;M1;2023;5.646774194;127.1307;9.1
zone6;M2;2023;5.408928571;33.8307;17.3
zone6;M3;2023;6.946774194;86.9881;33.2
zone6;M4;2023;8.636666667;84.3769;59.8
zone6;M5;2023;13.27419355;44.7308;99.3
zone6;M6;2023;18.85;34.8884;131.6
zone6;M7;2023;17.93387097;118.9152;97.2
zone6;M8;2023;17.60645161;125.4768;83
zone6;M9;2023;17.52333333;56.2345;65.7
zone6;M10;2023;13.23548387;136.1579;28.1
zone6;M11;2023;7.745;148.6346;12
zone6;M12;2023;6.529032258;165.9497;6
zone7;M1;2023;4.819354839;148.6853;8.5
zone7;M2;2023;4.739285714;19.6468;16.7
zone7;M3;2023;6.093548387;107.1118;34.3
zone7;M4;2023;7.765;84.5235;60.1
zone7;M5;2023;12.25322581;39.7823;92.5
zone7;M6;2023;17.53666667;21.8088;128.2
zone7;M7;2023;17.26129032;115.15;97
zone7;M8;2023;16.59516129;114.0703;80.4
zone7;M9;2023;16.85;77.0382;65.3
zone7;M10;2023;12.10806452;184.8795;25.8
zone7;M11;2023;6.708333333;208.497;11.4
zone7;M12;2023;5.437096774;120.4822;5.6
zone8;M1;2023;4.819354839;148.0531;8.5
zone8;M2;2023;4.739285714;31.95;16.7
zone8;M3;2023;6.093548387;101.0341;34.3
zone8;M4;2023;7.765;95.1748;60.1
zone8;M5;2023;12.25322581;56.1685;92.5
zone8;M6;2023;17.53666667;23.0001;128.2
zone8;M7;2023;17.26129032;115.2594;97
zone8;M8;2023;16.59516129;132.9594;80.4
zone8;M9;2023;16.85;61.1531;65.3
zone8;M10;2023;12.10806452;175.5031;25.8
zone8;M11;2023;6.708333333;171.7469;11.4
zone8;M12;2023;5.437096774;160.5562;5.6
zone9;M1;2023;5.114516129;114.1177;7.9
zone9;M2;2023;4.930357143;39.859;16.7
zone9;M3;2023;6.648387097;104.9588;33.2
zone9;M4;2023;8.108333333;88.7763;60.9
zone9;M5;2023;12.89193548;55.3942;100.7
zone9;M6;2023;18.87833333;49.0351;128.9
zone9;M7;2023;17.95645161;111.2647;96.1
zone9;M8;2023;17.53064516;148.2709;78.2
zone9;M9;2023;17.35166667;61.665;69.2
zone9;M10;2023;12.85483871;155.5237;28.4
zone9;M11;2023;6.753333333;150.4704;11
zone9;M12;2023;5.659677419;151.0705;5.1
zone10;M1;2023;5.114516129;138.9072;7.9
zone10;M2;2023;4.930357143;20.5214;16.7
zone10;M3;2023;6.648387097;103.3785;33.2
zone10;M4;2023;8.108333333;81.4211;60.9
zone10;M5;2023;12.89193548;49.2427;100.7
zone10;M6;2023;18.87833333;27.4286;128.9
zone10;M7;2023;17.95645161;93.7642;96.1
zone10;M8;2023;17.53064516;120.2498;78.2
zone10;M9;2023;17.35166667;58.9571;69.2
zone10;M10;2023;12.85483871;173.1642;28.4
zone10;M11;2023;6.753333333;143.9144;11
zone10;M12;2023;5.659677419;130.3428;5.1
zone11;M1;2023;6.172580645;114.5486;12.1
zone11;M2;2023;6.423214286;10.9425;22.2
zone11;M3;2023;7.461290323;103.9727;35.9
zone11;M4;2023;9.431666667;79.8001;65.1
zone11;M5;2023;13.33709677;40.7544;104.7
zone11;M6;2023;19.65666667;18.6546;135.2
zone11;M7;2023;18.70483871;81.8061;109.1
zone11;M8;2023;18.28548387;133.2577;93.9
zone11;M9;2023;19.28833333;59.597;69.8
zone11;M10;2023;14.65645161;145.0849;35.2
zone11;M11;2023;9.185;166.5789;14.2
zone11;M12;2023;7.619354839;92.1334;7.8
zone12;M1;2023;6.172580645;133.222;12.1
zone12;M2;2023;6.423214286;15.4664;22.2
zone12;M3;2023;7.461290323;110.5779;35.9
zone12;M4;2023;9.431666667;85.2776;65.1
zone12;M5;2023;13.33709677;58.5887;104.7
zone12;M6;2023;19.65666667;30.9999;135.2
zone12;M7;2023;18.70483871;84.1225;109.1
zone12;M8;2023;18.28548387;119.1668;93.9
zone12;M9;2023;19.28833333;59.3332;69.8
zone12;M10;2023;14.65645161;150.422;35.2
zone12;M11;2023;9.185;147.2445;14.2
zone12;M12;2023;7.619354839;111.3109;7.8
zone13;M1;2023;4.708064516;116.7455;8.3
zone13;M2;2023;5.207142857;16.5589;18.5
zone13;M3;2023;7.15;115.1816;31.7
zone13;M4;2023;8.703333333;81.85;59.5
zone13;M5;2023;13.65;54.8817;100.6
zone13;M6;2023;20.16;38.3044;134.2
zone13;M7;2023;18.84032258;111.9274;100.2
zone13;M8;2023;18.11290323;131.9728;82.6
zone13;M9;2023;18.425;74.2589;74.7
zone13;M10;2023;13.55967742;148.9273;34.6
zone13;M11;2023;7.408333333;151.1454;12.1
zone13;M12;2023;6.364516129;140.1136;7.1
zone14;M1;2023;4.708064516;92.6443;8.3
zone14;M2;2023;5.207142857;17.0665;18.5
zone14;M3;2023;7.15;103.1332;31.7
zone14;M4;2023;8.703333333;72.5332;59.5
zone14;M5;2023;13.65;48.4556;100.6
zone14;M6;2023;20.16;46.5332;134.2
zone14;M7;2023;18.84032258;104.4111;100.2
zone14;M8;2023;18.11290323;137.4556;82.6
zone14;M9;2023;18.425;78.0001;74.7
zone14;M10;2023;13.55967742;116.4109;34.6
zone14;M11;2023;7.408333333;156.2221;12.1
zone14;M12;2023;6.364516129;130.4668;7.1
zone15;M1;2023;4.708064516;94.9771;8.3
zone15;M2;2023;5.207142857;22.7078;18.5
zone15;M3;2023;7.15;113.431;31.7
zone15;M4;2023;8.703333333;69.1692;59.5
zone15;M5;2023;13.65;52.9002;100.6
zone15;M6;2023;20.16;51.1768;134.2
zone15;M7;2023;18.84032258;89.8922;100.2
zone15;M8;2023;18.11290323;132.9156;82.6
zone15;M9;2023;18.425;82.0463;74.7
zone15;M10;2023;13.55967742;94.3694;34.6
zone15;M11;2023;7.408333333;124.3691;12.1
zone15;M12;2023;6.364516129;109.1002;7.1
zone10;M1;2024;3.617741935;95.7286;8.9
zone10;M2;2024;-0.20862069;25.3215;13.5
zone10;M3;2024;7.359677419;20.3143;39.9
1 Temperature Precipitation Evapotranspiration
2015 zone9 M10 2022 14.45806452 37.2232 37.4
2016 zone9 M11 2022 9.188333333 54.3768 17.3
2017 zone9 M12 2022 3.775806452 78.9695 6.2
2018 zone10 zone2 M1 2023 2.570967742 6.066129032 92.9857 131.4824 7 9.8
2019 zone10 zone2 M2 2023 3.619642857 5.958928571 63.614 26.1585 13.3 19.2
2020 zone10 zone2 M3 2023 5.253225806 6.485483871 17.0571 87.1447 40.2 36.5
2021 zone10 zone2 M4 2023 12.00666667 8.45 13.4214 77.4588 75.9 61.7
2022 zone10 zone2 M5 2023 13.42419355 12.33387097 22.1785 33.2551 96.6 96.9
2023 zone10 zone2 M6 2023 15.88333333 17.90333333 116.3787 12.6483 93.1 130.4
2024 zone10 zone2 M7 2023 15.68548387 17.83064516 134.8429 124.6999 79 107.2
2025 zone10 zone2 M8 2023 16.70967742 17.25322581 114.8358 99.731 72.3 89.1
2026 zone10 zone2 M9 2023 15.285 17.89166667 55.614 70.6379 54.3 67.6
2027 zone10 zone2 M10 2023 10.69032258 13.45322581 68.9927 161.0862 31 28.1
2028 zone10 zone2 M11 2023 6.063333333 8.531666667 10.7284 178.3895 12.7 12
2029 zone10 zone2 M12 2023 5.543548387 6.775806452 147.307 125.5826 6.1 6.3
2030 zone11 zone3 M1 2023 4.098387097 6.066129032 103.7457 129.2307 9.2 9.8
2031 zone11 zone3 M2 2023 5.375 5.958928571 55.7453 32.6539 14.1 19.2
2032 zone11 zone3 M3 2023 7.256451613 6.485483871 14.6787 89.0266 46.8 36.5
2033 zone11 zone3 M4 2023 13.57666667 8.45 15.6212 69.3959 85.2 61.7
2034 zone11 zone3 M5 2023 14.4483871 12.33387097 19.4363 47.6652 105.6 96.9
2035 zone11 zone3 M6 2023 16.18833333 17.90333333 81.9908 14.6883 96.7 130.4
2036 zone11 zone3 M7 2023 16.47741935 17.83064516 120.0879 120.1691 91.2 107.2
2037 zone11 zone3 M8 2023 17.61451613 17.25322581 97.5971 96.8728 78 89.1
2038 zone11 zone3 M9 2023 16.86833333 17.89166667 73.0788 55.0538 59.4 67.6
2039 zone11 zone3 M10 2023 13.4983871 13.45322581 57.5938 151.45 38.2 28.1
2040 zone11 zone3 M11 2023 9.515 8.531666667 6.8638 166.823 16.1 12
2041 zone11 zone3 M12 2023 6.790322581 6.775806452 176.4061 140.6231 8.7 6.3
2042 zone12 zone4 M1 2023 4.098387097 5.646774194 95.2223 128.0908 9.2 9.1
2043 zone12 zone4 M2 2023 5.375 5.408928571 67.5888 22.0634 14.1 17.3
2044 zone12 zone4 M3 2023 7.256451613 6.946774194 15.6332 93.0821 46.8 33.2
2045 zone12 zone4 M4 2023 13.57666667 8.636666667 14.9444 88.6546 85.2 59.8
2046 zone12 zone4 M5 2023 14.4483871 13.27419355 22.8556 32.3137 105.6 99.3
2047 zone12 zone4 M6 2023 16.18833333 18.85 114.2112 18.5181 96.7 131.6
2048 zone12 zone4 M7 2023 16.47741935 17.93387097 144.0221 103.8637 91.2 97.2
2049 zone12 zone4 M8 2023 17.61451613 17.60645161 84.5222 127.5864 78 83
2050 zone12 zone4 M9 2023 16.86833333 17.52333333 68.1109 89.0589 59.4 65.7
2051 zone12 zone4 M10 2023 13.4983871 13.23548387 61.8112 168.65 38.2 28.1
2052 zone12 zone4 M11 2023 9.515 7.745 7.9333 215.0817 16.1 12
2053 zone12 zone4 M12 2023 6.790322581 6.529032258 162.1223 121.8679 8.7 6
2054 zone13 zone5 M1 2023 3.116129032 5.646774194 78.659 133.7419 8.4 9.1
2055 zone13 zone5 M2 2023 4.866071429 5.408928571 67.6998 27.5334 14.7 17.3
2056 zone13 zone5 M3 2023 6.830645161 6.946774194 18.1226 84.9834 43.6 33.2
2057 zone13 zone5 M4 2023 13.115 8.636666667 20.4727 92.9581 77.8 59.8
2058 zone13 zone5 M5 2023 14.72258065 13.27419355 18 51.55 104.5 99.3
2059 zone13 zone5 M6 2023 16.61833333 18.85 86.3408 19.2917 91.1 131.6
2060 zone13 zone5 M7 2023 16.07096774 17.93387097 110.3317 113.9667 75.5 97.2
2061 zone13 zone5 M8 2023 17.62096774 17.60645161 119.2863 121.6665 76.2 83
2062 zone13 zone5 M9 2023 16.325 17.52333333 47.709 72.3669 57.5 65.7
2063 zone13 zone5 M10 2023 11.52903226 13.23548387 68.2273 150.2168 33.1 28.1
2064 zone13 zone5 M11 2023 7.75 7.745 11.8361 171.7748 16.8 12
2065 zone13 zone5 M12 2023 5.598387097 6.529032258 139.1456 136.0582 6.3 6
2066 zone14 zone6 M1 2023 3.116129032 5.646774194 76.6364 127.1307 8.4 9.1
2067 zone14 zone6 M2 2023 4.866071429 5.408928571 65.9273 33.8307 14.7 17.3
2068 zone14 zone6 M3 2023 6.830645161 6.946774194 17.3726 86.9881 43.6 33.2
2069 zone14 zone6 M4 2023 13.115 8.636666667 22.4364 84.3769 77.8 59.8
2070 zone14 zone6 M5 2023 14.72258065 13.27419355 12.9184 44.7308 104.5 99.3
2071 zone14 zone6 M6 2023 16.61833333 18.85 88.7911 34.8884 91.1 131.6
2072 zone14 zone6 M7 2023 16.07096774 17.93387097 94.0999 118.9152 75.5 97.2
2073 zone14 zone6 M8 2023 17.62096774 17.60645161 122.0818 125.4768 76.2 83
2074 zone14 zone6 M9 2023 16.325 17.52333333 38.7091 56.2345 57.5 65.7
2075 zone14 zone6 M10 2023 11.52903226 13.23548387 61.2546 136.1579 33.1 28.1
2076 zone14 zone6 M11 2023 7.75 7.745 9.3366 148.6346 16.8 12
2077 zone14 zone6 M12 2023 5.598387097 6.529032258 127.9182 165.9497 6.3 6
2078 zone15 zone7 M1 2023 3.116129032 4.819354839 98.3308 148.6853 8.4 8.5
2079 zone15 zone7 M2 2023 4.866071429 4.739285714 57.2769 19.6468 14.7 16.7
2080 zone15 zone7 M3 2023 6.830645161 6.093548387 14.8769 107.1118 43.6 34.3
2081 zone15 zone7 M4 2023 13.115 7.765 27.823 84.5235 77.8 60.1
2082 zone15 zone7 M5 2023 14.72258065 12.25322581 15.0693 39.7823 104.5 92.5
2083 zone15 zone7 M6 2023 16.61833333 17.53666667 91.846 21.8088 91.1 128.2
2084 zone15 zone7 M7 2023 16.07096774 17.26129032 59.1692 115.15 75.5 97
2085 zone15 zone7 M8 2023 17.62096774 16.59516129 128.7846 114.0703 76.2 80.4
2086 zone15 zone7 M9 2023 16.325 16.85 38.2615 77.0382 57.5 65.3
2087 zone15 zone7 M10 2023 11.52903226 12.10806452 45.2002 184.8795 33.1 25.8
2088 zone15 zone7 M11 2023 7.75 6.708333333 4.1231 208.497 16.8 11.4
2089 zone15 zone7 M12 2023 5.598387097 5.437096774 127.6848 120.4822 6.3 5.6
2090 zone2 zone8 M1 2023 3.543548387 4.819354839 49.4862 148.0531 8.7 8.5
2091 zone2 zone8 M2 2023 3.916071429 4.739285714 39.7653 31.95 12 16.7
2092 zone2 zone8 M3 2023 5.103225806 6.093548387 6.9687 101.0341 38.3 34.3
2093 zone2 zone8 M4 2023 11.68166667 7.765 10.0553 95.1748 82.2 60.1
2094 zone2 zone8 M5 2023 13.25967742 12.25322581 37.9034 56.1685 101 92.5
2095 zone2 zone8 M6 2023 15.36 17.53666667 107.4618 23.0001 105.5 128.2
2096 zone2 zone8 M7 2023 15.53064516 17.26129032 135.6482 115.2594 90.5 97
2097 zone2 zone8 M8 2023 16.44193548 16.59516129 111.1758 132.9594 76.4 80.4
2098 zone2 zone8 M9 2023 15.54833333 16.85 77.3722 61.1531 53 65.3
2099 zone2 zone8 M10 2023 11.83709677 12.10806452 86.8723 175.5031 31.3 25.8
2100 zone2 zone8 M11 2023 7.631666667 6.708333333 9.0171 171.7469 12 11.4
2101 zone2 zone8 M12 2023 6.622580645 5.437096774 142.5519 160.5562 6.5 5.6
2102 zone3 zone9 M1 2023 3.543548387 5.114516129 51.5206 114.1177 8.7 7.9
2103 zone3 zone9 M2 2023 3.916071429 4.930357143 41.0516 39.859 12 16.7
2104 zone3 zone9 M3 2023 5.103225806 6.648387097 11.8276 104.9588 38.3 33.2
2105 zone3 zone9 M4 2023 11.68166667 8.108333333 8.0034 88.7763 82.2 60.9
2106 zone3 zone9 M5 2023 13.25967742 12.89193548 48.5448 55.3942 101 100.7
2107 zone3 zone9 M6 2023 15.36 18.87833333 87.9966 49.0351 105.5 128.9
2108 zone3 zone9 M7 2023 15.53064516 17.95645161 119.7274 111.2647 90.5 96.1
2109 zone3 zone9 M8 2023 16.44193548 17.53064516 117.9793 148.2709 76.4 78.2
2110 zone3 zone9 M9 2023 15.54833333 17.35166667 77.3414 61.665 53 69.2
2111 zone3 zone9 M10 2023 11.83709677 12.85483871 84.993 155.5237 31.3 28.4
2112 zone3 zone9 M11 2023 7.631666667 6.753333333 6.1963 150.4704 12 11
2113 zone3 zone9 M12 2023 6.622580645 5.659677419 163.6138 151.0705 6.5 5.1
2114 zone4 zone10 M1 2023 3.330645161 5.114516129 63.8957 138.9072 8.8 7.9
2115 zone4 zone10 M2 2023 4.558928571 4.930357143 58.7521 20.5214 12.7 16.7
2116 zone4 zone10 M3 2023 6.15483871 6.648387097 5.5694 103.3785 41 33.2
2117 zone4 zone10 M4 2023 12.95833333 8.108333333 13.3346 81.4211 78.6 60.9
2118 zone4 zone10 M5 2023 13.63548387 12.89193548 21.0478 49.2427 93.7 100.7
2119 zone4 zone10 M6 2023 15.85833333 18.87833333 97.2956 27.4286 92.2 128.9
2120 zone4 zone10 M7 2023 15.7516129 17.95645161 166.7304 93.7642 81.7 96.1
2121 zone4 zone10 M8 2023 16.71935484 17.53064516 109.4001 120.2498 70.2 78.2
2122 zone4 zone10 M9 2023 15.615 17.35166667 85.3304 58.9571 53.8 69.2
2123 zone4 zone10 M10 2023 11.63709677 12.85483871 92.0259 173.1642 31.6 28.4
2124 zone4 zone10 M11 2023 7.425 6.753333333 9.3171 143.9144 13.9 11
2125 zone4 zone10 M12 2023 6.303225806 5.659677419 136.1607 130.3428 7.2 5.1
2126 zone5 zone11 M1 2023 3.330645161 6.172580645 71.4199 114.5486 8.8 12.1
2127 zone5 zone11 M2 2023 4.558928571 6.423214286 57.4199 10.9425 12.7 22.2
2128 zone5 zone11 M3 2023 6.15483871 7.461290323 6.8799 103.9727 41 35.9
2129 zone5 zone11 M4 2023 12.95833333 9.431666667 11.4666 79.8001 78.6 65.1
2130 zone5 zone11 M5 2023 13.63548387 13.33709677 34.7799 40.7544 93.7 104.7
2131 zone5 zone11 M6 2023 15.85833333 19.65666667 116.1202 18.6546 92.2 135.2
2132 zone5 zone11 M7 2023 15.7516129 18.70483871 137.4402 81.8061 81.7 109.1
2133 zone5 zone11 M8 2023 16.71935484 18.28548387 106.34 133.2577 70.2 93.9
2134 zone5 zone11 M9 2023 15.615 19.28833333 73.9735 59.597 53.8 69.8
2135 zone5 zone11 M10 2023 11.63709677 14.65645161 84.1735 145.0849 31.6 35.2
2136 zone5 zone11 M11 2023 7.425 9.185 10.7201 166.5789 13.9 14.2
2137 zone5 zone11 M12 2023 6.303225806 7.619354839 123.4599 92.1334 7.2 7.8
2138 zone6 zone12 M1 2023 3.330645161 6.172580645 73.9384 133.222 8.8 12.1
2139 zone6 zone12 M2 2023 4.558928571 6.423214286 48.6692 15.4664 12.7 22.2
2140 zone6 zone12 M3 2023 6.15483871 7.461290323 12.3114 110.5779 41 35.9
2141 zone6 zone12 M4 2023 12.95833333 9.431666667 18.4693 85.2776 78.6 65.1
2142 zone6 zone12 M5 2023 13.63548387 13.33709677 31.2348 58.5887 93.7 104.7
2143 zone6 zone12 M6 2023 15.85833333 19.65666667 98.7426 30.9999 92.2 135.2
2144 zone6 zone12 M7 2023 15.7516129 18.70483871 116.1806 84.1225 81.7 109.1
2145 zone6 zone12 M8 2023 16.71935484 18.28548387 144.8885 119.1668 70.2 93.9
2146 zone6 zone12 M9 2023 15.615 19.28833333 71.9346 59.3332 53.8 69.8
2147 zone6 zone12 M10 2023 11.63709677 14.65645161 72.9422 150.422 31.6 35.2
2148 zone6 zone12 M11 2023 7.425 9.185 8.5655 147.2445 13.9 14.2
2149 zone6 zone12 M12 2023 6.303225806 7.619354839 132.1266 111.3109 7.2 7.8
2150 zone7 zone13 M1 2023 2.338709677 4.708064516 93.07 116.7455 7.9 8.3
2151 zone7 zone13 M2 2023 3.239285714 5.207142857 73.8538 16.5589 12.6 18.5
2152 zone7 zone13 M3 2023 4.95483871 7.15 12.0865 115.1816 38.4 31.7
2153 zone7 zone13 M4 2023 11.69333333 8.703333333 13.6433 81.85 78.9 59.5
2154 zone7 zone13 M5 2023 12.61290323 13.65 21.4972 54.8817 89.1 100.6
2155 zone7 zone13 M6 2023 15.12333333 20.16 105.3594 38.3044 90.1 134.2
2156 zone7 zone13 M7 2023 15.10645161 18.84032258 180.5029 111.9274 74.7 100.2
2157 zone7 zone13 M8 2023 16.16451613 18.11290323 115.9189 131.9728 70.1 82.6
2158 zone7 zone13 M9 2023 14.695 18.425 74.5026 74.2589 51.2 74.7
2159 zone7 zone13 M10 2023 10.45322581 13.55967742 66.6648 148.9273 28.6 34.6
2160 zone7 zone13 M11 2023 5.826666667 7.408333333 7.6998 151.1454 10.7 12.1
2161 zone7 zone13 M12 2023 5.461290323 6.364516129 151.1055 140.1136 6.2 7.1
2162 zone8 zone14 M1 2023 2.338709677 4.708064516 88.0968 92.6443 7.9 8.3
2163 zone8 zone14 M2 2023 3.239285714 5.207142857 66.5846 17.0665 12.6 18.5
2164 zone8 zone14 M3 2023 4.95483871 7.15 13.7031 103.1332 38.4 31.7
2165 zone8 zone14 M4 2023 11.69333333 8.703333333 17.9455 72.5332 78.9 59.5
2166 zone8 zone14 M5 2023 12.61290323 13.65 27.506 48.4556 89.1 100.6
2167 zone8 zone14 M6 2023 15.12333333 20.16 120.4997 46.5332 90.1 134.2
2168 zone8 zone14 M7 2023 15.10645161 18.84032258 173.5938 104.4111 74.7 100.2
2169 zone8 zone14 M8 2023 16.16451613 18.11290323 122.9727 137.4556 70.1 82.6
2170 zone8 zone14 M9 2023 14.695 18.425 78.9758 78.0001 51.2 74.7
2171 zone8 zone14 M10 2023 10.45322581 13.55967742 81.5215 116.4109 28.6 34.6
2172 zone8 zone14 M11 2023 5.826666667 7.408333333 13.333 156.2221 10.7 12.1
2173 zone8 zone14 M12 2023 5.461290323 6.364516129 152.603 130.4668 6.2 7.1
2174 zone9 zone15 M1 2023 2.570967742 4.708064516 84.5473 94.9771 7 8.3
2175 zone9 zone15 M2 2023 3.619642857 5.207142857 53.4589 22.7078 13.3 18.5
2176 zone9 zone15 M3 2023 5.253225806 7.15 14.1823 113.431 40.2 31.7
2177 zone9 zone15 M4 2023 12.00666667 8.703333333 28.6236 69.1692 75.9 59.5
2178 zone9 zone15 M5 2023 13.42419355 13.65 18.9353 52.9002 96.6 100.6
2179 zone9 zone15 M6 2023 15.88333333 20.16 86.5588 51.1768 93.1 134.2
2180 zone9 zone15 M7 2023 15.68548387 18.84032258 96.6589 89.8922 79 100.2
2181 zone9 zone15 M8 2023 16.70967742 18.11290323 151.0351 132.9156 72.3 82.6
2182 zone9 zone15 M9 2023 15.285 18.425 48.3236 82.0463 54.3 74.7
2183 zone9 zone15 M10 2023 10.69032258 13.55967742 76.3174 94.3694 31 34.6
2184 zone9 zone15 M11 2023 6.063333333 7.408333333 8.4762 124.3691 12.7 12.1
2185 zone9 zone15 M12 2023 5.543548387 6.364516129 129.4527 109.1002 6.1 7.1
2186 zone10 M1 2024 3.617741935 95.7286 8.9
2187 zone10 M2 2024 -0.20862069 25.3215 13.5
2188 zone10 M3 2024 7.359677419 20.3143 39.9

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -112,5 +112,12 @@
"GoodQuality": 3.1635153508771934,
"AverageQuality": 2.2144607456140353,
"BadQuality": 1.5817576754385967
},
{
"ManureName": "Triticale",
"GoodQuality": 2.2,
"AverageQuality": 1.54,
"BadQuality": 1.1
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,206 @@
[
{
"CropName": "Perm_gras",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Temp_gras",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Nat_gras",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Gras",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Fodder_maize",
"CoverMonths": [ "M6", "M7", "M8", "M9" ]
},
{
"CropName": "Maize",
"CoverMonths": [ "M6", "M7", "M8", "M9" ]
},
{
"CropName": "Corn_cob_mix",
"CoverMonths": [ "M6", "M7", "M8", "M9" ]
},
{
"CropName": "Winter_wheat",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M12" ]
},
{
"CropName": "Summer_wheat",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Summer_barley",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "winter_barley",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M12" ]
},
{
"CropName": "Sugarbeet",
"CoverMonths": [ "M6", "M7", "M8", "M9", "M10" ]
},
{
"CropName": "Cons_pot_clay",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Pot_clay",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Starch_pot",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Cons_pot_sand",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Pot_sand",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Vegetables_root",
"CoverMonths": [ "M5", "M6", "M7", "M8", "M9", "M10" ]
},
{
"CropName": "Vegetables_leaf",
"CoverMonths": [ "M5", "M6", "M7", "M8", "M9", "M10" ]
},
{
"CropName": "Vegetables_cabbage",
"CoverMonths": [ "M6", "M7", "M8", "M9" ]
},
{
"CropName": "Vegetables_stem",
"CoverMonths": [ "M5", "M6", "M7", "M8", "M9", "M10" ]
},
{
"CropName": "Pumpkin",
"CoverMonths": [ "M6", "M7", "M8", "M9" ]
},
{
"CropName": "Chicory",
"CoverMonths": [ "M5", "M6", "M7", "M8", "M9", "M10" ]
},
{
"CropName": "Courgette",
"CoverMonths": [ "M5", "M6", "M7" ]
},
{
"CropName": "Other_veg",
"CoverMonths": [ "M5", "M6", "M7", "M8", "M9", "M10" ]
},
{
"CropName": "Grasseed",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Onion",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Bulbs",
"CoverMonths": [ "M4", "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Fallow",
"CoverMonths": []
},
{
"CropName": "Nurseries",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Pulses",
"CoverMonths": [ "M5", "M6", "M7" ]
},
{
"CropName": "Apples",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Pears",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Luzerne",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Other_crops",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Other_seeds",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Triticale",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Rapeseed",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M12" ]
},
{
"CropName": "Strawberry",
"CoverMonths": [ "M4", "M5", "M6", "M7", "M8", "M9", "M10" ]
},
{
"CropName": "Rye",
"CoverMonths": [ "M4", "M5", "M6", "M7" ]
},
{
"CropName": "Other_fruits",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "oats",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Green_manure",
"CoverMonths": [ "M1", "M2", "M3", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Fibres",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Sunflower",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Fodder_beet",
"CoverMonths": [ "M6", "M7", "M8", "M9" ]
},
{
"CropName": "Other_cereals",
"CoverMonths": [ "M5", "M6", "M7", "M8" ]
},
{
"CropName": "Wine",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Miscanthus",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Switchgrass",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
},
{
"CropName": "Willow",
"CoverMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ]
}
]

View File

@@ -0,0 +1,359 @@
[
{
"Name": "Perm_gras",
"DM_content": 1.0,
"FracR": 0.0,
"C_input_CropRes": 5.1,
"HarvestIndex": 0.444
},
{
"Name": "Temp_gras",
"DM_content": 1.0,
"FracR": 0.0,
"C_input_CropRes": 3.4,
"HarvestIndex": 0.444
},
{
"Name": "Nat_gras",
"DM_content": 1.0,
"FracR": 0.0,
"C_input_CropRes": 5.1,
"HarvestIndex": 0.444
},
{
"Name": "Gras",
"DM_content": 1.0,
"FracR": 0.0,
"C_input_CropRes": 4.59,
"HarvestIndex": 0.444
},
{
"Name": "Fodder_maize",
"DM_content": 0.35,
"FracR": 0.0,
"C_input_CropRes": 1.1,
"HarvestIndex": 0.67
},
{
"Name": "Maize",
"DM_content": 0.85,
"FracR": 0.25,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.46
},
{
"Name": "Corn_cob_mix",
"DM_content": 0.8,
"FracR": 0.25,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.46
},
{
"Name": "Winter_wheat",
"DM_content": 0.85,
"FracR": 0.62,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.46
},
{
"Name": "Summer_wheat",
"DM_content": 0.85,
"FracR": 0.62,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.46
},
{
"Name": "Summer_barley",
"DM_content": 0.85,
"FracR": 0.43,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.46
},
{
"Name": "winter_barley",
"DM_content": 0.85,
"FracR": 0.43,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.46
},
{
"Name": "Sugarbeet",
"DM_content": 0.25,
"FracR": 0.0,
"C_input_CropRes": 2.732142857142857,
"HarvestIndex": 0.69
},
{
"Name": "Cons_pot_clay",
"DM_content": 0.24,
"FracR": 0.0,
"C_input_CropRes": 1.7897727272727275,
"HarvestIndex": 0.69
},
{
"Name": "Pot_clay",
"DM_content": 0.24,
"FracR": 0.0,
"C_input_CropRes": 1.953409090909091,
"HarvestIndex": 0.69
},
{
"Name": "Starch_pot",
"DM_content": 0.24,
"FracR": 0.0,
"C_input_CropRes": 1.6670454545454545,
"HarvestIndex": 0.69
},
{
"Name": "Cons_pot_sand",
"DM_content": 0.24,
"FracR": 0.0,
"C_input_CropRes": 1.7897727272727275,
"HarvestIndex": 0.69
},
{
"Name": "Pot_sand",
"DM_content": 0.24,
"FracR": 0.0,
"C_input_CropRes": 1.953409090909091,
"HarvestIndex": 0.69
},
{
"Name": "Vegetables_root",
"DM_content": 0.099,
"FracR": 0.0,
"C_input_CropRes": 1.61648275862069,
"HarvestIndex": 0.627333333333333
},
{
"Name": "Vegetables_leaf",
"DM_content": 0.04575,
"FracR": 0.0,
"C_input_CropRes": 0.704347826086956,
"HarvestIndex": 0.56125
},
{
"Name": "Vegetables_cabbage",
"DM_content": 0.0837058823529412,
"FracR": 0.0,
"C_input_CropRes": 2.75625,
"HarvestIndex": 0.472941176470588
},
{
"Name": "Vegetables_stem",
"DM_content": 0.0752,
"FracR": 0.0,
"C_input_CropRes": 0.704347826086956,
"HarvestIndex": 0.602
},
{
"Name": "Pumpkin",
"DM_content": 0.183,
"FracR": 0.0,
"C_input_CropRes": 0.704347826086956,
"HarvestIndex": 0.56
},
{
"Name": "Chicory",
"DM_content": 0.233,
"FracR": 0.0,
"C_input_CropRes": 1.40869565217391,
"HarvestIndex": 0.6
},
{
"Name": "Courgette",
"DM_content": 0.048,
"FracR": 0.0,
"C_input_CropRes": 0.704347826086956,
"HarvestIndex": 0.40
},
{
"Name": "Other_veg",
"DM_content": 0.10967,
"FracR": 0.0,
"C_input_CropRes": 1.22840281644892,
"HarvestIndex": 0.54622
},
{
"Name": "Grasseed",
"DM_content": 0.85,
"FracR": 0.0,
"C_input_CropRes": 2.7155172413793105,
"HarvestIndex": 0.2
},
{
"Name": "Onion",
"DM_content": 0.25,
"FracR": 0.0,
"C_input_CropRes": 0.5625,
"HarvestIndex": 1.0
},
{
"Name": "Bulbs",
"DM_content": 0.25,
"FracR": 0.0,
"C_input_CropRes": 0.7575000000000001,
"HarvestIndex": 1.0
},
{
"Name": "Fallow",
"DM_content": 0.0,
"FracR": 0.0,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.0
},
{
"Name": "Nurseries",
"DM_content": 0.25,
"FracR": 0.0,
"C_input_CropRes": 1.505,
"HarvestIndex": 0.85
},
{
"Name": "Pulses",
"DM_content": 0.85,
"FracR": 0.0,
"C_input_CropRes": 2.0454545454545454,
"HarvestIndex": 0.69
},
{
"Name": "Apples",
"DM_content": 0.14,
"FracR": 0.0,
"C_input_CropRes": 2.6,
"HarvestIndex": 1.0
},
{
"Name": "Pears",
"DM_content": 0.14,
"FracR": 0.0,
"C_input_CropRes": 2.6,
"HarvestIndex": 1.0
},
{
"Name": "Luzerne",
"DM_content": 0.25,
"FracR": 0.0,
"C_input_CropRes": 1.779,
"HarvestIndex": 0.5
},
{
"Name": "Other_crops",
"DM_content": 0.7,
"FracR": 0.0,
"C_input_CropRes": 2.0359063662409858,
"HarvestIndex": 0.5
},
{
"Name": "Other_seeds",
"DM_content": 0.85,
"FracR": 0.0,
"C_input_CropRes": 2.7155172413793105,
"HarvestIndex": 0.5
},
{
"Name": "Triticale",
"DM_content": 0.85,
"FracR": 0.5,
"C_input_CropRes": 2.2790322580645164,
"HarvestIndex": 0.46
},
{
"Name": "Rapeseed",
"DM_content": 0.85,
"FracR": 0.5,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.69
},
{
"Name": "Strawberry",
"DM_content": 0.15,
"FracR": 0.0,
"C_input_CropRes": 2.0,
"HarvestIndex": 0.5
},
{
"Name": "Rye",
"DM_content": 0.85,
"FracR": 0.5,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.46
},
{
"Name": "Other_fruits",
"DM_content": 0.15,
"FracR": 0.0,
"C_input_CropRes": 2.6,
"HarvestIndex": 1.0
},
{
"Name": "oats",
"DM_content": 0.85,
"FracR": 0.5,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.46
},
{
"Name": "Green_manure",
"DM_content": 0.25,
"FracR": 0.0,
"C_input_CropRes": 3.7,
"HarvestIndex": 0.3
},
{
"Name": "Fibres",
"DM_content": 0.85,
"FracR": 0.0,
"C_input_CropRes": 0.13636363636363635,
"HarvestIndex": 0.92
},
{
"Name": "Sunflower",
"DM_content": 0.85,
"FracR": 0.0,
"C_input_CropRes": 0.0,
"HarvestIndex": 0.46
},
{
"Name": "Fodder_beet",
"DM_content": 0.25,
"FracR": 0.0,
"C_input_CropRes": 2.732142857142857,
"HarvestIndex": 0.69
},
{
"Name": "Other_cereals",
"DM_content": 0.85,
"FracR": 0.5,
"C_input_CropRes": 2.0359063662409853,
"HarvestIndex": 0.46
},
{
"Name": "Wine",
"DM_content": 0.15,
"FracR": 0.0,
"C_input_CropRes": 2.6,
"HarvestIndex": 0.7
},
{
"Name": "Miscanthus",
"DM_content": 1.0,
"FracR": 0.0,
"C_input_CropRes": 5.1,
"HarvestIndex": 0.444
},
{
"Name": "Switchgrass",
"DM_content": 1.0,
"FracR": 0.0,
"C_input_CropRes": 5.1,
"HarvestIndex": 0.444
},
{
"Name": "Willow",
"DM_content": 1.0,
"FracR": 0.0,
"C_input_CropRes": 2.6,
"HarvestIndex": 0.85
}
]

View File

@@ -0,0 +1,78 @@
{
"StrawCrops": [
{
"StrawCrop": "Maize",
"DM_Content": 0.7
},
{
"StrawCrop": "Corn_cob_mix",
"DM_Content": 0.7
},
{
"StrawCrop": "Winter_wheat",
"DM_Content": 0.85
},
{
"StrawCrop": "Summer_wheat",
"DM_Content": 0.85
},
{
"StrawCrop": "Summer_barley",
"DM_Content": 0.85
},
{
"StrawCrop": "winter_barley",
"DM_Content": 0.85
},
{
"StrawCrop": "Rapeseed",
"DM_Content": 0.6
},
{
"StrawCrop": "Rye",
"DM_Content": 0.85
},
{
"StrawCrop": "oats",
"DM_Content": 0.85
},
{
"StrawCrop": "Sunflower",
"DM_Content": 0.6
},
{
"StrawCrop": "Other_cereals",
"DM_Content": 0.85
}
],
"GreenManureType": [
"Bladrammenas",
"GeleMosterd",
"Voederwikke",
"Afrikaantjes",
"JapanseHaver",
"ItaliaansRaaigras",
"Mengsel3soorten",
"Mengsel12soorten",
"EngelsRaaigras",
"Facelia",
"Grasland",
"Overig",
"Rietzwenkgras"
],
"Perennial": [
"Nurseries",
"Apples",
"Pears",
"Other_fruits",
"Wine",
"Miscanthus",
"Switchgrass",
"Willow"
],
"Grass_nat": [
"Perm_gras",
"Nat_gras",
"Gras"
]
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,76 @@
{
"ManureSources_liv": [
{
"ManureSource_liv": "WMGRAAS",
"Description": "Weidemest graasdieren"
},
{
"ManureSource_liv": "DMGRAAS",
"Description": "Drijfmest graasdieren"
},
{
"ManureSource_liv": "VMGRAAS",
"Description": "Vaste mest graasdieren"
},
{
"ManureSource_liv": "DMSTAL",
"Description": "Drijfmest staldieren"
},
{
"ManureSource_liv": "VMSTAL",
"Description": "Vaste mest staldieren"
},
{
"ManureSource_liv": "FRACDUN",
"Description": "Dunne Fractie"
},
{
"ManureSource_liv": "FRACDIK",
"Description": "Dikke Fractie"
},
{
"ManureSource_liv": "KMVERV",
"Description": "Kunstmestvervangers"
},
{
"ManureSource_liv": "DIGEST",
"Description": "Digestaat"
},
{
"ManureSource_liv": "CHAMPOST",
"Description": "Champost"
},
{
"ManureSource_liv": "SCHA_GEIT",
"Description": "Schapen/geitenmest"
},
{
"ManureSource_liv": "VMPIG",
"Description": "Vaste varkensmest"
},
{
"ManureSource_liv": "DM_ZEUG",
"Description": "Zeugendrijfmest"
},
{
"ManureSource_liv": "BOKASHI",
"Description": "Bokashi"
},
{
"ManureSource_liv": "OVERIG",
"Description": "Overig"
}
],
"composts": [
{
"compost": "COMPOST",
"Description": "compost"
}
],
"CarbonSource": [
"CarbonManure",
"CarbonResidues",
"CarbonGreenManure",
"CarbonCompost"
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
{
"SoilType": [ "Moerig", "Veen", "Klei", "Zand", "Loss" ],
"MineralSoils": [ "Klei", "Zand" ],
"Months": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12", "Total", "Average" ],
"AllMonths": [ "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10", "M11", "M12" ],
"ClimateVar": [ "Evapotranspiration", "Precipitation", "Temperature" ]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,66 @@
[
{
"ManCcont": "WMGRAAS",
"Value": 0.0356
},
{
"ManCcont": "DMGRAAS",
"Value": 0.0356
},
{
"ManCcont": "VMGRAAS",
"Value": 0.077385
},
{
"ManCcont": "DMSTAL",
"Value": 0.03955
},
{
"ManCcont": "VMSTAL",
"Value": 0.209715
},
{
"ManCcont": "COMPOST",
"Value": 0.10535
},
{
"ManCcont": "FRACDUN",
"Value": 0.01715
},
{
"ManCcont": "FRACDIK",
"Value": 0.0759
},
{
"ManCcont": "KMVERV",
"Value": 0.010585
},
{
"ManCcont": "DIGEST",
"Value": 0.01652
},
{
"ManCcont": "CHAMPOST",
"Value": 0.1050
},
{
"ManCcont": "SCHA_GEIT",
"Value": 0.09225
},
{
"ManCcont": "VMPIG",
"Value": 0.0765
},
{
"ManCcont": "DM_ZEUG",
"Value": 0.0125
},
{
"ManCcont": "BOKASHI",
"Value": 0.19
},
{
"ManCcont": "OVERIG",
"Value": 0.01652
}
]

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,303 @@
[
{
"CropCode": "1020101",
"CropName": "Wintertarwe",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": ""
},
{
"CropCode": "1020102",
"CropName": "Wintergerst",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": ""
},
{
"CropCode": "1020103",
"CropName": "Winterrogge",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": ""
},
{
"CropCode": "1020201",
"CropName": "Zomertarwe",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": ""
},
{
"CropCode": "1020202",
"CropName": "Zomergerst",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": ""
},
{
"CropCode": "1020203",
"CropName": "Zomerrogge",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": ""
},
{
"CropCode": "1030301",
"CropName": "Alexandrijnse klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030302",
"CropName": "Bastaard klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030303",
"CropName": "Hopklaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030304",
"CropName": "Inkarnaatklaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030305",
"CropName": "Perzische klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030306",
"CropName": "Rode klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030307",
"CropName": "Rolklaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030308",
"CropName": "Witte honingklaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030309",
"CropName": "Witte klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030401",
"CropName": "Blauwe Lupine",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030402",
"CropName": "Gele Lupine",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030403",
"CropName": "Witte Lupine",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030501",
"CropName": "Voederwikke",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030502",
"CropName": "Bonte wikke",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Voederwikke"
},
{
"CropCode": "1030602",
"CropName": "Hanekam",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Overig"
},
{
"CropCode": "1040101",
"CropName": "Stoppelknol",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Overig"
},
{
"CropCode": "1040102",
"CropName": "Bladrammenas",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Bladrammenas"
},
{
"CropCode": "1040103",
"CropName": "Bruine mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "GeleMosterd"
},
{
"CropCode": "1040104",
"CropName": "Gele mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "GeleMosterd"
},
{
"CropCode": "1040105",
"CropName": "Zwarte mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "GeleMosterd"
},
{
"CropCode": "1040108",
"CropName": "Bladkool",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Overig"
},
{
"CropCode": "1040109",
"CropName": "Mergkool",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Overig"
},
{
"CropCode": "1040110",
"CropName": "Ethiopische mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "GeleMosterd"
},
{
"CropCode": "1040111",
"CropName": "Serepta mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "GeleMosterd"
},
{
"CropCode": "1040112",
"CropName": "Zwaardherik",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Overig"
},
{
"CropCode": "1050101",
"CropName": "Engels raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "EngelsRaaigras"
},
{
"CropCode": "1050102",
"CropName": "Frans raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "ItaliaansRaaigras"
},
{
"CropCode": "1050103",
"CropName": "Gekruist raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "ItaliaansRaaigras"
},
{
"CropCode": "1050104",
"CropName": "Italiaans raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "ItaliaansRaaigras"
},
{
"CropCode": "1050105",
"CropName": "Trosraaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "ItaliaansRaaigras"
},
{
"CropCode": "1050106",
"CropName": "Westerwolds raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "ItaliaansRaaigras"
},
{
"CropCode": "1050201",
"CropName": "Roodzwenkgras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Rietzwenkgras"
},
{
"CropCode": "1050408",
"CropName": "Sudangras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Rietzwenkgras"
},
{
"CropCode": "1080107",
"CropName": "Facelia",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Facelia"
},
{
"CropCode": "1080108",
"CropName": "Spurrie",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Overig"
},
{
"CropCode": "1080109",
"CropName": "Afrikaantjes",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Afrikaantjes"
},
{
"CropCode": "1080110",
"CropName": "Raketblad",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Overig"
}
]

View File

@@ -0,0 +1 @@
UTF-8

Binary file not shown.

View File

@@ -0,0 +1 @@
PROJCS["RD_New",GEOGCS["GCS_Amersfoort",DATUM["D_Amersfoort",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Double_Stereographic"],PARAMETER["False_Easting",155000.0],PARAMETER["False_Northing",463000.0],PARAMETER["Central_Meridian",5.38763888888889],PARAMETER["Scale_Factor",0.9999079],PARAMETER["Latitude_Of_Origin",52.15616055555555],UNIT["Meter",1.0]]

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,10 @@
{
"LayerDepth": 25.0,
"kDPM": 10.0,
"kRPM": 0.3,
"kBIO": 0.66,
"kHUM": 0.02,
"StubbleFraction": 0.45,
"CarbonBiomass": 0.45,
"FracBelowGroundCinput": 0.25
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,123 @@
[
{
"ManureName": "Bladrammenas",
"GoodQuality": 3.573099415204678,
"AverageQuality": 2.5011695906432747,
"BadQuality": 1.786549707602339
},
{
"ManureName": "GeleMosterd",
"GoodQuality": 2.05696405648267,
"AverageQuality": 1.4398748395378689,
"BadQuality": 1.028482028241335
},
{
"ManureName": "Voederwikke",
"GoodQuality": 1.2933673469387754,
"AverageQuality": 0.9053571428571427,
"BadQuality": 0.6466836734693877
},
{
"ManureName": "Afrikaantjes",
"GoodQuality": 2.8392857142857153,
"AverageQuality": 1.9875000000000005,
"BadQuality": 1.4196428571428577
},
{
"ManureName": "JapanseHaver",
"GoodQuality": 2.5844583333333335,
"AverageQuality": 1.8091208333333333,
"BadQuality": 1.2922291666666668
},
{
"ManureName": "ItaliaansRaaigras",
"GoodQuality": 3.1635153508771934,
"AverageQuality": 2.2144607456140353,
"BadQuality": 1.5817576754385967
},
{
"ManureName": "Rogge",
"GoodQuality": 2.5,
"AverageQuality": 1.75,
"BadQuality": 1.25
},
{
"ManureName": "Graan",
"GoodQuality": 2.2,
"AverageQuality": 1.54,
"BadQuality": 1.1
},
{
"ManureName": "Haver",
"GoodQuality": 2.6,
"AverageQuality": 1.82,
"BadQuality": 1.3
},
{
"ManureName": "Gerst",
"GoodQuality": 2.55,
"AverageQuality": 1.785,
"BadQuality": 1.275
},
{
"ManureName": "Mengsel_groenbraak",
"GoodQuality": 2.8,
"AverageQuality": 1.96,
"BadQuality": 1.4
},
{
"ManureName": "Mengsel_natuurbraak",
"GoodQuality": 3.0,
"AverageQuality": 2.1,
"BadQuality": 1.5
},
{
"ManureName": "Mengsel_Nbron",
"GoodQuality": 2.8,
"AverageQuality": 1.96,
"BadQuality": 1.4
},
{
"ManureName": "Mengsel_Nvang",
"GoodQuality": 2.8,
"AverageQuality": 1.96,
"BadQuality": 1.4
},
{
"ManureName": "EngelsRaaigras",
"GoodQuality": 3.1635153508771934,
"AverageQuality": 2.2144607456140353,
"BadQuality": 1.5817576754385967
},
{
"ManureName": "Facelia",
"GoodQuality": 0.2925,
"AverageQuality": 0.20475,
"BadQuality": 0.14625
},
{
"ManureName": "Grasland",
"GoodQuality": 3.418421052631579,
"AverageQuality": 2.3928947368421056,
"BadQuality": 1.7092105263157895
},
{
"ManureName": "Overig",
"GoodQuality": 6.728475765306122,
"AverageQuality": 4.709933035714285,
"BadQuality": 3.364237882653061
},
{
"ManureName": "Rietzwenkgras",
"GoodQuality": 3.1635153508771934,
"AverageQuality": 2.2144607456140353,
"BadQuality": 1.5817576754385967
},
{
"ManureName": "Triticale",
"GoodQuality": 2.2,
"AverageQuality": 1.54,
"BadQuality": 1.1
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -1,82 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6</TargetFramework>
<AssemblyName>CarbonLib</AssemblyName>
<PackageId>CarbonLib</PackageId>
<RuntimeIdentifiers>win10-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Version>4.8.4</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Base.Core.Common.Geometry" Version="4.8.2" />
<PackageReference Include="NetTopologySuite" Version="2.5.0" />
<PackageReference Include="NetTopologySuite.IO.GeoJSON" Version="3.0.0" />
</ItemGroup>
<ItemGroup>
<None Update="config\CropCoverMonth.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\CropProperties.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\CropSets.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\CropYield.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\CropYield.json.old">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\Farm_input_sets.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\GIS_Soil_Sets.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\KNMI_data.csv">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\ManCcont.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\Mapping\MappingCropsFarmmapsMiterraRothC.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\Mapping\MappingGreenManureFarmmapsMiterraRothC.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\ParametersRothC.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\PC4\PC4.cpg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\PC4\PC4.dbf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\PC4\PC4.prj">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\PC4\PC4.shp">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\PC4\PC4.shx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\RegionSets.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\SetsForDataTransformation.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="config\YieldGreenManure.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@@ -1,9 +1,11 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30907.101
# Visual Studio Version 17
VisualStudioVersion = 17.14.36414.22 d17.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CarbonLib", "CarbonLib.csproj", "{51876378-DB3E-4D30-8EDA-83DDDCE4C4ED}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CarbonLib", "CarbonLib\CarbonLib.csproj", "{51876378-DB3E-4D30-8EDA-83DDDCE4C4ED}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CarbonConsoleApp", "CarbonConsoleApp\CarbonConsoleApp.csproj", "{A961AA67-3D88-E648-51CC-5DAC78203614}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -15,6 +17,10 @@ Global
{51876378-DB3E-4D30-8EDA-83DDDCE4C4ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{51876378-DB3E-4D30-8EDA-83DDDCE4C4ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{51876378-DB3E-4D30-8EDA-83DDDCE4C4ED}.Release|Any CPU.Build.0 = Release|Any CPU
{A961AA67-3D88-E648-51CC-5DAC78203614}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A961AA67-3D88-E648-51CC-5DAC78203614}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A961AA67-3D88-E648-51CC-5DAC78203614}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A961AA67-3D88-E648-51CC-5DAC78203614}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -0,0 +1,20 @@
using CarbonLib.Carbon;
using CarbonService.Models;
using CarbonLib.Carbon.Models;
using System;
namespace CarbonLib
{
public abstract class CarbonCalculation : ICarbonCalculation
{
public abstract CarbonRequest MapFarmMapsToMiterra(FarmMapsCarbonRequest farmInput);
public abstract string Validate(CarbonRequest farmInput);
public abstract CarbonSummary Calculate(CarbonRequest farmInput);
public abstract CarbonSummary CalculateClimateScenario(CarbonRequest farmInput);
public double? GetCropYield(string cropCode, int year, int postalCode)
{
throw new NotImplementedException();
}
}
}

View File

@@ -1,19 +1,14 @@
using Base.Core.Common;
using Base.Core.Common.Geometry;
using CarbonService.Models;
using FarmMapsAPI.Carbon.Models;
using NetTopologySuite.Geometries;
using OSGeo.OGR;
using CarbonService.Models;
using CarbonLib.Carbon.Models;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace FarmMapsAPI.Carbon
namespace CarbonLib.Carbon
{
public class CarbonCalculation
public class CarbonCalculation24 : ICarbonCalculation
{
private readonly string configPath;
@@ -32,7 +27,7 @@ namespace FarmMapsAPI.Carbon
private List<MappingCropFarmmapsMiterraRothC> mappingCropFarmmapsMiterraRothC;
private List<MappingGreenManureFarmmapsMiterraRothC> mappingGreenManureFarmmapsMiterraRothC;
public CarbonCalculation(string configPath)
public CarbonCalculation24(string configPath)
{
this.configPath = configPath;
@@ -102,19 +97,19 @@ namespace FarmMapsAPI.Carbon
}
}
var allGreenManure = farmInput.CropFields.SelectMany(s => s.GreenManures.SelectMany(x=>x.GreenManureTypes)).Distinct();
var allGreenManure = farmInput.CropFields.SelectMany(s => s.GreenManures.SelectMany(x => x.GreenManureTypes)).Distinct();
foreach (var greenManure in allGreenManure)
{
if (!yieldGreenManureConfig.Any(x=>x.ManureName.ToLower() == greenManure.Type.ToLower()))
if (!yieldGreenManureConfig.Any(x => x.ManureName.ToLower() == greenManure.Type.ToLower()))
{
return $"Unknown green manure {greenManure.Type}";
}
}
var allOrgManure = farmInput.CropFields.SelectMany(x => x.HistoricalCropData.SelectMany(s => s.Crops.Where(w=>w.OrganicManures != null).SelectMany(y=>y.OrganicManures.Select(r=>r.Type)))).Distinct();
var allOrgManure = farmInput.CropFields.SelectMany(x => x.HistoricalCropData.SelectMany(s => s.Crops.Where(w => w.OrganicManures != null).SelectMany(y => y.OrganicManures.Select(r => r.Type)))).Distinct();
foreach (var orgManure in allOrgManure)
{
if (!manCcontConfig.Any(x=>x.ManCcont == orgManure))
if (!manCcontConfig.Any(x => x.ManCcont == orgManure))
{
return $"Unknown organic manure {orgManure}";
}
@@ -139,11 +134,11 @@ namespace FarmMapsAPI.Carbon
Area = cropField.Area,
HistoricalCropData = mappedCropData,
SoilType = MapSoil(cropField.SoilType),
SoilProperty = new SoilProperty { Clay_Content = cropField.SoilProperty.Clay_Content, OM_Const = cropField.SoilProperty.OM_Const, Depth10 = cropField.SoilProperty.Depth10, Depth = cropField.SoilProperty.Depth, OM_Choice = cropField.SoilProperty.OM_Choice },
SoilProperty = new SoilProperty { Clay_Content = cropField.SoilProperty.Clay_Content, OM_Const = cropField.SoilProperty.OM_Const, C_Const = cropField.SoilProperty.C_Const, Depth10 = cropField.SoilProperty.Depth10, Depth = cropField.SoilProperty.Depth, OM_Choice = cropField.SoilProperty.OM_Choice },
GreenManures = greenManures
});
});
foreach (var crops in cropField.HistoricalCropData)
{
{
foreach (var cropYear in crops.Crops)
{
if (!string.IsNullOrEmpty(cropYear.MiterraCropName))
@@ -159,7 +154,7 @@ namespace FarmMapsAPI.Carbon
cropYear.OrganicManures.Where(y=>y.Quantity > 0 && !string.IsNullOrEmpty(y.Type)).Select(x => new OrganicManureType { Type = x.Type, Quantity = x.Quantity.HasValue? x.Quantity.Value : 0 }).ToList(),
CropYield = cropYear.CropYield,
Irrigation = crops.Irrigations} }
});
});
}
else
{
@@ -206,7 +201,7 @@ namespace FarmMapsAPI.Carbon
{
greenManures.Add(new GreenManure { Year = crops.Year, GreenManureTypes = new List<GreenManureType> { new GreenManureType { Type = greenManure, Quality = cropYear.Quality == QualityFarmMaps.Good ? Quality.Good : cropYear.Quality == QualityFarmMaps.Bad ? Quality.Bad : Quality.Average } } });
}
}
}
}
}
return mappedInput;
@@ -216,14 +211,47 @@ namespace FarmMapsAPI.Carbon
{
string provinceCode = GetProvinceCode(dataTransformationSet, postalCode);
var crpYield = cropYieldConfig.SingleOrDefault(x => x.CropName.ToLower() == cropCode.ToLower());
if (crpYield == null)
{
return 0;
}
var crpYieldProvince = crpYield.Yields.SingleOrDefault(x => x.ProvinceCode == provinceCode);
if (crpYieldProvince == null)
{
return 0;
}
var cropYield = crpYieldProvince.YearData.SingleOrDefault(x => x.Year == year)?.YieldValue;
return cropYield;
}
public CarbonSummary CalculateClimateScenario(CarbonRequest farmInput)
{
var simpleResult = Calculate(farmInput);
return simpleResult;
}
private List<double> GetMinMaxMedian(List<YearSummary> yearData, int year, string varName)
{
if (yearData.Count == 0)
{
}
var minValue = (double)yearData.Min(s => s.GetType().GetProperty(varName).GetValue(s));
var medianValue = CalculateMedian(yearData.Select(s => Convert.ToDouble(s.GetType().GetProperty(varName).GetValue(s))).ToList());
var maxValue = (double)yearData.Max(s => s.GetType().GetProperty(varName).GetValue(s));
return new List<double> { minValue, medianValue, maxValue };
}
public CarbonSummary Calculate(CarbonRequest farmInput)
{
return Calculate(farmInput, 0);
}
public CarbonSummary Calculate(CarbonRequest farmInput, int climateScenarioNumber = 0, Dictionary<(string, string, int), ClimateVariable> climate = null)
{
var knmiFile = Helper.GetPlatformIndependentDirectoryPath(Path.Combine(configPath, "KNMI_data.csv"));
var climateFile = Helper.GetPlatformIndependentDirectoryPath(Path.Combine(configPath, "klimaatscenario.csv"));
// soilTypeData (external input)
var soilTypeData = GetSoilTypeData(farmInput);
@@ -239,12 +267,7 @@ namespace FarmMapsAPI.Carbon
var year = GetYears(farmInputSet, farmInput);
var carbon_organicmatter_factor = 0.54;
if (farmInput.CropFields[0].SoilProperty.OM_Choice == "c")
{
carbon_organicmatter_factor = 1;
}
//////////////////////////////////////////////
// precalculations
//////////////////////////////////////////////
@@ -253,19 +276,33 @@ namespace FarmMapsAPI.Carbon
//soilPropSoilType
var soilPropSoilType = GetSoilPropSoilType(soilTypeData, soilPropertiesField);
//soilPropertiesField (again) --> remove this
//if OM_cont > 0, then C_cont = OM_cont *0.54, else take C_cont from input
foreach (var item in soilPropertiesField)
{
var soilProps = soilPropSoilType.Keys.Where(x => x.Item1 == item.Key).ToList();
var sumCorr = 0.0;
double? sumC_Cont = null;
foreach (var soilProp in soilProps)
{
sumCorr += soilPropSoilType[soilProp].OM_Corr;
if (soilPropSoilType[soilProp].OM_Cont > 0)
{
if (sumC_Cont == null)
{
sumC_Cont = soilPropSoilType[soilProp].OM_Cont * 0.54;
}
else
{
sumC_Cont += soilPropSoilType[soilProp].OM_Cont * 0.54;
}
}
}
if (sumC_Cont.HasValue)
{
item.Value.C_Cont = sumC_Cont.Value;
}
item.Value.OM_Corr = sumCorr;
}
var oM_corr_SoilType = new Dictionary<(string,string), double>();
var oM_corr_SoilType = new Dictionary<(string, string), double>();
var c_corr_SoilType = new Dictionary<(string, string), double>();
foreach (var item in soilPropertiesField)
{
var soilOfItem = soilTypeData[item.Key].FirstOrDefault();
@@ -278,25 +315,25 @@ namespace FarmMapsAPI.Carbon
}
// Different corrections for depth (10, 25, 30 cm)
// depth of 10cm has same result as previous checkbox (sample taken at 10cm)
parameterSet.LayerDepth = item.Value.Depth.HasValue? item.Value.Depth.Value : parameterSet.LayerDepth;
parameterSet.LayerDepth = item.Value.Depth.HasValue ? item.Value.Depth.Value : parameterSet.LayerDepth;
if (initialSoil == "Temp_gras" && soilPropertyDepth10)
{
oM_corr_SoilType.Add((item.Key, soilOfItem), item.Value.OM_Cont * 0.97);
}
c_corr_SoilType.Add((item.Key, soilOfItem), item.Value.C_Cont * 0.97);
}
else if (cropSet.Grass_nat.Contains(initialSoil) && soilPropertyDepth10 && (soilOfItem == "Klei" || soilOfItem == "Zand"))
{
if (soilOfItem == "Klei")
{
oM_corr_SoilType.Add((item.Key, soilOfItem), item.Value.OM_Cont * 0.67);
c_corr_SoilType.Add((item.Key, soilOfItem), item.Value.C_Cont * 0.67);
}
else
{
oM_corr_SoilType.Add((item.Key, soilOfItem), item.Value.OM_Cont * 0.81);
c_corr_SoilType.Add((item.Key, soilOfItem), item.Value.C_Cont * 0.81);
}
}
else
{
oM_corr_SoilType.Add((item.Key, soilOfItem), item.Value.OM_Cont);
c_corr_SoilType.Add((item.Key, soilOfItem), item.Value.C_Cont);
}
}
@@ -305,6 +342,12 @@ namespace FarmMapsAPI.Carbon
{
oM_Corr.Add(item.Key.Item1, item.Value);
}
var c_Corr = new Dictionary<string, double>();
foreach (var item in c_corr_SoilType)
{
c_Corr.Add(item.Key.Item1, item.Value);
oM_corr_SoilType.Add(item.Key, item.Value * (1 / 0.54));
}
// soilBulkDensities
Dictionary<string, SoilBulkDensityType> soilBulkDensities = GetSoilBulkDensities(soilPropertiesField, soilTypeData, soilPropSoilType, oM_corr_SoilType);
@@ -346,7 +389,7 @@ namespace FarmMapsAPI.Carbon
// loop rothc
//////////////////////////////////////////
var soc_Field = new Dictionary<string, List<YearColumnValue>>();
var soc_Field = new Dictionary<string, List<YearColumnValue>>();
var cropAreaField1 = new Dictionary<(string, int), List<ColumnValue>>();
var carbonInputs = new GamsThreeKeyParameter();
@@ -381,7 +424,15 @@ namespace FarmMapsAPI.Carbon
}
cropAreaFarm.Add(("Farmname", loopYear), croplist);
Dictionary<string, List<ClimateVariable>> climateVariable = GetClimateVariable(knmiFile, dataTransformationSet, gisSoilSet, loopYear, farmInput);
Dictionary<string, List<ClimateVariable>> climateVariable;
if (climateScenarioNumber == 0)
{
climateVariable = GetClimateVariable(knmiFile, dataTransformationSet, gisSoilSet, loopYear, farmInput, climateFile, climateScenarioNumber);
}
else
{
climateVariable = GetClimateVariable2(knmiFile, dataTransformationSet, gisSoilSet, loopYear, farmInput, climateFile, climateScenarioNumber, climate);
}
// Crop and soil areas
// soilArea keys: (fieldname, year, soil)
@@ -463,7 +514,7 @@ namespace FarmMapsAPI.Carbon
carbonInputManure2[(field.Name, cropData.Crop)].Add(new ColumnValue(compost.Type, result));
}
else
{
{
carbonInputManure2.Add((field.Name, cropData.Crop), new List<ColumnValue> { new ColumnValue(compost.Type, result) });
}
}
@@ -734,7 +785,7 @@ namespace FarmMapsAPI.Carbon
}
tempModFactor.Add(climateVar.Key, valueList);
}
// CoverModFactor
// input sheet
var coverModFactor = new Dictionary<string, List<ColumnValue>>();
@@ -775,7 +826,7 @@ namespace FarmMapsAPI.Carbon
{
if (i == 0)
{
/* smdMax met factor maand corrigeren
SMDmax(Field,Crop,AllMonths) = ifthen(CropCoverMonths(Crop,AllMonths)=1,
SMDmax(Field,Crop,AllMonths),SMDmax(Field,Crop,AllMonths)/1.8);
@@ -904,7 +955,7 @@ namespace FarmMapsAPI.Carbon
foreach (var field in cropAreaField1.Where(x => x.Key.Item2 == loopYear))
{
var valueList = new List<ColumnValue>();
var result = parameterSet.LayerDepth * bulkDens[field.Key.Item1] * oM_Corr[field.Key.Item1] * carbon_organicmatter_factor;// 0.54;
var result = parameterSet.LayerDepth * bulkDens[field.Key.Item1] * c_Corr[field.Key.Item1]; //(used to be oM_Corr[field.Key.Item1] * 0.54)
foreach (var crop in field.Value)
{
valueList.Add(new ColumnValue(crop.Key, result));
@@ -942,7 +993,7 @@ namespace FarmMapsAPI.Carbon
var carbonGreenManure = carbonInput.Value.SingleOrDefault(x => x.Key == "CarbonGreenManure")?.Value ?? 0;
var resultRpm = 0.0;
var resultDpm = 0.0;
if (cropSet.Perennial.Any(x=>x.ToLower() == carbonInput.Key.Item3.ToLower()))
if (cropSet.Perennial.Any(x => x.ToLower() == carbonInput.Key.Item3.ToLower()))
{
resultRpm = (carbonResidues) * 0.6;
resultDpm = (carbonResidues) * 0.4;
@@ -1437,7 +1488,7 @@ namespace FarmMapsAPI.Carbon
// DPMss
// RPMss
// IOMss
var dpmSs = new Dictionary<(string, int), List<ColumnValue>>();
var rpmSs = new Dictionary<(string, int), List<ColumnValue>>();
var iomSs = new Dictionary<(string, int), List<ColumnValue>>();
@@ -1650,7 +1701,7 @@ namespace FarmMapsAPI.Carbon
summary.Initial = sum;
}
foreach(var item in bulkDens)
foreach (var item in bulkDens)
{
var result = item.Value;
foreach (var lYear in allYears)
@@ -1713,7 +1764,7 @@ namespace FarmMapsAPI.Carbon
var iniValue = item.Value.SingleOrDefault(x => x.Key == "IniCcontent")?.Value ?? 0;
var balanceValue = item.Value.SingleOrDefault(x => x.Key == "Balance")?.Value ?? 0;
var resultOmIni = iniValue / carbon_organicmatter_factor;// 0.54;
var resultOmIni = iniValue / 0.54; //carbon_organicmatter_factor
var resultCo2 = balanceValue * (44.0 / 12.0);
item.Value.Add(new ColumnValue("OM_ini", resultOmIni));
@@ -1732,7 +1783,7 @@ namespace FarmMapsAPI.Carbon
var greenManure = item.SOC_CarbonGreenManure;
var compost = item.SOC_CarbonCompost;
item.OM_ini = iniValue / carbon_organicmatter_factor;// 0.54;
item.OM_ini = iniValue / 0.54; //carbon_organicmatter_factor
item.CO2seq = balanceValue * (44.0 / 12.0);
var emision = -1 * (manure + residues + greenManure + compost - balanceValue);
@@ -1761,7 +1812,7 @@ namespace FarmMapsAPI.Carbon
var sumIni = 0.0;
var sumInicc = 0.0;
foreach (var item in soc_Summary.Where(x=>x.Key.Item2 == farm.Key.Item2))
foreach (var item in soc_Summary.Where(x => x.Key.Item2 == farm.Key.Item2))
{
var cropfieldArea = item.Value.SingleOrDefault(x => x.Key == "Total_crop_area")?.Value ?? 0;
sumCarbonMan += item.Value.SingleOrDefault(x => x.Key == "SOC_CarbonManure")?.Value ?? 0;
@@ -1786,7 +1837,7 @@ namespace FarmMapsAPI.Carbon
var resultBal = sumBal / farmArea.Total_crop_area;
var resultIni = sumIni / farmArea.Total_crop_area;
var resultiniCc = sumInicc / farmArea.Total_crop_area;
var resultOm_Ini = resultiniCc / carbon_organicmatter_factor;// 0.54;
var resultOm_Ini = resultiniCc / 0.54; //carbon_organicmatter_factor
var resultCo2 = resultBal * (44.0 / 12.0);
var resultCo2Tot = resultCo2 * farmArea.Total_crop_area;
@@ -1815,7 +1866,7 @@ namespace FarmMapsAPI.Carbon
private List<int> GetYears(FarmInputsetsModel farmInputSet, CarbonRequest farmInput)
{
// assume for all cropfields the same years apply
return farmInput.CropFields.First().HistoricalCropData.Select(x => x.Year).Distinct().OrderBy(o=>o).ToList();
return farmInput.CropFields.First().HistoricalCropData.Select(x => x.Year).Distinct().OrderBy(o => o).ToList();
}
private Dictionary<string, List<string>> GetSoilTypeData(CarbonRequest farmInput)
@@ -1833,7 +1884,8 @@ namespace FarmMapsAPI.Carbon
var soilPropertiesField = new Dictionary<string, SoilPropertyType>();
foreach (var field in farmInput.CropFields)
{
soilPropertiesField.Add(field.Name, new SoilPropertyType { OM_Cont = field.SoilProperty.OM_Const.Value, Clay_Content = field.SoilProperty.Clay_Content.Value, OM_Corr = field.SoilProperty.OM_Const.Value <= 20 ? field.SoilProperty.OM_Const.Value : 0, Depth10 = field.SoilProperty.Depth10.Value, Depth = field.SoilProperty.Depth });
//soilPropertiesField.Add(field.Name, new SoilPropertyType { OM_Cont = field.SoilProperty.OM_Choice.ToLower() == "c" ? field.SoilProperty.OM_Const.Value * 1.85185 : field.SoilProperty.OM_Const.Value, Clay_Content = field.SoilProperty.Clay_Content.Value, OM_Corr = field.SoilProperty.OM_Const.Value <= 20 ? field.SoilProperty.OM_Const.Value : 0, Depth10 = field.SoilProperty.Depth10.Value, Depth = field.SoilProperty.Depth });
soilPropertiesField.Add(field.Name, new SoilPropertyType { OM_Cont = field.SoilProperty.OM_Const.HasValue ? field.SoilProperty.OM_Const.Value : 0, C_Cont = field.SoilProperty.C_Const.HasValue ? field.SoilProperty.C_Const.Value : 0, Clay_Content = field.SoilProperty.Clay_Content.Value, OM_Corr = field.SoilProperty.OM_Const.HasValue && field.SoilProperty.OM_Const.Value <= 20 ? field.SoilProperty.OM_Const.Value : 0, C_Corr = field.SoilProperty.C_Const.HasValue && field.SoilProperty.C_Const.Value <= 10.8 ? field.SoilProperty.C_Const.Value : 0, Depth10 = field.SoilProperty.Depth10.Value, Depth = field.SoilProperty.Depth });
}
return soilPropertiesField;
@@ -1846,7 +1898,7 @@ namespace FarmMapsAPI.Carbon
{
foreach (var item2 in item.Value)
{
soilPropSoilType.Add((item.Key, item2), new SoilPropertyType { Bulk_Density = soilPropertiesField[item.Key].Bulk_Density, Clay_Content = soilPropertiesField[item.Key].Clay_Content, OM_Cont = soilPropertiesField[item.Key].OM_Cont, OM_Corr = soilPropertiesField[item.Key].OM_Corr }); // soilPropertiesField[item.Key]);
soilPropSoilType.Add((item.Key, item2), new SoilPropertyType { Bulk_Density = soilPropertiesField[item.Key].Bulk_Density, Clay_Content = soilPropertiesField[item.Key].Clay_Content, OM_Cont = soilPropertiesField[item.Key].OM_Cont, OM_Corr = soilPropertiesField[item.Key].OM_Corr, C_Cont = soilPropertiesField[item.Key].C_Cont, C_Corr = soilPropertiesField[item.Key].C_Corr }); // soilPropertiesField[item.Key]);
}
}
return soilPropSoilType;
@@ -1901,7 +1953,7 @@ namespace FarmMapsAPI.Carbon
return soilBulkDensities;
}
private static Dictionary<string, List<ClimateVariable>> GetClimateVariable(string knmiFile, SetsForDataTransformation dataTransformationSet, GIS_Soils_Sets gisSoilSet, int loopYear, CarbonRequest farmInput)
private Dictionary<(string, string, int), ClimateVariable> InitClimateFile(string knmiFile, string climateFile = null, int climateScenarioNumber = 0)
{
var data = new List<string>();
using (StreamReader r = new StreamReader(knmiFile))
@@ -1914,31 +1966,197 @@ namespace FarmMapsAPI.Carbon
}
var farmPostalCode = farmInput.PostalCode;
if (farmInput.geometry != null)
var dataClimate = new List<string>();
if (climateFile != null && climateScenarioNumber > 0)
{
// determine poatalcode from geometry
string res = GetPostalCodeFromGeometry(farmInput.geometry);
farmPostalCode = 8211;
using (StreamReader r = new StreamReader(climateFile))
{
string line;
while ((line = r.ReadLine()) != null)
{
dataClimate.Add(line);
}
}
}
// climate (zone, month, year)
var climate = new Dictionary<(string, string, int), ClimateVariable>();
if (dataClimate.Count() > 0)
{
foreach (var row in dataClimate)
{
if (string.IsNullOrEmpty(row) || row.Split(';').Length == 0 || row.Split(';')[0] == "KNMI_zone")
{
continue;
}
var rowArr = row.Split(';');
if (int.Parse(rowArr[3]) == climateScenarioNumber)
{
climate.Add(($"zone{rowArr[0]}", $"M{rowArr[2]}", int.Parse(rowArr[1])), new ClimateVariable(double.Parse(rowArr[4], CultureInfo.InvariantCulture), double.Parse(rowArr[5], CultureInfo.InvariantCulture), double.Parse(rowArr[6], CultureInfo.InvariantCulture)));
}
}
foreach (var row in data)
{
if (string.IsNullOrEmpty(row) || row.Split(';').Length == 0 || string.IsNullOrEmpty(row.Split(';')[0]))
{
continue;
}
var rowArr = row.Split(';');
if (int.Parse(rowArr[2]) <= 2023)
{
if (climate.Any(x => x.Key.Item1 == rowArr[0] && x.Key.Item2 == rowArr[1] && x.Key.Item3 == int.Parse(rowArr[2])))
{
climate[(rowArr[0], rowArr[1], int.Parse(rowArr[2]))].Temperature = double.Parse(rowArr[3], CultureInfo.InvariantCulture);
climate[(rowArr[0], rowArr[1], int.Parse(rowArr[2]))].Precipitation = double.Parse(rowArr[4], CultureInfo.InvariantCulture);
climate[(rowArr[0], rowArr[1], int.Parse(rowArr[2]))].Evapotranspiration = double.Parse(rowArr[5], CultureInfo.InvariantCulture);
}
else
{
climate.Add((rowArr[0], rowArr[1], int.Parse(rowArr[2])), new ClimateVariable(double.Parse(rowArr[3], CultureInfo.InvariantCulture), double.Parse(rowArr[4], CultureInfo.InvariantCulture), double.Parse(rowArr[5], CultureInfo.InvariantCulture)));
}
}
else
{
if (climate.Any(x => x.Key.Item1 == rowArr[0] && x.Key.Item2 == rowArr[1] && x.Key.Item3 == int.Parse(rowArr[2])))
{
continue;
}
climate.Add((rowArr[0], rowArr[1], int.Parse(rowArr[2])), new ClimateVariable(double.Parse(rowArr[3], CultureInfo.InvariantCulture), double.Parse(rowArr[4], CultureInfo.InvariantCulture), double.Parse(rowArr[5], CultureInfo.InvariantCulture)));
}
}
}
else
{
foreach (var row in data)
{
if (string.IsNullOrEmpty(row) || row.Split(';').Length == 0 || string.IsNullOrEmpty(row.Split(';')[0]))
{
continue;
}
var rowArr = row.Split(';');
climate.Add((rowArr[0], rowArr[1], int.Parse(rowArr[2])), new ClimateVariable(double.Parse(rowArr[3], CultureInfo.InvariantCulture), double.Parse(rowArr[4], CultureInfo.InvariantCulture), double.Parse(rowArr[5], CultureInfo.InvariantCulture)));
}
}
return climate;
}
private static Dictionary<string, List<ClimateVariable>> GetClimateVariable2(string knmiFile, SetsForDataTransformation dataTransformationSet, GIS_Soils_Sets gisSoilSet, int loopYear, CarbonRequest farmInput, string climateFile = null, int climateScenarioNumber = 0, Dictionary<(string, string, int), ClimateVariable> climate = null)
{
var climateVariable = new Dictionary<string, List<ClimateVariable>>();
var farmPostalCode = farmInput.PostalCode;
//if (farmInput.geometry != null)
//{
// // determine poatalcode from geometry
// string res = GetPostalCodeFromGeometry(farmInput.geometry);
// farmPostalCode = 8211;
//}
var farmZone = dataTransformationSet.KNMI_zone_Reg.SingleOrDefault(x => x.Reg.Contains(farmPostalCode)).KNMI_zone;
foreach (var field in farmInput.CropFields.Select(s => s.Name))
{
var monthClimateList = new List<ClimateVariable>();
foreach (var month in gisSoilSet.AllMonths)
{
var climateYear = loopYear > 2050 || loopYear < 2011 ? 2012 : loopYear;
var monthData = climate.Single(x => x.Key.Item1 == farmZone && x.Key.Item2 == month && x.Key.Item3 == climateYear).Value;
var newMonthData = new ClimateVariable(monthData.Temperature, monthData.Precipitation, monthData.Evapotranspiration * 1.25);
monthClimateList.Add(newMonthData);
}
climateVariable.Add(field, monthClimateList);
}
return climateVariable;
}
private static Dictionary<string, List<ClimateVariable>> GetClimateVariable(string knmiFile, SetsForDataTransformation dataTransformationSet, GIS_Soils_Sets gisSoilSet, int loopYear, CarbonRequest farmInput, string climateFile = null, int climateScenarioNumber = 0)
{
var data = new List<string>();
using (StreamReader r = new StreamReader(knmiFile))
{
string line;
while ((line = r.ReadLine()) != null)
{
data.Add(line);
}
}
var dataClimate = new List<string>();
if (climateFile != null && climateScenarioNumber > 0)
{
using (StreamReader r = new StreamReader(climateFile))
{
string line;
while ((line = r.ReadLine()) != null)
{
dataClimate.Add(line);
}
}
}
var farmPostalCode = farmInput.PostalCode;
//if (farmInput.geometry != null)
//{
// // determine poatalcode from geometry
// string res = GetPostalCodeFromGeometry(farmInput.geometry);
// farmPostalCode = 8211;
//}
var farmZone = dataTransformationSet.KNMI_zone_Reg.SingleOrDefault(x => x.Reg.Contains(farmPostalCode)).KNMI_zone;
// climate (zone, month, year)
var climate = new Dictionary<(string, string, int), ClimateVariable>();
foreach (var row in data)
if (dataClimate.Count() > 0)
{
if (string.IsNullOrEmpty(row) || row.Split(';').Length == 0 || string.IsNullOrEmpty(row.Split(';')[0]))
foreach (var row in dataClimate)
{
continue;
if (string.IsNullOrEmpty(row) || row.Split(';').Length == 0 || row.Split(';')[0] == "KNMI_zone")
{
continue;
}
var rowArr = row.Split(';');
if (int.Parse(rowArr[3]) == climateScenarioNumber)
{
climate.Add(($"zone{rowArr[0]}", $"M{rowArr[2]}", int.Parse(rowArr[1])), new ClimateVariable(double.Parse(rowArr[4], CultureInfo.InvariantCulture), double.Parse(rowArr[5], CultureInfo.InvariantCulture), double.Parse(rowArr[6], CultureInfo.InvariantCulture)));
}
}
foreach (var row in data)
{
if (string.IsNullOrEmpty(row) || row.Split(';').Length == 0 || string.IsNullOrEmpty(row.Split(';')[0]))
{
continue;
}
var rowArr = row.Split(';');
if (climate.Any(x => x.Key.Item1 == rowArr[0] && x.Key.Item2 == rowArr[1] && x.Key.Item3 == int.Parse(rowArr[2])))
{
continue;
}
climate.Add((rowArr[0], rowArr[1], int.Parse(rowArr[2])), new ClimateVariable(double.Parse(rowArr[3], CultureInfo.InvariantCulture), double.Parse(rowArr[4], CultureInfo.InvariantCulture), double.Parse(rowArr[5], CultureInfo.InvariantCulture)));
}
var rowArr = row.Split(';');
climate.Add((rowArr[0], rowArr[1], int.Parse(rowArr[2])), new ClimateVariable(double.Parse(rowArr[3], CultureInfo.InvariantCulture), double.Parse(rowArr[4], CultureInfo.InvariantCulture), double.Parse(rowArr[5], CultureInfo.InvariantCulture)));
}
else
{
foreach (var row in data)
{
if (string.IsNullOrEmpty(row) || row.Split(';').Length == 0 || string.IsNullOrEmpty(row.Split(';')[0]))
{
continue;
}
var rowArr = row.Split(';');
climate.Add((rowArr[0], rowArr[1], int.Parse(rowArr[2])), new ClimateVariable(double.Parse(rowArr[3], CultureInfo.InvariantCulture), double.Parse(rowArr[4], CultureInfo.InvariantCulture), double.Parse(rowArr[5], CultureInfo.InvariantCulture)));
}
}
var climateVariable = new Dictionary<string, List<ClimateVariable>>();
foreach (var field in farmInput.CropFields.Select(s=>s.Name))
foreach (var field in farmInput.CropFields.Select(s => s.Name))
{
var monthClimateList = new List<ClimateVariable>();
foreach (var month in gisSoilSet.AllMonths)
@@ -1995,40 +2213,40 @@ namespace FarmMapsAPI.Carbon
return carbonInputGreenManure;
}
private static string GetPostalCodeFromGeometry(NetTopologySuite.Geometries.Geometry geometry)
{
//// Set crs default geometry factory to EPSG:4326
NetTopologySuite.NtsGeometryServices.Instance = new NetTopologySuite.NtsGeometryServices(NetTopologySuite.Geometries.Implementation.CoordinateArraySequenceFactory.Instance,
new PrecisionModel(PrecisionModels.Floating), 4326);
// Register all vector drivers
Ogr.RegisterAll();
//private static string GetPostalCodeFromGeometry(NetTopologySuite.Geometries.Geometry geometry)
//{
// //// Set crs default geometry factory to EPSG:4326
// NetTopologySuite.NtsGeometryServices.Instance = new NetTopologySuite.NtsGeometryServices(NetTopologySuite.Geometries.Implementation.CoordinateArraySequenceFactory.Instance,
// new PrecisionModel(PrecisionModels.Floating), 4326);
// // Register all vector drivers
// Ogr.RegisterAll();
// item.geometry is always in WGS84 so reproject to EPSG:28992
var localReference = new LocalReference("EPSG:28992");
var localGeometry = localReference.ToLocalPolygon(geometry as Polygon);
// // item.geometry is always in WGS84 so reproject to EPSG:28992
// var localReference = new LocalReference("EPSG:28992");
// var localGeometry = localReference.ToLocalPolygon(geometry as Polygon);
// get postal code from shape file
// open shape file
using (var postalcodes = Ogr.Open("config/PC4/PC4.shp", 0))
{
// get first layer
var pc4Layer = postalcodes.GetLayerByIndex(0);
// // get postal code from shape file
// // open shape file
// using (var postalcodes = Ogr.Open("config/PC4/PC4.shp", 0))
// {
// // get first layer
// var pc4Layer = postalcodes.GetLayerByIndex(0);
// set spatial filter to geometry ( only intersecting features are retrieved )
pc4Layer.SetSpatialFilter(localGeometry.Centroid.ToOGRGeometry());
// // set spatial filter to geometry ( only intersecting features are retrieved )
// pc4Layer.SetSpatialFilter(localGeometry.Centroid.ToOGRGeometry());
// get next feature
var pc4Feature = pc4Layer.GetNextFeature();
// // get next feature
// var pc4Feature = pc4Layer.GetNextFeature();
// if feature retrieved get the PC4 attribute from it
if (pc4Feature is object)
{
return pc4Feature.GetFieldAsString("PC4");
}
}
// // if feature retrieved get the PC4 attribute from it
// if (pc4Feature is object)
// {
// return pc4Feature.GetFieldAsString("PC4");
// }
// }
return "";
}
// return "";
//}
private string MapSoil(string soil)
{
@@ -2044,5 +2262,29 @@ namespace FarmMapsAPI.Carbon
}
}
private static double CalculateMedian(List<double> numbers)
{
if (numbers == null || numbers.Count == 0)
{
throw new InvalidOperationException("The list is empty or null.");
}
numbers.Sort();
int count = numbers.Count;
if (count % 2 == 0)
{
// Even number of elements
double mid1 = numbers[count / 2 - 1];
double mid2 = numbers[count / 2];
return (mid1 + mid2) / 2.0;
}
else
{
// Odd number of elements
return numbers[count / 2];
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<AssemblyName>CarbonLib</AssemblyName>
<PackageId>CarbonLib</PackageId>
<RuntimeIdentifiers>win-x64;linux-x64;linux-musl-x64</RuntimeIdentifiers>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Version>4.19.0</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NetTopologySuite" Version="2.5.0" />
<PackageReference Include="NetTopologySuite.IO.GeoJSON" Version="3.0.0" />
</ItemGroup>
</Project>

View File

@@ -5,7 +5,7 @@ using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace FarmMapsAPI.Carbon
namespace CarbonLib.Carbon
{
public class GamsSets
{

13
CarbonLib/Helper.cs Normal file
View File

@@ -0,0 +1,13 @@
using System.IO;
namespace CarbonLib
{
public class Helper
{
public static string GetPlatformIndependentDirectoryPath(string path)
{
return path.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
}
}
}

View File

@@ -0,0 +1,19 @@
using CarbonService.Models;
using CarbonLib.Carbon.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CarbonLib.Carbon
{
public interface ICarbonCalculation
{
string Validate(CarbonRequest farmInput);
CarbonRequest MapFarmMapsToMiterra(FarmMapsCarbonRequest farmInput);
CarbonSummary Calculate(CarbonRequest farmInput);
CarbonSummary CalculateClimateScenario(CarbonRequest farmInput);
double? GetCropYield(string cropCode, int year, int postalCode);
}
}

View File

@@ -36,6 +36,7 @@ namespace CarbonService.Models
public class SoilProperty
{
public double? OM_Const { get; set; }
public double? C_Const { get; set; }
public string OM_Choice { get; set; }
public double? Clay_Content { get; set; }
public bool? Depth10 { get; set; }

View File

@@ -3,7 +3,7 @@ using System;
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class CarbonSummary
{
@@ -11,6 +11,14 @@ namespace FarmMapsAPI.Carbon.Models
public List<CropFieldSummary> CropField { get; set; }
}
public class CarbonSummaryList
{
[JsonProperty("cropFieldClimate")]
public List<CropFieldSummaryList> CropFieldClimate { get; set; }
[JsonProperty("cropField")]
public CarbonSummary CarbonSummary { get; set; }
}
public class CropFieldSummary
{
[JsonProperty("name")]
@@ -19,6 +27,14 @@ namespace FarmMapsAPI.Carbon.Models
public List<YearSummary> Summary { get; set; }
}
public class CropFieldSummaryList
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("summary")]
public List<YearSummaryClimate> SummaryList { get; set; }
}
public class YearSummary
{
[JsonProperty("crop")]
@@ -37,6 +53,8 @@ namespace FarmMapsAPI.Carbon.Models
public double IniCcontent { get; set; }
[JsonProperty("oM_ini")]
public double OM_ini { get; set; }
[JsonProperty("oM_ini_Climate")]
public List<double> OM_ini_Climate { get; set; }
[JsonProperty("cO2seq")]
public double CO2seq { get; set; }
[JsonProperty("soC_CarbonCompost")]
@@ -51,6 +69,39 @@ namespace FarmMapsAPI.Carbon.Models
public double Emision { get; set; }
}
public class YearSummaryClimate
{
[JsonProperty("crop")]
public string Crop { get; set; }
[JsonProperty("year")]
public int Year { get; set; }
[JsonProperty("bulk_Density")]
public List<double> Bulk_Density { get; set; }
[JsonProperty("total_crop_area")]
public double Total_crop_area { get; set; }
[JsonProperty("balance")]
public List<double> Balance { get; set; }
[JsonProperty("initial")]
public List<double> Initial { get; set; }
[JsonProperty("iniCcontent")]
public List<double> IniCcontent { get; set; }
[JsonProperty("oM_ini")]
public List<double> OM_ini { get; set; }
[JsonProperty("cO2seq")]
public List<double> CO2seq { get; set; }
[JsonProperty("soC_CarbonCompost")]
public List<double> SOC_CarbonCompost { get; set; }
[JsonProperty("soC_CarbonGreenManure")]
public List<double> SOC_CarbonGreenManure { get; set; }
[JsonProperty("soC_CarbonResidues")]
public List<double> SOC_CarbonResidues { get; set; }
[JsonProperty("soC_CarbonManure")]
public List<double> SOC_CarbonManure { get; set; }
[JsonProperty("emision")]
public List<double> Emision { get; set; }
}
public class FarmYearSummary
{
[JsonProperty("year")]

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class ClimateVariable
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class ColumnValue
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class CropCoverMonthsModel
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class CropPropertyModel
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class StrawCrp
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class YearData
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class ManureSourcesLiv
{

View File

@@ -9,10 +9,11 @@ using System.Runtime.Serialization;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class FarmMapsCarbonRequest
{
public string ModelYear { get; set; }
public string ScenarioName { get; set; }
public int PostalCode { get; set; }
@@ -20,6 +21,9 @@ namespace FarmMapsAPI.Carbon.Models
//added
public int CalculateUntil { get; set; }
[JsonIgnore]
public int CalculateFrom { get; set; } = 0;
}
public class CropFieldFarmMaps
@@ -30,10 +34,11 @@ namespace FarmMapsAPI.Carbon.Models
public double Area { get; set; }
[Required]
public string SoilType { get; set; }
public string SoilTypeDefault { get; set; }
[Required]
public SoilPropertyFarmMaps SoilProperty { get; set; }
[Required]
public List<HistoricalCropDataFarmMaps> HistoricalCropData { get; set; }
public List<HistoricalCropDataFarmMaps> HistoricalCropData { get; set; }
}
public class HistoricalCropDataFarmMaps
@@ -76,10 +81,21 @@ namespace FarmMapsAPI.Carbon.Models
public class SoilPropertyFarmMaps
{
public double? OM_Const { get; set; }
public double? C_Const { get; set; }
public double? OM_ConstDefault { get; set; }
public string OM_Choice { get; set; }
public double? Clay_Content { get; set; }
public double? Clay_ContentDefault { get; set; }
public bool Depth10 { get; set; }
public int? Depth { get; set; }
public int? Depth { get; set; }
[JsonIgnore]
public List<OrganicMatterFarmMaps> OrganicMatters { get; set; }
}
public class OrganicMatterFarmMaps
{
public int Year { get; set; }
public double OrganicMatter { get; set; }
}
public class GreenManureTypeFarmMaps

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class GIS_Soils_Sets
{

View File

@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class GamsThreeKeyParameter
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class ManCcontModel
{

View File

@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class MappingCropFarmmapsMiterraRothC
{

View File

@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class MappingGreenManureFarmmapsMiterraRothC
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class ParameterSet
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class KNMIZoneReg
{

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class SoilBulkDensityType
{

View File

@@ -2,12 +2,14 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class SoilPropertyType
{
public double OM_Cont { get; set; }
public double OM_Corr { get; set; }
public double C_Cont { get; set; }
public double C_Corr { get; set; }
public double Bulk_Density { get; set; }
public double Clay_Content { get; set; }
public int? Depth { get; set; }

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Text;
namespace FarmMapsAPI.Carbon.Models
namespace CarbonLib.Carbon.Models
{
public class YieldGreenManureModel
{

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!--To inherit the global NuGet package sources remove the <clear/> line below -->
<clear />
<add key="akkerweb" value="https://repository.akkerweb.nl/repository/nuget-group/" />
<add key="NPGSQL Unstable" value="https://www.myget.org/F/npgsql-unstable/api/v3/index.json" />
<add key="NetTopologySuite" value="https://www.myget.org/F/nettopologysuite/api/v3/index.json" />
</packageSources>
<packageSourceCredentials>
<akkerweb>
<add key="Username" value="akkerweb" />
<add key="ClearTextPassword" value="1QTrg6g[*" />
</akkerweb>
</packageSourceCredentials>
</configuration>

View File

@@ -1,3 +1,24 @@
# CarbonLib
#
#
Library with model based on the scientifically acknowledged carbon model RothC.
The code is written in C# .NET Core and it is adapted from a project written in GAMS.
Test console app is included with an example input request. The output in written to a file.
## Building a sample
Build the sample using the .NET Core CLI, which is installed with [the .NET Core SDK](https://www.microsoft.com/net/download). Then run
these commands from the CLI in the directory of the CarbonConsoleApp:
```console
dotnet build
dotnet run
```
This will install any needed dependencies, build the project, and run
the project respectively.
For questions regarding the model: chantal.hendriks@wur.nl

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,303 +0,0 @@
[
{
"CropCode": "1020101",
"CropName": "Wintertarwe",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "WinterGroen_Graan"
},
{
"CropCode": "1020102",
"CropName": "Wintergerst",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "WinterGroen_Graan"
},
{
"CropCode": "1020103",
"CropName": "Winterrogge",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Winterrogge"
},
{
"CropCode": "1020201",
"CropName": "Zomertarwe",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "WinterGroen_Graan"
},
{
"CropCode": "1020202",
"CropName": "Zomergerst",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "WinterGroen_Graan"
},
{
"CropCode": "1020203",
"CropName": "Zomerrogge",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Winterrogge"
},
{
"CropCode": "1030301",
"CropName": "Alexandrijnse klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030302",
"CropName": "Bastaard klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030303",
"CropName": "Hopklaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030304",
"CropName": "Inkarnaatklaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030305",
"CropName": "Perzische klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030306",
"CropName": "Rode klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030307",
"CropName": "Rolklaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030308",
"CropName": "Witte honingklaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030309",
"CropName": "Witte klaver",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030401",
"CropName": "Blauwe Lupine",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030402",
"CropName": "Gele Lupine",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030403",
"CropName": "Witte Lupine",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030501",
"CropName": "Voederwikke",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030502",
"CropName": "Bonte wikke",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1030602",
"CropName": "Hanekam",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1040101",
"CropName": "Stoppelknol",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1040102",
"CropName": "Bladrammenas",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Bladrammenas"
},
{
"CropCode": "1040103",
"CropName": "Bruine mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Gele mosterd"
},
{
"CropCode": "1040104",
"CropName": "Gele mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Gele mosterd"
},
{
"CropCode": "1040105",
"CropName": "Zwarte mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Gele mosterd"
},
{
"CropCode": "1040108",
"CropName": "Bladkool",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Bladkool"
},
{
"CropCode": "1040109",
"CropName": "Mergkool",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1040110",
"CropName": "Ethiopische mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Gele mosterd"
},
{
"CropCode": "1040111",
"CropName": "Serepta mosterd",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Gele mosterd"
},
{
"CropCode": "1040112",
"CropName": "Zwaardherik",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Zwaardherik"
},
{
"CropCode": "1050101",
"CropName": "Engels raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Italiaans raaigras"
},
{
"CropCode": "1050102",
"CropName": "Frans raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Italiaans raaigras"
},
{
"CropCode": "1050103",
"CropName": "Gekruist raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Italiaans raaigras"
},
{
"CropCode": "1050104",
"CropName": "Italiaans raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Italiaans raaigras"
},
{
"CropCode": "1050105",
"CropName": "Trosraaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Italiaans raaigras"
},
{
"CropCode": "1050106",
"CropName": "Westerwolds raaigras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Italiaans raaigras"
},
{
"CropCode": "1050201",
"CropName": "Roodzwenkgras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Wintergroen_Gras"
},
{
"CropCode": "1050408",
"CropName": "Sudangras",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Wintergroen_Gras"
},
{
"CropCode": "1080107",
"CropName": "Facelia",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1080108",
"CropName": "Spurrie",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1080109",
"CropName": "Afrikaantjes",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
},
{
"CropCode": "1080110",
"CropName": "Raketblad",
"PurposeCode": "118",
"PurposeName": "Groenbemesting",
"MiterraRothCCrop": "Groenbemester"
}
]