202 Commits

Author SHA1 Message Date
jenkins
2458c00d3f [ci skip] Updated project references #123
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2025-12-10 17:07:46 +00:00
jenkins
bd41203089 Updated project references #122
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-12-10 15:07:11 +00:00
jenkins
5fbb14510d [ci skip] Updated project references #121
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-12-10 14:31:46 +00:00
jenkins
88d38dc2ec Updated project references #120
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2025-12-10 14:02:19 +00:00
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
jenkins
0d1aecc6f5 [ci skip] Updated project references #66
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-07-22 16:15:08 +00:00
jenkins
d001c802f0 Updated project references #65
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-07-22 15:46:16 +00:00
jenkins
dc91e08072 [ci skip] Updated project references #64
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-07-22 15:17:27 +00:00
jenkins
815f95ca0c Updated project references #63
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-07-22 15:01:58 +00:00
2b80515c8e Merged develop into master
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-07-22 16:14:31 +02:00
jenkins
66851a3911 Updated project references #93
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-06-27 16:04:23 +00:00
b149eec39c Merged develop into master
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-06-11 11:12:11 +02:00
jenkins
8823db6340 [ci skip] Updated project references #92
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-06-03 10:41:08 +00:00
jenkins
94fc762de6 [ci skip] Updated project references #62
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-05-24 00:09:24 +00:00
jenkins
c1d200f1af Updated project references #61
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-05-23 23:39:41 +00:00
jenkins
09983e5d28 [ci skip] Updated project references #60
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-05-23 23:09:56 +00:00
jenkins
b42fa7f658 Updated project references #59
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-05-23 22:44:56 +00:00
jenkins
0b7e30d301 Updated project references #56
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-05-23 11:32:48 +00:00
jenkins
253a76e061 [ci skip] Updated project references #55
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-04-23 23:24:45 +00:00
jenkins
2ddd2e4b13 Updated project references #54
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-04-23 22:59:42 +00:00
jenkins
b5e0e049a2 [ci skip] Updated project references #53
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-04-23 22:33:39 +00:00
jenkins
00cad173c6 Updated project references #52
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-04-23 22:09:42 +00:00
jenkins
15656a964a [ci skip] Updated project references #52
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-03-19 17:57:23 +00:00
jenkins
bba50c65b1 [ci skip] Updated project references #51
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-03-19 17:31:19 +00:00
jenkins
3b5afbc5a9 Updated project references #50
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-03-19 16:56:00 +00:00
jenkins
cfacd6def4 [ci skip] Updated project references #49
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-03-19 16:32:19 +00:00
jenkins
34a94d858e Updated project references #48
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-03-19 16:15:43 +00:00
jenkins
0870637575 [ci skip] Updated project references #90
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-03-02 08:21:00 +00:00
jenkins
74eafbf3a3 Updated project references #89
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-03-02 07:55:56 +00:00
jenkins
4ce165ab9d [ci skip] Updated project references #86
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-03-01 18:30:43 +00:00
jenkins
0b2209a074 Updated project references #85
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-03-01 18:13:46 +00:00
jenkins
a37dab3540 [ci skip] Updated project references #82
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-03-01 15:43:44 +00:00
jenkins
03da80f6c0 Updated project references #81
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-03-01 15:26:39 +00:00
jenkins
83d955d027 [ci skip] Changed by Jenkins: 79
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-02-23 09:53:10 +00:00
jenkins
bb4be25e43 [ci skip] Changed by Jenkins: 46
Some checks reported errors
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-02-23 09:40:32 +00:00
095fa8d572 aw5919: fix casing corn crop mix
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-02-23 10:39:45 +01:00
jenkins
0e0c9a7539 [ci skip] Changed by Jenkins: 45
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-02-22 12:29:18 +00:00
jenkins
1eca28a511 Changed by Jenkins: 44
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-02-22 12:03:01 +00:00
jenkins
681329ffa5 [ci skip] Changed by Jenkins: 43
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-02-22 11:38:29 +00:00
jenkins
e7408d3eb5 Changed by Jenkins: 42
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-02-22 11:27:25 +00:00
jenkins
43d5916aff [ci skip] Changed by Jenkins: 41
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-02-22 07:27:01 +00:00
fd0a3fa292 jenkins you foul
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-02-19 13:15:54 +01:00
1641cd83e0 merged from master
Some checks reported errors
FarmMaps.Develop/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-02-19 13:00:49 +01:00
jenkins
5355ff07a6 [ci skip] Changed by Jenkins: 40
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-02-19 10:56:02 +00:00
4c8105ef9a aw5898: fix layerdepth 10, 25, 30cm; fix nullable OM
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-02-19 11:55:14 +01:00
17ba32bda1 Aw5837 Remove redudant ref
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-02-02 13:54:31 +01:00
jenkins
e9e236ff5b [ci skip] Changed by Jenkins: 76
Some checks reported errors
FarmMaps.Develop/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-01-25 11:11:52 +00:00
jenkins
d32d334302 Changed by Jenkins: 75
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-01-25 10:48:48 +00:00
jenkins
04cd57e4db [ci skip] Changed by Jenkins: 39
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-01-25 10:26:59 +00:00
jenkins
be2efc3735 Changed by Jenkins: 38
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-01-25 10:19:44 +00:00
jenkins
1248a4aa1d [ci skip] Changed by Jenkins: 37
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-01-25 10:17:55 +00:00
f12a1c5a82 aw5832: fix om_choice
Some checks are pending
FarmMaps/CarbonLib/pipeline/head This commit looks good
FarmMaps.Develop/CarbonLib/pipeline/head Build queued...
2024-01-25 11:17:04 +01:00
jenkins
c73560db61 [ci skip] Changed by Jenkins: 36
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-01-24 15:23:53 +00:00
jenkins
45bd471bdf Changed by Jenkins: 35
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-01-24 14:56:42 +00:00
jenkins
8aceaf5fd2 [ci skip] Changed by Jenkins: 34
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-01-24 14:29:03 +00:00
jenkins
97b42c09f3 Changed by Jenkins: 33
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-01-24 14:05:58 +00:00
5c40805a3b merged from master
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2024-01-23 14:40:26 +01:00
jenkins
7cd8dd403b [ci skip] Changed by Jenkins: 32
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2024-01-23 13:01:21 +00:00
e9f35daf03 aw5820: fix prod: fill object even if C_input_CropRes is 0
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2024-01-23 14:00:19 +01:00
jenkins
19491f1077 [ci skip] Changed by Jenkins: 74
Some checks reported errors
FarmMaps.Develop/CarbonLib/pipeline/head Something is wrong with the build of this commit
2023-11-27 08:23:38 +00:00
8efa6558c6 aw5598, 5599, 5600, 5601: several carbon changes
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-11-27 09:22:55 +01:00
jenkins
dd993a3583 Changed by Jenkins: 69
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-11-16 17:17:59 +00:00
jenkins
3034bae61e [ci skip] Changed by Jenkins: 32
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2023-11-16 15:09:49 +00:00
jenkins
4c491bd581 [ci skip] Changed by Jenkins: 31
Some checks reported errors
FarmMaps/CarbonLib/pipeline/head Something is wrong with the build of this commit
2023-11-16 14:21:14 +00:00
jenkins
90787a8fba Changed by Jenkins: 30
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-11-16 13:55:25 +00:00
jenkins
aef26080ba [ci skip] Changed by Jenkins: 29
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-11-16 13:32:22 +00:00
jenkins
800632d20d Changed by Jenkins: 28
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-11-16 13:21:54 +00:00
jenkins
c209f011a0 Changed by Jenkins: 66
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-11-16 13:11:02 +00:00
Willem Dantuma
5392ab24cc Merge remote-tracking branch 'origin/develop'
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-11-08 10:05:38 +01:00
jenkins
b18c7f73a9 [ci skip] Changed by Jenkins: 65
Some checks reported errors
FarmMaps.Develop/CarbonLib/pipeline/head Something is wrong with the build of this commit
2023-10-23 08:11:30 +00:00
f745d4e660 Update Jenkinsfile
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-10-20 12:00:28 +00:00
1aa4400721 Update Jenkinsfile.develop 2023-10-20 12:00:17 +00:00
c39096ce6f Update Jenkinsfile.develop
Some checks failed
FarmMaps/CarbonLib/pipeline/head There was a failure building this commit
2023-10-20 12:00:07 +00:00
b69027edf2 Update Jenkinsfile 2023-10-20 11:59:57 +00:00
7f5f676fff aw5600: added fields to interface
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-10-19 16:12:02 +02:00
jenkins
4f21c4d0d8 [ci skip] Changed by Jenkins: 61
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-10-19 09:34:31 +00:00
51dee60e76 aw5600: added fields to interface
Some checks reported warnings
FarmMaps.Develop/CarbonLib/pipeline/head This commit is unstable
2023-10-19 11:33:33 +02:00
98db16fc7e Merge branch 'develop'
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-10-11 10:44:47 +02:00
0f24014de0 Update CarbonLib.csproj
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
++version
2023-10-11 08:42:44 +00:00
bd2d025164 Update CarbonLib.csproj
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-10-11 08:42:12 +00:00
jenkins
cc4cde76cb [ci skip] Changed by Jenkins: 23
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-08-04 14:42:39 +00:00
jenkins
b6c0628682 [ci skip] Changed by Jenkins: 56
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-08-04 14:32:12 +00:00
jenkins
4b9d2e6e05 [ci skip] Changed by Jenkins: 55
Some checks reported warnings
FarmMaps.Develop/CarbonLib/pipeline/head This commit is unstable
2023-08-04 14:25:42 +00:00
jenkins
e22878ccdb [ci skip] Changed by Jenkins: 53
Some checks reported warnings
FarmMaps.Develop/CarbonLib/pipeline/head This commit is unstable
2023-07-31 08:38:50 +00:00
jenkins
0142c17e2a [ci skip] Changed by Jenkins: 19
Some checks reported warnings
FarmMaps/CarbonLib/pipeline/head This commit is unstable
2023-07-30 12:34:12 +00:00
jenkins
a811e8eaf7 [ci skip] Changed by Jenkins: 49
Some checks reported warnings
FarmMaps/CarbonLib/pipeline/head This commit is unstable
FarmMaps.Develop/CarbonLib/pipeline/head This commit is unstable
2023-07-30 09:03:18 +00:00
62145b9569 AW-5371 Release 2023.08 libraries
Some checks reported warnings
FarmMaps.Develop/CarbonLib/pipeline/head This commit is unstable
2023-07-30 10:48:46 +02:00
58c84bc13d Merge branch 'master' into develop
# Conflicts:
#	CarbonLib.csproj
2023-07-30 10:48:02 +02:00
jenkins
dd44069132 [ci skip] Changed by Jenkins: 47
Some checks reported errors
FarmMaps.Develop/CarbonLib/pipeline/head Something is wrong with the build of this commit
2023-07-30 08:06:15 +00:00
jenkins
c96d751e2e [ci skip] Changed by Jenkins: 45
Some checks reported warnings
FarmMaps.Develop/CarbonLib/pipeline/head This commit is unstable
2023-07-30 07:59:26 +00:00
jenkins
a8e55457a5 [ci skip] Changed by Jenkins: 43
Some checks reported warnings
FarmMaps.Develop/CarbonLib/pipeline/head This commit is unstable
2023-07-28 12:22:51 +00:00
jenkins
f0caa9e1db [ci skip] Changed by Jenkins: 41
Some checks reported warnings
FarmMaps.Develop/CarbonLib/pipeline/head This commit is unstable
2023-07-28 12:03:25 +00:00
jenkins
12923be93e [ci skip] Changed by Jenkins: 38
Some checks failed
FarmMaps.Develop/CarbonLib/pipeline/head There was a failure building this commit
2023-07-28 10:09:53 +00:00
jenkins
046d681b25 [ci skip] Changed by Jenkins: 37
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-07-28 09:32:16 +00:00
jenkins
34d0d86bd5 [ci skip] Changed by Jenkins: 12
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-07-26 14:55:54 +00:00
6e8e8db12e jenkins
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-07-26 16:55:18 +02:00
f5ec4204fe aw5277: restore previous libs
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-06-27 08:32:38 +02:00
2d5fb1a48a Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/CarbonLib into develop
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-06-26 20:54:00 +02:00
c217195605 aw5277: new weather csv 2023-06-26 20:53:25 +02:00
7aeff96eed 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
2023-06-26 16:53:53 +02:00
96906d57cf Fix jenkins 2023-06-26 16:53:40 +02:00
jenkins
1810b0005a [ci skip] Changed by Jenkins: 33
Some checks failed
FarmMaps.Develop/CarbonLib/pipeline/head There was a failure building this commit
2023-06-26 14:49:31 +00:00
53f79ce16a Merge branch 'develop' of https://git.akkerweb.nl/FarmMaps/CarbonLib into develop
Some checks failed
FarmMaps.Develop/CarbonLib/pipeline/head There was a failure building this commit
2023-06-26 16:48:54 +02:00
e95e29a96a jenkins 2023-06-26 16:48:44 +02:00
Willem Dantuma
ea976842cd Update libs
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
FarmMaps/CarbonLib/pipeline/head This commit looks good
2023-06-12 12:15:31 +02:00
f1342b118f AW-5037 Acl migration
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-05-10 15:10:38 +02:00
aa59a17a7c aw5006: upgrade to .net6
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2023-04-26 14:17:50 +02:00
Willem Dantuma
fb2b34d7ff Update libs
All checks were successful
FarmMaps/CarbonLib/pipeline/head This commit looks good
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
2022-08-25 15:53:48 +02:00
Willem Dantuma
a00353f464 Update libs kick version
All checks were successful
FarmMaps.Develop/CarbonLib/pipeline/head This commit looks good
FarmMaps/CarbonLib/pipeline/head This commit looks good
2022-07-27 09:53:03 +02:00
88 changed files with 121664 additions and 20081 deletions

1
.gitignore vendored
View File

@@ -362,3 +362,4 @@ MigrationBackup/
# Fody - auto-generated XML schema
FodyWeavers.xsd
upstreamProjects/

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

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,83 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</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>1.2.0</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Base.Core.Common" Version="1.2.2.10" />
<PackageReference Include="Base.Core.Common.Geometry" Version="1.4.0" />
<PackageReference Include="NetTopologySuite" Version="2.0.0" />
<PackageReference Include="NetTopologySuite.IO.GeoJSON" Version="2.0.4" />
</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,9 +134,9 @@ 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 },
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)
@@ -156,8 +151,9 @@ namespace FarmMapsAPI.Carbon
Crop = cropYear.MiterraCropName,
CropRes = cropYear.CropRes,
OrganicManures =
cropYear.OrganicManures.Where(y=>y.Quantity > 0 && !string.IsNullOrEmpty(y.Type)).Select(x => new OrganicManureType { Type = x.Type, Quantity = x.Quantity }).ToList(),
CropYield = cropYear.CropYield } }
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
@@ -170,9 +166,9 @@ namespace FarmMapsAPI.Carbon
{
foreach (var manure in cropYear.OrganicManures)
{
if (!string.IsNullOrEmpty(manure.Type) && manure.Quantity > 0)
if (!string.IsNullOrEmpty(manure.Type) && manure.Quantity.HasValue && manure.Quantity > 0)
{
orgManure.Add(new OrganicManureType { Type = manure.Type, Quantity = manure.Quantity });
orgManure.Add(new OrganicManureType { Type = manure.Type, Quantity = manure.Quantity.HasValue ? manure.Quantity.Value : 0 });
}
}
}
@@ -205,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;
@@ -215,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);
@@ -238,6 +267,7 @@ namespace FarmMapsAPI.Carbon
var year = GetYears(farmInputSet, farmInput);
//////////////////////////////////////////////
// precalculations
//////////////////////////////////////////////
@@ -246,43 +276,64 @@ 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();
var initialSoilKey = historicalCropdata.Keys.FirstOrDefault(x => x.Item1 == item.Key && x.Item2 == year.First());
var initialSoil = historicalCropdata[initialSoilKey].FirstOrDefault();
var soilPropertyDepth10 = item.Value.Depth10;
if (item.Value.Depth.HasValue && item.Value.Depth.Value == 10)
{
soilPropertyDepth10 = true;
}
// 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;
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);
}
}
@@ -291,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);
@@ -332,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();
@@ -367,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)
@@ -449,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) });
}
}
@@ -539,7 +604,7 @@ namespace FarmMapsAPI.Carbon
newValue = 0.024 * item.Value + 0.228;
valueList.Add(new ColumnValue(item.Key, newValue));
break;
case "Corn_Cob_mix":
case "Corn_cob_mix":
newValue = 0.024 * item.Value + 0.228;
valueList.Add(new ColumnValue(item.Key, newValue));
break;
@@ -640,11 +705,7 @@ namespace FarmMapsAPI.Carbon
foreach (var crop in cropArea.Value)
{
var cInputCropRes = cropPropertyConfig.SingleOrDefault(s => s.Name.ToLower() == crop.Key.ToLower())?.C_input_CropRes ?? 0.0;
if (cInputCropRes > 0)
{
carbonInputs.AddValue((cropArea.Key.Item1, cropArea.Key.Item2, crop.Key), "CarbonResidues", cInputCropRes);
}
carbonInputs.AddValue((cropArea.Key.Item1, cropArea.Key.Item2, crop.Key), "CarbonResidues", cInputCropRes);
if (cropSet.StrawCrops.Any(x => x.StrawCrop.ToLower() == crop.Key.ToLower()))
{
@@ -724,7 +785,7 @@ namespace FarmMapsAPI.Carbon
}
tempModFactor.Add(climateVar.Key, valueList);
}
// CoverModFactor
// input sheet
var coverModFactor = new Dictionary<string, List<ColumnValue>>();
@@ -765,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);
@@ -778,8 +839,18 @@ namespace FarmMapsAPI.Carbon
{
smdMaxValue = smdMax[climateItem.Key] / 1.8;
}
var result = climateItem.Value[i].Precipitation - climateItem.Value[i].Evapotranspiration;
//fsa todo: add precipitation
var irrigation = 0;
var irrigations = farmInput.CropFields[0].HistoricalCropData.SingleOrDefault(x => x.Year == loopYear).Crops[0].Irrigation;
if (!string.IsNullOrEmpty(irrigations))
{
var irrigationArray = irrigations.Split(',');
if (irrigationArray.Length > i)
{
irrigation = string.IsNullOrEmpty(irrigationArray[i]) ? 0 : Convert.ToInt16(irrigationArray[i]);
}
}
var result = climateItem.Value[i].Precipitation - climateItem.Value[i].Evapotranspiration + irrigation;
result = result < 0 ? result : 0;
result = result < smdMaxValue ? smdMaxValue : result;
valueList.Add(new ColumnValue("M1", result));
@@ -799,7 +870,17 @@ namespace FarmMapsAPI.Carbon
smdMaxValue = smdMax[climateItem.Key] / 1.8;
}
var result = climateItem.Value[i].Precipitation - climateItem.Value[i].Evapotranspiration + valueList.SingleOrDefault(x => x.Key == $"M{i}").Value;
var irrigation = 0;
var irrigations = farmInput.CropFields[0].HistoricalCropData.SingleOrDefault(x => x.Year == loopYear).Crops[0].Irrigation;
if (!string.IsNullOrEmpty(irrigations))
{
var irrigationArray = irrigations.Split(',');
if (irrigationArray.Length > i)
{
irrigation = string.IsNullOrEmpty(irrigationArray[i]) ? 0 : Convert.ToInt16(irrigationArray[i]);
}
}
var result = climateItem.Value[i].Precipitation - climateItem.Value[i].Evapotranspiration + valueList.SingleOrDefault(x => x.Key == $"M{i}").Value + irrigation;
result = result < 0 ? result : 0;
result = result < smdMaxValue ? smdMaxValue : result;
valueList.Add(new ColumnValue($"M{i + 1}", result));
@@ -874,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] * 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));
@@ -912,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;
@@ -1407,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>>();
@@ -1620,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)
@@ -1683,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 / 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));
@@ -1702,7 +1783,7 @@ namespace FarmMapsAPI.Carbon
var greenManure = item.SOC_CarbonGreenManure;
var compost = item.SOC_CarbonCompost;
item.OM_ini = iniValue / 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);
@@ -1731,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;
@@ -1756,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 / 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;
@@ -1785,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)
@@ -1803,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 });
//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;
@@ -1816,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;
@@ -1871,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))
@@ -1884,36 +1966,202 @@ 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)
{
var climateYear = loopYear > 2020 || loopYear < 2011 ? 2012 : loopYear;
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);
@@ -1965,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)
{
@@ -2014,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.4</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

@@ -30,14 +30,17 @@ namespace CarbonService.Models
public SoilProperty SoilProperty { get; set; }
[Required]
public List<HistoricalCropData> HistoricalCropData { get; set; }
public List<GreenManure> GreenManures { get; set; }
public List<GreenManure> GreenManures { get; set; }
}
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; }
public int? Depth { get; set; }
}
public class OrgManureApplied
@@ -49,6 +52,7 @@ namespace CarbonService.Models
public List<OrganicManureType> OrganicManures { get; set; }
public double? CropYield { get { return (int?)yield; } set { yield = value; } }
public bool CropRes { get; set; }
public string Irrigation { get; set; }
}
public class OrganicManureType

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
@@ -44,6 +49,7 @@ namespace FarmMapsAPI.Carbon.Models
public List<CropData> Crops { get; set; }
public List<GreenManureTypeFarmMaps> GreenManures { get; set; }
public bool Rotation { get; set; }
public string Irrigations { get; set; }
public HistoricalCropDataFarmMaps DeepCopy()
{
@@ -69,14 +75,27 @@ namespace FarmMapsAPI.Carbon.Models
[Required]
public string Type { get; set; }
[Required]
public double Quantity { get; set; }
public double? Quantity { get; set; }
}
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; }
[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,15 +2,17 @@
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 double Depth { get; set; }
public int? Depth { get; set; }
public bool Depth10 { 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
{

50
Jenkinsfile vendored
View File

@@ -1,42 +1,30 @@
@Library('farmmaps-shared-library') _
pipeline {
agent any
environment {
APP_VERSION_PREFIX=sh(script: ' cat *.csproj| xmlstarlet sel -t -m "/Project/PropertyGroup/Version" -v . -n|awk -v def="1.0.0" "{print} END { if(NR==0) {print def} }"', returnStdout: true).trim()
APP_NAME=sh(script: ' cat *.csproj| xmlstarlet sel -t -m "/Project/PropertyGroup/AssemblyName" -v . -n|awk -v def="App" "{print tolower(\\$0)} END { if(NR==0) {print def} }"', returnStdout: true).trim()
APP_VERSION="${APP_VERSION_PREFIX}"
agent any;
options {
copyArtifactPermission projectNames: env.allProjectsArtifactPermission;
disableConcurrentBuilds();
}
triggers {
upstream(
upstreamProjects: '/FarmMaps/Base.Core.Common.Geometry/master',
threshold: hudson.model.Result.SUCCESS
)
}
stages {
stage('Dotnet Restore') {
stage('BaseBuildAll') {
steps {
sh '''dotnet restore CarbonLib.csproj'''
stepBaseBuildAll();
}
}
stage('Dotnet Build') {
steps {
sh '''dotnet build CarbonLib.csproj'''
}
}
stage('Dotnet Package') {
steps {
sh '''rm -rf nuget
dotnet pack -c release -o nuget -p:PackageVersion=${APP_VERSION} CarbonLib.csproj'''
}
}
stage('Dotnet Publish') {
steps {
sh '''dotnet nuget push nuget/*.nupkg -k 0c3e3afc-935b-3db1-b023-e0d4799e674d -s https://repository.akkerweb.nl/repository/nuget-hosted/'''
}
}
}
}
post {
success {
postSuccess();
}
always {
emailext (
body: '${DEFAULT_CONTENT}',
mimeType: 'text/html',
replyTo: '${DEFAULT_REPLYTO}',
subject: '${DEFAULT_SUBJECT}',
to: emailextrecipients([[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']])
)
postAlways();
}
}
}

View File

@@ -1,42 +1,30 @@
@Library('farmmaps-shared-library') _
pipeline {
agent any
environment {
APP_VERSION_PREFIX=sh(script: ' cat *.csproj| xmlstarlet sel -t -m "/Project/PropertyGroup/Version" -v . -n|awk -v def="1.0.0" "{print} END { if(NR==0) {print def} }"', returnStdout: true).trim()
APP_NAME=sh(script: ' cat *.csproj| xmlstarlet sel -t -m "/Project/PropertyGroup/AssemblyName" -v . -n|awk -v def="App" "{print tolower(\\$0)} END { if(NR==0) {print def} }"', returnStdout: true).trim()
APP_VERSION="${APP_VERSION_PREFIX + '-prerelease.' + env.BUILD_NUMBER}"
agent any;
options {
copyArtifactPermission projectNames: env.allProjectsArtifactPermission;
disableConcurrentBuilds();
}
triggers {
upstream(
upstreamProjects: '/FarmMaps.Develop/Base.Core.Common.Geometry/develop',
threshold: hudson.model.Result.SUCCESS
)
}
stages {
stage('Dotnet Restore') {
stage('BaseBuildAll') {
steps {
sh '''dotnet restore CarbonLib.csproj'''
stepBaseBuildAll();
}
}
stage('Dotnet Build'){
steps {
sh '''dotnet build CarbonLib.csproj'''
}
}
stage('Dotnet Package') {
steps {
sh '''rm -rf nuget
dotnet pack -c debug -o nuget -p:PackageVersion=${APP_VERSION} CarbonLib.csproj'''
}
}
stage('Dotnet Publish') {
steps {
sh '''dotnet nuget push nuget/*.nupkg -k 0c3e3afc-935b-3db1-b023-e0d4799e674d -s https://repository.akkerweb.nl/repository/nuget-hosted/'''
}
}
}
}
post {
success {
postSuccess();
}
always {
emailext (
body: '${DEFAULT_CONTENT}',
mimeType: 'text/html',
replyTo: '${DEFAULT_REPLYTO}',
subject: '${DEFAULT_SUBJECT}',
to: emailextrecipients([[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']])
)
postAlways();
}
}
}

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,2 +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"
}
]