pyholos 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyholos might be problematic. Click here for more details.
- pyholos/__init__.py +0 -0
- pyholos/common.py +141 -0
- pyholos/common2.py +157 -0
- pyholos/components/__init__.py +0 -0
- pyholos/components/animals/__init__.py +0 -0
- pyholos/components/animals/beef.py +766 -0
- pyholos/components/animals/common.py +2301 -0
- pyholos/components/animals/dairy.py +341 -0
- pyholos/components/animals/sheep.py +412 -0
- pyholos/components/common.py +170 -0
- pyholos/components/land_management/__init__.py +0 -0
- pyholos/components/land_management/carbon/__init__.py +0 -0
- pyholos/components/land_management/carbon/climate.py +863 -0
- pyholos/components/land_management/carbon/management.py +21 -0
- pyholos/components/land_management/carbon/relative_biomass_information.py +410 -0
- pyholos/components/land_management/carbon/tillage.py +88 -0
- pyholos/components/land_management/common.py +220 -0
- pyholos/components/land_management/crop.py +1233 -0
- pyholos/components/land_management/field_system.py +458 -0
- pyholos/components/land_management/utils.py +66 -0
- pyholos/config.py +49 -0
- pyholos/core_constants.py +20 -0
- pyholos/defaults.py +116 -0
- pyholos/farm/__init__.py +0 -0
- pyholos/farm/enums.py +54 -0
- pyholos/farm/farm.py +101 -0
- pyholos/farm/farm_inputs.py +633 -0
- pyholos/farm/farm_settings.py +542 -0
- pyholos/launching.py +86 -0
- pyholos/postprocessing/__init__.py +0 -0
- pyholos/postprocessing/plots.py +164 -0
- pyholos/postprocessing/postprocessing.py +38 -0
- pyholos/resources/holos/Table_16_Livestock_Coefficients_BeefAndDairy_Cattle_Provider.csv +21 -0
- pyholos/resources/holos/Table_21_Average_Milk_Production_For_Dairy_Cows_By_Province.csv +23 -0
- pyholos/resources/holos/Table_22_Livestock_Coefficients_For_Sheep.csv +28 -0
- pyholos/resources/holos/Table_29_Percentage_Total_Manure_Produced_In_Systems.csv +56 -0
- pyholos/resources/holos/Table_30_Default_Bedding_Material_Composition_Provider.csv +28 -0
- pyholos/resources/holos/Table_50_Fuel_Energy_Requirement_Estimates_By_Region.csv +81 -0
- pyholos/resources/holos/Table_51_Herbicide_Energy_Requirement_Estimates_By_Region.csv +81 -0
- pyholos/resources/holos/Table_61_Fractions_of_dairy_cattle_N_volatilized.csv +25 -0
- pyholos/resources/holos/Table_62_Fractions_of_swine_N_volatilized.csv +25 -0
- pyholos/resources/holos/Table_6_Manure_Types_And_Default_Composition.csv +126 -0
- pyholos/resources/holos/Table_7_Relative_Biomass_Information.csv +112 -0
- pyholos/resources/holos/Table_9_Default_Values_For_Nitrogen_Lignin_In_Crops.csv +72 -0
- pyholos/resources/holos/Table_Tillage_Factor.csv +13 -0
- pyholos/resources/holos/feeds.csv +223 -0
- pyholos/resources/holos/main_tables.py +493 -0
- pyholos/resources/holos/small_area_yields.csv +167159 -0
- pyholos/resources/soil_landscapes_of_canada_v3r2.zip +0 -0
- pyholos/soil.py +439 -0
- pyholos/utils.py +83 -0
- pyholos-0.0.1.dist-info/METADATA +16 -0
- pyholos-0.0.1.dist-info/RECORD +55 -0
- pyholos-0.0.1.dist-info/WHEEL +4 -0
- pyholos-0.0.1.dist-info/licenses/LICENSE +677 -0
|
@@ -0,0 +1,1233 @@
|
|
|
1
|
+
from enum import auto
|
|
2
|
+
|
|
3
|
+
from pyholos.utils import (AutoNameEnum, concat_lists,
|
|
4
|
+
keep_alphabetical_characters)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class CropType(AutoNameEnum):
|
|
8
|
+
"""
|
|
9
|
+
Holos Source Code:
|
|
10
|
+
- CropType members: https://github.com/holos-aafc/Holos/blob/c5b1a960639be5c4fa6a25e167c49c36403c291d/H.Core/Enumerations/CropType.cs#L5
|
|
11
|
+
- CropType extension methods: https://github.com/holos-aafc/Holos/blob/c5b1a960639be5c4fa6a25e167c49c36403c291d/H.Core/Enumerations/CropTypeExtensions.cs#L15
|
|
12
|
+
|
|
13
|
+
"""
|
|
14
|
+
AlfalfaMedicagoSativaL = auto()
|
|
15
|
+
AlfalfaSeed = auto()
|
|
16
|
+
AnnualRyeGrassLoliumMultiflorum = auto()
|
|
17
|
+
AustrianWinterPea = auto()
|
|
18
|
+
Barley = auto()
|
|
19
|
+
BarleyHordeumVulgare = auto()
|
|
20
|
+
BarleySilage = auto()
|
|
21
|
+
BarleySilageUnderSeed = auto()
|
|
22
|
+
BeansDryField = auto()
|
|
23
|
+
BerriesAndGrapes = auto()
|
|
24
|
+
BerseemCloverTrifoliumAlexandriumL = auto()
|
|
25
|
+
BrokenGrassland = auto()
|
|
26
|
+
BromeHay = auto()
|
|
27
|
+
Buckwheat = auto()
|
|
28
|
+
CanarySeed = auto()
|
|
29
|
+
Canola = auto()
|
|
30
|
+
Caraway = auto()
|
|
31
|
+
Carrot = auto()
|
|
32
|
+
Chickpeas = auto()
|
|
33
|
+
ColouredWhiteFabaBeans = auto()
|
|
34
|
+
Corn = auto()
|
|
35
|
+
CornSilage = auto()
|
|
36
|
+
CowpeaVignaUnguiculata = auto()
|
|
37
|
+
CPSWheat = auto()
|
|
38
|
+
CrimsonCloverTrifoliumIncarnatum = auto()
|
|
39
|
+
Dill = auto()
|
|
40
|
+
DryBean = auto()
|
|
41
|
+
DryPeas = auto()
|
|
42
|
+
Durum = auto()
|
|
43
|
+
FabaBeanBroadBeanViciaFaba = auto()
|
|
44
|
+
FabaBeans = auto()
|
|
45
|
+
Fallow = auto()
|
|
46
|
+
FallRye = auto()
|
|
47
|
+
FieldPeas = auto()
|
|
48
|
+
Flax = auto()
|
|
49
|
+
FlaxLinumUsitatissimum = auto()
|
|
50
|
+
FlaxSeed = auto()
|
|
51
|
+
FodderCorn = auto()
|
|
52
|
+
Forage = auto()
|
|
53
|
+
ForageForSeed = auto()
|
|
54
|
+
ForageRadishRaphanusSativusL = auto()
|
|
55
|
+
FreshCornSweet = auto()
|
|
56
|
+
FreshPeas = auto()
|
|
57
|
+
GrainCorn = auto()
|
|
58
|
+
GrainSorghum = auto()
|
|
59
|
+
GrassHay = auto()
|
|
60
|
+
GrasslandSeeded = auto()
|
|
61
|
+
GrassSeed = auto()
|
|
62
|
+
GreenFeed = auto()
|
|
63
|
+
HairyVetch = auto()
|
|
64
|
+
HairyVetchAndRye = auto()
|
|
65
|
+
HairyVetchViciaVillosaRoth = auto()
|
|
66
|
+
HardRedSpringWheat = auto()
|
|
67
|
+
HayAndForageSeed = auto()
|
|
68
|
+
Hyola = auto()
|
|
69
|
+
Lentils = auto()
|
|
70
|
+
Linola = auto()
|
|
71
|
+
MaltBarley = auto()
|
|
72
|
+
MarketGarden = auto()
|
|
73
|
+
MilkVetch = auto()
|
|
74
|
+
Millet = auto()
|
|
75
|
+
Mint = auto()
|
|
76
|
+
MixedGrains = auto()
|
|
77
|
+
Monarda = auto()
|
|
78
|
+
Mustard = auto()
|
|
79
|
+
MustardSeed = auto()
|
|
80
|
+
MustardSinapusAlbaLSubspMaireiHLindbMaire = auto()
|
|
81
|
+
NativePasture = auto()
|
|
82
|
+
NotSelected = auto()
|
|
83
|
+
OatAvenaSativa = auto()
|
|
84
|
+
Oats = auto()
|
|
85
|
+
OatSilage = auto()
|
|
86
|
+
Oilseeds = auto()
|
|
87
|
+
Onion = auto()
|
|
88
|
+
OtherFieldCrops = auto()
|
|
89
|
+
Peas = auto()
|
|
90
|
+
PerennialForages = auto()
|
|
91
|
+
PhaceliaPhaceliaTanacetifoliaCVPhaci = auto()
|
|
92
|
+
PigeonBean = auto()
|
|
93
|
+
Potatoes = auto()
|
|
94
|
+
PulseCrops = auto()
|
|
95
|
+
RangelandNative = auto()
|
|
96
|
+
RapeseedBrassicaNapusL = auto()
|
|
97
|
+
RedCloverTrifoliumPratenseL = auto()
|
|
98
|
+
Rye = auto()
|
|
99
|
+
RyeGrassLoliumPerenneL = auto()
|
|
100
|
+
RyeSecaleCerealeWinterRyeCerealRye = auto()
|
|
101
|
+
Safflower = auto()
|
|
102
|
+
SeededGrassland = auto()
|
|
103
|
+
SeedPotato = auto()
|
|
104
|
+
SesameSesamumIndicum = auto()
|
|
105
|
+
ShepherdsPurse = auto()
|
|
106
|
+
SilageCorn = auto()
|
|
107
|
+
SmallFruit = auto()
|
|
108
|
+
SmallGrainCereals = auto()
|
|
109
|
+
SoftWheat = auto()
|
|
110
|
+
Sorghum = auto()
|
|
111
|
+
SorghumSorghumBicolour = auto()
|
|
112
|
+
SorghumSudanGrass = auto()
|
|
113
|
+
Soybeans = auto()
|
|
114
|
+
SpringRye = auto()
|
|
115
|
+
SpringWheat = auto()
|
|
116
|
+
SugarBeets = auto()
|
|
117
|
+
SummerFallow = auto()
|
|
118
|
+
Sunflower = auto()
|
|
119
|
+
SunflowerSeed = auto()
|
|
120
|
+
SweetCloverMelilotusOfficinalis = auto()
|
|
121
|
+
TameGrass = auto()
|
|
122
|
+
TameLegume = auto()
|
|
123
|
+
TameMixed = auto()
|
|
124
|
+
TamePasture = auto()
|
|
125
|
+
TimothyHay = auto()
|
|
126
|
+
Tobacco = auto()
|
|
127
|
+
TreeFruitAndNuts = auto()
|
|
128
|
+
Triticale = auto()
|
|
129
|
+
TriticaleSilage = auto()
|
|
130
|
+
TurfSod = auto()
|
|
131
|
+
UndersownBarley = auto()
|
|
132
|
+
Vegetables = auto()
|
|
133
|
+
Wheat = auto()
|
|
134
|
+
WheatBolinder = auto()
|
|
135
|
+
WheatGan = auto()
|
|
136
|
+
WheatSilage = auto()
|
|
137
|
+
WinterTurnipRapeBrassicaRapaSppOleiferaLCVLargo = auto()
|
|
138
|
+
WinterWeeds = auto()
|
|
139
|
+
WinterWheat = auto()
|
|
140
|
+
WinterWheatTriticumAestivum = auto()
|
|
141
|
+
NONE = auto()
|
|
142
|
+
|
|
143
|
+
# region Economic Crops
|
|
144
|
+
AlfalfaHay = auto()
|
|
145
|
+
ArgentineHTCanola = auto()
|
|
146
|
+
BeansPinto = auto()
|
|
147
|
+
BeansWhite = auto()
|
|
148
|
+
BlackBean = auto()
|
|
149
|
+
BrownMustard = auto()
|
|
150
|
+
Camelina = auto()
|
|
151
|
+
CarawayFirstSeason = auto()
|
|
152
|
+
CarawaySecondSeason = auto()
|
|
153
|
+
CerealSilage = auto()
|
|
154
|
+
ColouredBeans = auto()
|
|
155
|
+
Coriander = auto()
|
|
156
|
+
DesiChickpeas = auto()
|
|
157
|
+
EdibleGreenPeas = auto()
|
|
158
|
+
EdibleYellowPeas = auto()
|
|
159
|
+
FeedBarley = auto()
|
|
160
|
+
Fenugreek = auto()
|
|
161
|
+
HardRedWinterWheat = auto()
|
|
162
|
+
HardRedWinterWheatNoTill = auto()
|
|
163
|
+
HybridFallRye = auto()
|
|
164
|
+
KabuliChickpea = auto()
|
|
165
|
+
LargeGreenLentils = auto()
|
|
166
|
+
LargeKabuliChickpea = auto()
|
|
167
|
+
MillingOats = auto()
|
|
168
|
+
NorthernOntarioBarley = auto()
|
|
169
|
+
NorthernOntarioOats = auto()
|
|
170
|
+
OrientalMustard = auto()
|
|
171
|
+
PolishCanola = auto()
|
|
172
|
+
Quinoa = auto()
|
|
173
|
+
RedLentils = auto()
|
|
174
|
+
SmallKabuliChickpea = auto()
|
|
175
|
+
SoftWinterWheat = auto()
|
|
176
|
+
SoftWinterWheatNoTill = auto()
|
|
177
|
+
SouthernOntarioBarley = auto()
|
|
178
|
+
SouthernOntarioOats = auto()
|
|
179
|
+
SoybeanNoTill = auto()
|
|
180
|
+
SoybeansRoundUpReady = auto()
|
|
181
|
+
SpringCanolaHt = auto()
|
|
182
|
+
SunflowerConfection = auto()
|
|
183
|
+
SunflowerOil = auto()
|
|
184
|
+
SunflowerOilseedEMSS = auto()
|
|
185
|
+
SwitchgrassDirect = auto()
|
|
186
|
+
SwitchgrassDirectNoTill = auto()
|
|
187
|
+
SwitchgrassUnderseeded = auto()
|
|
188
|
+
SwitchgrassUnderseededNoTill = auto()
|
|
189
|
+
UserDefined = auto()
|
|
190
|
+
WheatHardRedSpring = auto()
|
|
191
|
+
WheatNorthernHardRed = auto()
|
|
192
|
+
WheatOtherSpring = auto()
|
|
193
|
+
WheatPrairieSpring = auto()
|
|
194
|
+
WhiteBlackBeans = auto()
|
|
195
|
+
WinterCanolaHybrid = auto()
|
|
196
|
+
YellowMustard = auto()
|
|
197
|
+
# endregion
|
|
198
|
+
|
|
199
|
+
# Note from the original holos code:
|
|
200
|
+
# The new crops below are from the "Default values for nitrogen and lignin contents in crops for steady state methods.
|
|
201
|
+
# region Nitrogen and lignin contents table
|
|
202
|
+
Beans = auto()
|
|
203
|
+
Cereals = auto()
|
|
204
|
+
DryFieldPeas = auto()
|
|
205
|
+
GenericGrains = auto()
|
|
206
|
+
Grains = auto()
|
|
207
|
+
GrassCloverMixtures = auto()
|
|
208
|
+
NFixingForages = auto()
|
|
209
|
+
NonLegumeHay = auto()
|
|
210
|
+
NonNFixingForages = auto()
|
|
211
|
+
OtherDryFieldBeans = auto()
|
|
212
|
+
Peanuts = auto()
|
|
213
|
+
PerennialGrasses = auto()
|
|
214
|
+
Pulses = auto()
|
|
215
|
+
Rice = auto()
|
|
216
|
+
Tubers = auto()
|
|
217
|
+
WheatRye = auto()
|
|
218
|
+
WhiteBeans = auto()
|
|
219
|
+
# endregion
|
|
220
|
+
|
|
221
|
+
GrassSilage = auto()
|
|
222
|
+
|
|
223
|
+
# extensions
|
|
224
|
+
"""https://github.com/holos-aafc/Holos/blob/c5b1a960639be5c4fa6a25e167c49c36403c291d/H.Core/Enumerations/CropTypeExtensions.cs#L15"""
|
|
225
|
+
|
|
226
|
+
def is_perennial(self):
|
|
227
|
+
return self in [
|
|
228
|
+
self.__class__.Forage,
|
|
229
|
+
self.__class__.TameGrass,
|
|
230
|
+
self.__class__.TameLegume,
|
|
231
|
+
self.__class__.TameMixed,
|
|
232
|
+
self.__class__.PerennialForages,
|
|
233
|
+
self.__class__.ForageForSeed,
|
|
234
|
+
self.__class__.SeededGrassland,
|
|
235
|
+
self.__class__.RangelandNative
|
|
236
|
+
]
|
|
237
|
+
|
|
238
|
+
def is_pasture(self):
|
|
239
|
+
return self.is_perennial() or self.is_grassland()
|
|
240
|
+
|
|
241
|
+
def is_cover_crop(self):
|
|
242
|
+
return self in [
|
|
243
|
+
self.__class__.RedCloverTrifoliumPratenseL,
|
|
244
|
+
self.__class__.BerseemCloverTrifoliumAlexandriumL,
|
|
245
|
+
self.__class__.SweetCloverMelilotusOfficinalis,
|
|
246
|
+
self.__class__.CrimsonCloverTrifoliumIncarnatum,
|
|
247
|
+
self.__class__.HairyVetchViciaVillosaRoth,
|
|
248
|
+
self.__class__.AlfalfaMedicagoSativaL,
|
|
249
|
+
self.__class__.FabaBeanBroadBeanViciaFaba,
|
|
250
|
+
self.__class__.CowpeaVignaUnguiculata,
|
|
251
|
+
self.__class__.AustrianWinterPea,
|
|
252
|
+
self.__class__.RapeseedBrassicaNapusL,
|
|
253
|
+
self.__class__.WinterTurnipRapeBrassicaRapaSppOleiferaLCVLargo,
|
|
254
|
+
self.__class__.PhaceliaPhaceliaTanacetifoliaCVPhaci,
|
|
255
|
+
self.__class__.ForageRadishRaphanusSativusL,
|
|
256
|
+
self.__class__.MustardSinapusAlbaLSubspMaireiHLindbMaire,
|
|
257
|
+
self.__class__.BarleyHordeumVulgare,
|
|
258
|
+
self.__class__.OatAvenaSativa,
|
|
259
|
+
self.__class__.RyeSecaleCerealeWinterRyeCerealRye,
|
|
260
|
+
self.__class__.SesameSesamumIndicum,
|
|
261
|
+
self.__class__.FlaxLinumUsitatissimum,
|
|
262
|
+
self.__class__.RyeGrassLoliumPerenneL,
|
|
263
|
+
self.__class__.AnnualRyeGrassLoliumMultiflorum,
|
|
264
|
+
self.__class__.SorghumSorghumBicolour,
|
|
265
|
+
self.__class__.PigeonBean,
|
|
266
|
+
self.__class__.ShepherdsPurse,
|
|
267
|
+
self.__class__.WinterWheatTriticumAestivum
|
|
268
|
+
]
|
|
269
|
+
|
|
270
|
+
def is_leguminous_cover_crop(self):
|
|
271
|
+
return self in [
|
|
272
|
+
self.__class__.RedCloverTrifoliumPratenseL,
|
|
273
|
+
self.__class__.BerseemCloverTrifoliumAlexandriumL,
|
|
274
|
+
self.__class__.SweetCloverMelilotusOfficinalis,
|
|
275
|
+
self.__class__.CrimsonCloverTrifoliumIncarnatum,
|
|
276
|
+
self.__class__.HairyVetch,
|
|
277
|
+
self.__class__.AlfalfaMedicagoSativaL,
|
|
278
|
+
self.__class__.FabaBeanBroadBeanViciaFaba,
|
|
279
|
+
self.__class__.CowpeaVignaUnguiculata,
|
|
280
|
+
self.__class__.AustrianWinterPea,
|
|
281
|
+
self.__class__.PigeonBean
|
|
282
|
+
]
|
|
283
|
+
|
|
284
|
+
def is_non_leguminous_cover_crop(self):
|
|
285
|
+
return self in [
|
|
286
|
+
self.__class__.WinterWeeds,
|
|
287
|
+
self.__class__.RapeseedBrassicaNapusL,
|
|
288
|
+
self.__class__.WinterTurnipRapeBrassicaRapaSppOleiferaLCVLargo,
|
|
289
|
+
self.__class__.PhaceliaPhaceliaTanacetifoliaCVPhaci,
|
|
290
|
+
self.__class__.ForageRadishRaphanusSativusL,
|
|
291
|
+
self.__class__.MustardSinapusAlbaLSubspMaireiHLindbMaire,
|
|
292
|
+
self.__class__.BarleyHordeumVulgare,
|
|
293
|
+
self.__class__.OatAvenaSativa,
|
|
294
|
+
self.__class__.RyeSecaleCerealeWinterRyeCerealRye,
|
|
295
|
+
self.__class__.SesameSesamumIndicum,
|
|
296
|
+
self.__class__.FlaxLinumUsitatissimum,
|
|
297
|
+
self.__class__.RyeGrassLoliumPerenneL,
|
|
298
|
+
self.__class__.AnnualRyeGrassLoliumMultiflorum,
|
|
299
|
+
self.__class__.SorghumSorghumBicolour,
|
|
300
|
+
self.__class__.WinterWheatTriticumAestivum,
|
|
301
|
+
self.__class__.FallRye
|
|
302
|
+
]
|
|
303
|
+
|
|
304
|
+
@staticmethod
|
|
305
|
+
def is_rangeland():
|
|
306
|
+
return False
|
|
307
|
+
|
|
308
|
+
def is_grassland(self):
|
|
309
|
+
return self in [
|
|
310
|
+
self.__class__.BrokenGrassland,
|
|
311
|
+
self.__class__.GrasslandSeeded,
|
|
312
|
+
self.__class__.RangelandNative
|
|
313
|
+
]
|
|
314
|
+
|
|
315
|
+
def is_native_grassland(self):
|
|
316
|
+
return self == self.__class__.RangelandNative
|
|
317
|
+
|
|
318
|
+
def is_fallow(self):
|
|
319
|
+
return self in [
|
|
320
|
+
self.__class__.Fallow,
|
|
321
|
+
self.__class__.SummerFallow
|
|
322
|
+
]
|
|
323
|
+
|
|
324
|
+
def is_annual(self):
|
|
325
|
+
if self.is_silage_crop() or self.is_root_crop():
|
|
326
|
+
return True
|
|
327
|
+
else:
|
|
328
|
+
return self in [
|
|
329
|
+
self.__class__.SmallGrainCereals,
|
|
330
|
+
self.__class__.Wheat,
|
|
331
|
+
self.__class__.WheatSilage,
|
|
332
|
+
self.__class__.Barley,
|
|
333
|
+
self.__class__.BarleySilage,
|
|
334
|
+
self.__class__.UndersownBarley,
|
|
335
|
+
self.__class__.Oats,
|
|
336
|
+
self.__class__.OatSilage,
|
|
337
|
+
self.__class__.Camelina,
|
|
338
|
+
self.__class__.Triticale,
|
|
339
|
+
self.__class__.TriticaleSilage,
|
|
340
|
+
self.__class__.Sorghum,
|
|
341
|
+
self.__class__.CanarySeed,
|
|
342
|
+
self.__class__.Buckwheat,
|
|
343
|
+
self.__class__.FallRye,
|
|
344
|
+
self.__class__.MixedGrains,
|
|
345
|
+
self.__class__.Oilseeds,
|
|
346
|
+
self.__class__.Canola,
|
|
347
|
+
self.__class__.Mustard,
|
|
348
|
+
self.__class__.Flax,
|
|
349
|
+
self.__class__.PulseCrops,
|
|
350
|
+
self.__class__.Soybeans,
|
|
351
|
+
self.__class__.BeansDryField,
|
|
352
|
+
self.__class__.Chickpeas,
|
|
353
|
+
self.__class__.DryPeas,
|
|
354
|
+
self.__class__.FieldPeas,
|
|
355
|
+
self.__class__.Lentils,
|
|
356
|
+
self.__class__.GrainCorn,
|
|
357
|
+
self.__class__.SilageCorn,
|
|
358
|
+
self.__class__.Safflower,
|
|
359
|
+
self.__class__.SunflowerSeed,
|
|
360
|
+
self.__class__.Tobacco,
|
|
361
|
+
self.__class__.Vegetables,
|
|
362
|
+
self.__class__.BerriesAndGrapes,
|
|
363
|
+
self.__class__.OtherFieldCrops
|
|
364
|
+
]
|
|
365
|
+
|
|
366
|
+
def is_silage_crop(self):
|
|
367
|
+
return self in [
|
|
368
|
+
self.__class__.SilageCorn,
|
|
369
|
+
self.__class__.GrassSilage,
|
|
370
|
+
self.__class__.BarleySilage,
|
|
371
|
+
self.__class__.OatSilage,
|
|
372
|
+
self.__class__.TriticaleSilage,
|
|
373
|
+
self.__class__.WheatSilage
|
|
374
|
+
]
|
|
375
|
+
|
|
376
|
+
def is_silage_crop_without_defaults(self):
|
|
377
|
+
return self in [
|
|
378
|
+
self.__class__.BarleySilage,
|
|
379
|
+
self.__class__.OatSilage,
|
|
380
|
+
self.__class__.SilageCorn,
|
|
381
|
+
self.__class__.TriticaleSilage,
|
|
382
|
+
self.__class__.GrassSilage,
|
|
383
|
+
self.__class__.WheatSilage
|
|
384
|
+
]
|
|
385
|
+
|
|
386
|
+
def get_grain_crop_equivalent_of_silage_crop(self):
|
|
387
|
+
match self:
|
|
388
|
+
case CropType.BarleySilage:
|
|
389
|
+
return CropType.Barley
|
|
390
|
+
case CropType.OatSilage:
|
|
391
|
+
return CropType.Oats
|
|
392
|
+
case CropType.GrassSilage:
|
|
393
|
+
return CropType.TameLegume
|
|
394
|
+
case CropType.TriticaleSilage:
|
|
395
|
+
return CropType.Triticale
|
|
396
|
+
case CropType.WheatSilage:
|
|
397
|
+
return CropType.Wheat
|
|
398
|
+
case CropType.CornSilage | CropType.SilageCorn:
|
|
399
|
+
return CropType.GrainCorn
|
|
400
|
+
case CropType.CerealSilage:
|
|
401
|
+
return CropType.Cereals
|
|
402
|
+
case _:
|
|
403
|
+
return None
|
|
404
|
+
|
|
405
|
+
def is_root_crop(self):
|
|
406
|
+
return self in [
|
|
407
|
+
self.__class__.Potatoes,
|
|
408
|
+
self.__class__.SugarBeets,
|
|
409
|
+
]
|
|
410
|
+
|
|
411
|
+
def is_small_grains(self):
|
|
412
|
+
return self in [
|
|
413
|
+
self.__class__.SmallGrainCereals,
|
|
414
|
+
self.__class__.Wheat,
|
|
415
|
+
self.__class__.WinterWheat,
|
|
416
|
+
self.__class__.WheatSilage,
|
|
417
|
+
self.__class__.Barley,
|
|
418
|
+
self.__class__.GrainCorn,
|
|
419
|
+
self.__class__.BarleySilage,
|
|
420
|
+
self.__class__.UndersownBarley,
|
|
421
|
+
self.__class__.Oats,
|
|
422
|
+
self.__class__.OatSilage,
|
|
423
|
+
self.__class__.Triticale,
|
|
424
|
+
self.__class__.TriticaleSilage,
|
|
425
|
+
self.__class__.Sorghum,
|
|
426
|
+
self.__class__.CanarySeed,
|
|
427
|
+
self.__class__.Buckwheat,
|
|
428
|
+
self.__class__.FallRye,
|
|
429
|
+
self.__class__.MixedGrains
|
|
430
|
+
]
|
|
431
|
+
|
|
432
|
+
def is_oil_seed(self):
|
|
433
|
+
return self in [
|
|
434
|
+
self.__class__.Oilseeds,
|
|
435
|
+
self.__class__.Canola,
|
|
436
|
+
self.__class__.Camelina,
|
|
437
|
+
self.__class__.Mustard,
|
|
438
|
+
self.__class__.Soybeans,
|
|
439
|
+
self.__class__.Flax
|
|
440
|
+
]
|
|
441
|
+
|
|
442
|
+
def is_other_field_crop(self):
|
|
443
|
+
return self in [
|
|
444
|
+
self.__class__.Safflower,
|
|
445
|
+
self.__class__.SunflowerSeed,
|
|
446
|
+
self.__class__.Tobacco,
|
|
447
|
+
self.__class__.Vegetables,
|
|
448
|
+
self.__class__.BerriesAndGrapes,
|
|
449
|
+
self.__class__.OtherFieldCrops
|
|
450
|
+
]
|
|
451
|
+
|
|
452
|
+
def is_pulse_crop(self):
|
|
453
|
+
return self in [
|
|
454
|
+
self.__class__.PulseCrops,
|
|
455
|
+
self.__class__.BeansDryField,
|
|
456
|
+
self.__class__.Chickpeas,
|
|
457
|
+
self.__class__.DryPeas,
|
|
458
|
+
self.__class__.FieldPeas,
|
|
459
|
+
self.__class__.Lentils
|
|
460
|
+
]
|
|
461
|
+
|
|
462
|
+
def is_economic_type(self):
|
|
463
|
+
return self in get_economic_crop_types()
|
|
464
|
+
|
|
465
|
+
def is_national_inventory_report(self):
|
|
466
|
+
return self in [
|
|
467
|
+
self.__class__.Barley,
|
|
468
|
+
self.__class__.Buckwheat,
|
|
469
|
+
self.__class__.Canola,
|
|
470
|
+
self.__class__.SmallGrainCereals,
|
|
471
|
+
self.__class__.Chickpeas,
|
|
472
|
+
self.__class__.GrainCorn,
|
|
473
|
+
self.__class__.SilageCorn,
|
|
474
|
+
self.__class__.BeansDryField,
|
|
475
|
+
self.__class__.FieldPeas,
|
|
476
|
+
self.__class__.FabaBeans,
|
|
477
|
+
self.__class__.FlaxSeed,
|
|
478
|
+
self.__class__.Grains,
|
|
479
|
+
self.__class__.Lentils,
|
|
480
|
+
self.__class__.MustardSeed,
|
|
481
|
+
self.__class__.MixedGrains,
|
|
482
|
+
self.__class__.Oats,
|
|
483
|
+
self.__class__.OtherDryFieldBeans,
|
|
484
|
+
self.__class__.Oilseeds,
|
|
485
|
+
self.__class__.Peas,
|
|
486
|
+
self.__class__.Potatoes,
|
|
487
|
+
self.__class__.Pulses,
|
|
488
|
+
self.__class__.Rye,
|
|
489
|
+
self.__class__.FallRye,
|
|
490
|
+
self.__class__.SpringRye,
|
|
491
|
+
self.__class__.Safflower,
|
|
492
|
+
self.__class__.Soybeans,
|
|
493
|
+
self.__class__.SugarBeets,
|
|
494
|
+
self.__class__.SunflowerSeed,
|
|
495
|
+
self.__class__.Triticale,
|
|
496
|
+
self.__class__.WhiteBeans,
|
|
497
|
+
self.__class__.Wheat,
|
|
498
|
+
self.__class__.WheatRye,
|
|
499
|
+
self.__class__.SpringWheat,
|
|
500
|
+
self.__class__.WinterWheat,
|
|
501
|
+
self.__class__.Durum,
|
|
502
|
+
self.__class__.CanarySeed,
|
|
503
|
+
self.__class__.Tobacco,
|
|
504
|
+
]
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
def get_valid_cover_crop_types() -> list[None | CropType]:
|
|
508
|
+
return [None] + sorted(
|
|
509
|
+
[
|
|
510
|
+
CropType.RedCloverTrifoliumPratenseL,
|
|
511
|
+
CropType.BerseemCloverTrifoliumAlexandriumL,
|
|
512
|
+
CropType.SweetCloverMelilotusOfficinalis,
|
|
513
|
+
CropType.CrimsonCloverTrifoliumIncarnatum,
|
|
514
|
+
CropType.HairyVetchViciaVillosaRoth,
|
|
515
|
+
CropType.AlfalfaMedicagoSativaL,
|
|
516
|
+
CropType.FabaBeanBroadBeanViciaFaba,
|
|
517
|
+
CropType.CowpeaVignaUnguiculata,
|
|
518
|
+
CropType.AustrianWinterPea,
|
|
519
|
+
CropType.RapeseedBrassicaNapusL,
|
|
520
|
+
CropType.WinterTurnipRapeBrassicaRapaSppOleiferaLCVLargo,
|
|
521
|
+
CropType.PhaceliaPhaceliaTanacetifoliaCVPhaci,
|
|
522
|
+
CropType.ForageRadishRaphanusSativusL,
|
|
523
|
+
CropType.MustardSinapusAlbaLSubspMaireiHLindbMaire,
|
|
524
|
+
CropType.BarleyHordeumVulgare,
|
|
525
|
+
CropType.OatAvenaSativa,
|
|
526
|
+
CropType.RyeSecaleCerealeWinterRyeCerealRye,
|
|
527
|
+
CropType.SesameSesamumIndicum,
|
|
528
|
+
CropType.FlaxLinumUsitatissimum,
|
|
529
|
+
CropType.RyeGrassLoliumPerenneL,
|
|
530
|
+
CropType.AnnualRyeGrassLoliumMultiflorum,
|
|
531
|
+
CropType.SorghumSorghumBicolour,
|
|
532
|
+
CropType.PigeonBean,
|
|
533
|
+
CropType.ShepherdsPurse,
|
|
534
|
+
CropType.WinterWheatTriticumAestivum
|
|
535
|
+
]
|
|
536
|
+
)
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def get_economic_crop_types() -> list[CropType]:
|
|
540
|
+
return sorted(concat_lists(
|
|
541
|
+
get_alberta_economic_crop_types(),
|
|
542
|
+
get_saskatchewan_economic_crop_types(),
|
|
543
|
+
get_manitoba_economic_crop_types(),
|
|
544
|
+
get_ontario_economic_crop_types()))
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
def get_valid_crop_types() -> list[CropType]:
|
|
548
|
+
return sorted(
|
|
549
|
+
[
|
|
550
|
+
CropType.Barley,
|
|
551
|
+
CropType.BarleySilage,
|
|
552
|
+
CropType.BeansDryField,
|
|
553
|
+
CropType.BerriesAndGrapes,
|
|
554
|
+
CropType.Buckwheat,
|
|
555
|
+
CropType.CanarySeed,
|
|
556
|
+
CropType.Canola,
|
|
557
|
+
CropType.Chickpeas,
|
|
558
|
+
CropType.Camelina,
|
|
559
|
+
CropType.DryPeas,
|
|
560
|
+
CropType.FallRye,
|
|
561
|
+
CropType.Flax,
|
|
562
|
+
CropType.ForageForSeed,
|
|
563
|
+
CropType.GrainCorn,
|
|
564
|
+
CropType.GrassSilage,
|
|
565
|
+
CropType.TameGrass,
|
|
566
|
+
CropType.TameLegume,
|
|
567
|
+
CropType.TameMixed,
|
|
568
|
+
CropType.Lentils,
|
|
569
|
+
CropType.MixedGrains,
|
|
570
|
+
CropType.Mustard,
|
|
571
|
+
CropType.OatSilage,
|
|
572
|
+
CropType.Oats,
|
|
573
|
+
CropType.Oilseeds,
|
|
574
|
+
CropType.RangelandNative,
|
|
575
|
+
CropType.OtherFieldCrops,
|
|
576
|
+
CropType.SeededGrassland,
|
|
577
|
+
CropType.Potatoes,
|
|
578
|
+
CropType.PulseCrops,
|
|
579
|
+
CropType.Safflower,
|
|
580
|
+
CropType.SilageCorn,
|
|
581
|
+
CropType.SmallGrainCereals,
|
|
582
|
+
CropType.Sorghum,
|
|
583
|
+
CropType.Soybeans,
|
|
584
|
+
CropType.SugarBeets,
|
|
585
|
+
CropType.SummerFallow,
|
|
586
|
+
CropType.SunflowerSeed,
|
|
587
|
+
CropType.Tobacco,
|
|
588
|
+
CropType.Triticale,
|
|
589
|
+
CropType.TriticaleSilage,
|
|
590
|
+
CropType.UndersownBarley,
|
|
591
|
+
CropType.Vegetables,
|
|
592
|
+
CropType.Wheat,
|
|
593
|
+
CropType.WheatSilage
|
|
594
|
+
]
|
|
595
|
+
)
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
def get_valid_perennial_types() -> list[CropType]:
|
|
599
|
+
return sorted(
|
|
600
|
+
[
|
|
601
|
+
CropType.ForageForSeed,
|
|
602
|
+
CropType.TameGrass,
|
|
603
|
+
CropType.TameLegume,
|
|
604
|
+
CropType.TameMixed,
|
|
605
|
+
CropType.RangelandNative,
|
|
606
|
+
CropType.SeededGrassland,
|
|
607
|
+
|
|
608
|
+
]
|
|
609
|
+
)
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
def get_alberta_economic_crop_types() -> list[CropType]:
|
|
613
|
+
return sorted([
|
|
614
|
+
CropType.AlfalfaHay,
|
|
615
|
+
CropType.ArgentineHTCanola,
|
|
616
|
+
CropType.CPSWheat,
|
|
617
|
+
CropType.CerealSilage,
|
|
618
|
+
CropType.DryBean,
|
|
619
|
+
CropType.Durum,
|
|
620
|
+
CropType.FeedBarley,
|
|
621
|
+
CropType.FieldPeas,
|
|
622
|
+
CropType.Flax,
|
|
623
|
+
CropType.TameMixed,
|
|
624
|
+
CropType.KabuliChickpea,
|
|
625
|
+
CropType.MaltBarley,
|
|
626
|
+
CropType.MillingOats,
|
|
627
|
+
CropType.PolishCanola,
|
|
628
|
+
CropType.RedLentils,
|
|
629
|
+
CropType.SoftWheat,
|
|
630
|
+
CropType.SpringWheat,
|
|
631
|
+
CropType.SummerFallow,
|
|
632
|
+
CropType.YellowMustard
|
|
633
|
+
])
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
def get_saskatchewan_economic_crop_types() -> list[CropType]:
|
|
637
|
+
return [
|
|
638
|
+
CropType.BlackBean,
|
|
639
|
+
CropType.BrownMustard,
|
|
640
|
+
CropType.Camelina,
|
|
641
|
+
CropType.CanarySeed,
|
|
642
|
+
CropType.Canola,
|
|
643
|
+
CropType.CarawayFirstSeason,
|
|
644
|
+
CropType.CarawaySecondSeason,
|
|
645
|
+
CropType.Coriander,
|
|
646
|
+
CropType.Corn,
|
|
647
|
+
CropType.DesiChickpeas,
|
|
648
|
+
CropType.Durum,
|
|
649
|
+
CropType.EdibleGreenPeas,
|
|
650
|
+
CropType.EdibleYellowPeas,
|
|
651
|
+
CropType.FabaBeans,
|
|
652
|
+
CropType.FeedBarley,
|
|
653
|
+
CropType.Fenugreek,
|
|
654
|
+
CropType.Flax,
|
|
655
|
+
CropType.HybridFallRye,
|
|
656
|
+
CropType.LargeGreenLentils,
|
|
657
|
+
CropType.LargeKabuliChickpea,
|
|
658
|
+
CropType.MaltBarley,
|
|
659
|
+
CropType.Oats,
|
|
660
|
+
CropType.OrientalMustard,
|
|
661
|
+
CropType.Quinoa,
|
|
662
|
+
CropType.RedLentils,
|
|
663
|
+
CropType.SmallKabuliChickpea,
|
|
664
|
+
CropType.Soybeans,
|
|
665
|
+
CropType.SpringWheat,
|
|
666
|
+
CropType.SunflowerOilseedEMSS,
|
|
667
|
+
CropType.WinterWheat,
|
|
668
|
+
CropType.YellowMustard
|
|
669
|
+
]
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
def get_manitoba_economic_crop_types() -> list[CropType]:
|
|
673
|
+
return [
|
|
674
|
+
CropType.Barley,
|
|
675
|
+
CropType.BeansPinto,
|
|
676
|
+
CropType.BeansWhite,
|
|
677
|
+
CropType.Canola,
|
|
678
|
+
CropType.Corn,
|
|
679
|
+
CropType.FlaxSeed,
|
|
680
|
+
CropType.HardRedSpringWheat,
|
|
681
|
+
CropType.HybridFallRye,
|
|
682
|
+
CropType.Oats,
|
|
683
|
+
CropType.Peas,
|
|
684
|
+
CropType.Soybeans,
|
|
685
|
+
CropType.SunflowerConfection,
|
|
686
|
+
CropType.SunflowerOil,
|
|
687
|
+
CropType.WheatNorthernHardRed,
|
|
688
|
+
CropType.WheatOtherSpring,
|
|
689
|
+
CropType.WheatPrairieSpring,
|
|
690
|
+
CropType.WinterWheat
|
|
691
|
+
]
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
def get_ontario_economic_crop_types() -> list[CropType]:
|
|
695
|
+
return [
|
|
696
|
+
CropType.AlfalfaHay,
|
|
697
|
+
CropType.ColouredBeans,
|
|
698
|
+
CropType.CornSilage,
|
|
699
|
+
CropType.GrainCorn,
|
|
700
|
+
CropType.HardRedSpringWheat,
|
|
701
|
+
CropType.HardRedWinterWheat,
|
|
702
|
+
CropType.HardRedWinterWheatNoTill,
|
|
703
|
+
CropType.NorthernOntarioBarley,
|
|
704
|
+
CropType.NorthernOntarioOats,
|
|
705
|
+
CropType.SoftWinterWheat,
|
|
706
|
+
CropType.SoftWinterWheatNoTill,
|
|
707
|
+
CropType.SouthernOntarioBarley,
|
|
708
|
+
CropType.SouthernOntarioOats,
|
|
709
|
+
CropType.SoybeanNoTill,
|
|
710
|
+
CropType.Soybeans,
|
|
711
|
+
CropType.SoybeansRoundUpReady,
|
|
712
|
+
CropType.SpringCanolaHt,
|
|
713
|
+
CropType.SwitchgrassDirect,
|
|
714
|
+
CropType.SwitchgrassDirectNoTill,
|
|
715
|
+
CropType.SwitchgrassUnderseeded,
|
|
716
|
+
CropType.SwitchgrassUnderseededNoTill,
|
|
717
|
+
CropType.WhiteBlackBeans,
|
|
718
|
+
CropType.WinterCanolaHybrid
|
|
719
|
+
]
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
def get_grassland_types() -> list[CropType]:
|
|
723
|
+
return sorted(
|
|
724
|
+
[
|
|
725
|
+
CropType.BrokenGrassland,
|
|
726
|
+
CropType.GrasslandSeeded
|
|
727
|
+
]
|
|
728
|
+
)
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
def convert_crop_type_name(name: str) -> CropType:
|
|
732
|
+
"""Returns a CropType member based on its name or abbreviation.
|
|
733
|
+
|
|
734
|
+
Args:
|
|
735
|
+
name: name or abbreviation of the crop
|
|
736
|
+
|
|
737
|
+
Returns:
|
|
738
|
+
CropType member
|
|
739
|
+
|
|
740
|
+
Holos source code:
|
|
741
|
+
https://github.com/RamiALBASHA/Holos/blob/71638efd97c84c6ded45e342ce664477df6f803f/H.Core/Converters/CropTypeStringConverter.cs#L10
|
|
742
|
+
"""
|
|
743
|
+
match keep_alphabetical_characters(name=name):
|
|
744
|
+
case "alfalfaseed":
|
|
745
|
+
return CropType.AlfalfaSeed
|
|
746
|
+
case "barley":
|
|
747
|
+
return CropType.Barley
|
|
748
|
+
case "barleysilage":
|
|
749
|
+
return CropType.BarleySilage
|
|
750
|
+
case "barleysilageunderseed":
|
|
751
|
+
return CropType.BarleySilageUnderSeed
|
|
752
|
+
case "bromehay":
|
|
753
|
+
return CropType.BromeHay
|
|
754
|
+
case "grasssilage":
|
|
755
|
+
return CropType.GrassSilage
|
|
756
|
+
case "beans":
|
|
757
|
+
return CropType.Beans
|
|
758
|
+
case "beansdryfield" | "dryfieldbeans" | "dfbns":
|
|
759
|
+
return CropType.BeansDryField
|
|
760
|
+
case "otherdryfieldbeans":
|
|
761
|
+
return CropType.OtherDryFieldBeans
|
|
762
|
+
case "berriesgrapes":
|
|
763
|
+
return CropType.BerriesAndGrapes
|
|
764
|
+
case "buckwheat" | "bucwht":
|
|
765
|
+
return CropType.Buckwheat
|
|
766
|
+
case "canaryseed" | "canaryseeds" | "canary":
|
|
767
|
+
return CropType.CanarySeed
|
|
768
|
+
case "canola":
|
|
769
|
+
return CropType.Canola
|
|
770
|
+
case "caraway":
|
|
771
|
+
return CropType.Caraway
|
|
772
|
+
case "carrot":
|
|
773
|
+
return CropType.Carrot
|
|
774
|
+
case "chickpeas" | "chickpea":
|
|
775
|
+
return CropType.Chickpeas
|
|
776
|
+
case "colouredwhitefababeans":
|
|
777
|
+
return CropType.ColouredWhiteFabaBeans
|
|
778
|
+
case "cpswheat":
|
|
779
|
+
return CropType.CPSWheat
|
|
780
|
+
case "drybean":
|
|
781
|
+
return CropType.DryBean
|
|
782
|
+
case "drypeas" | "drypea" | "peasdry":
|
|
783
|
+
return CropType.DryPeas
|
|
784
|
+
case "dryfieldpeas" | "dfpeas":
|
|
785
|
+
return CropType.DryFieldPeas
|
|
786
|
+
case "dill":
|
|
787
|
+
return CropType.Dill
|
|
788
|
+
case "durum" | "wheatdurum" | "durumwheat" | "whtdur":
|
|
789
|
+
return CropType.Durum
|
|
790
|
+
case "fababean":
|
|
791
|
+
return CropType.FabaBeans
|
|
792
|
+
case "fallow":
|
|
793
|
+
return CropType.Fallow
|
|
794
|
+
case "fallrye" | "ryefallremaining" | "ryefal":
|
|
795
|
+
return CropType.FallRye
|
|
796
|
+
case "fieldpea":
|
|
797
|
+
return CropType.FieldPeas
|
|
798
|
+
case "Flaxseed":
|
|
799
|
+
return CropType.Flax
|
|
800
|
+
case "flaxseed" | "flaxsd":
|
|
801
|
+
return CropType.FlaxSeed
|
|
802
|
+
case "freshcornsweet":
|
|
803
|
+
return CropType.FreshCornSweet
|
|
804
|
+
case "freshpeas":
|
|
805
|
+
return CropType.FreshPeas
|
|
806
|
+
case "forage":
|
|
807
|
+
return CropType.Forage
|
|
808
|
+
case "foddercorn":
|
|
809
|
+
return CropType.FodderCorn
|
|
810
|
+
case "forageforseed":
|
|
811
|
+
return CropType.ForageForSeed
|
|
812
|
+
case "graincorn" | "cornforgrain" | "corngr":
|
|
813
|
+
return CropType.GrainCorn
|
|
814
|
+
case "grains":
|
|
815
|
+
return CropType.Grains
|
|
816
|
+
case "genericgrains":
|
|
817
|
+
return CropType.GenericGrains
|
|
818
|
+
case "corn" | "maize":
|
|
819
|
+
return CropType.Corn
|
|
820
|
+
case "grainsorghum":
|
|
821
|
+
return CropType.GrainSorghum
|
|
822
|
+
case "grassseed":
|
|
823
|
+
return CropType.GrassSeed
|
|
824
|
+
case "rangelandlandnative":
|
|
825
|
+
return CropType.RangelandNative
|
|
826
|
+
case "greenfeed":
|
|
827
|
+
return CropType.GreenFeed
|
|
828
|
+
case "hardredspringwheat":
|
|
829
|
+
return CropType.HardRedSpringWheat
|
|
830
|
+
case "tamegrass":
|
|
831
|
+
return CropType.TameGrass
|
|
832
|
+
case "grasshay":
|
|
833
|
+
return CropType.GrassHay
|
|
834
|
+
case "tamelegume":
|
|
835
|
+
return CropType.TameLegume
|
|
836
|
+
case "nonlegumehay":
|
|
837
|
+
return CropType.NonLegumeHay
|
|
838
|
+
case "tamemixed" | "mixedhay":
|
|
839
|
+
return CropType.TameMixed
|
|
840
|
+
case "hayandforageseed":
|
|
841
|
+
return CropType.HayAndForageSeed
|
|
842
|
+
case "hairyvetch":
|
|
843
|
+
return CropType.HairyVetch
|
|
844
|
+
case "hairyvetchrye":
|
|
845
|
+
return CropType.HairyVetchAndRye
|
|
846
|
+
case "hyola":
|
|
847
|
+
return CropType.Hyola
|
|
848
|
+
case "lentils" | "lentil":
|
|
849
|
+
return CropType.Lentils
|
|
850
|
+
case "linola":
|
|
851
|
+
return CropType.Linola
|
|
852
|
+
case "maltbarley":
|
|
853
|
+
return CropType.MaltBarley
|
|
854
|
+
case "marketgarden":
|
|
855
|
+
return CropType.MarketGarden
|
|
856
|
+
case "milkvetch":
|
|
857
|
+
return CropType.MilkVetch
|
|
858
|
+
case "millet":
|
|
859
|
+
return CropType.Millet
|
|
860
|
+
case "mint":
|
|
861
|
+
return CropType.Mint
|
|
862
|
+
case "mixedgrains" | "mixedgrain" | "mxdgrn":
|
|
863
|
+
return CropType.MixedGrains
|
|
864
|
+
case "mustard":
|
|
865
|
+
return CropType.Mustard
|
|
866
|
+
case "mustardseed" | "mustsd":
|
|
867
|
+
return CropType.MustardSeed
|
|
868
|
+
case "monarda":
|
|
869
|
+
return CropType.Monarda
|
|
870
|
+
case "nativepasture":
|
|
871
|
+
return CropType.NativePasture
|
|
872
|
+
case "oats":
|
|
873
|
+
return CropType.Oats
|
|
874
|
+
case "oatsilage":
|
|
875
|
+
return CropType.OatSilage
|
|
876
|
+
case "oilseeds":
|
|
877
|
+
return CropType.Oilseeds
|
|
878
|
+
case "onion":
|
|
879
|
+
return CropType.Onion
|
|
880
|
+
case "otherfieldcrops":
|
|
881
|
+
return CropType.OtherFieldCrops
|
|
882
|
+
case "peas":
|
|
883
|
+
return CropType.Peas
|
|
884
|
+
case "pulses":
|
|
885
|
+
return CropType.Pulses
|
|
886
|
+
case "pulsecrops":
|
|
887
|
+
return CropType.PulseCrops
|
|
888
|
+
case "seededgrassland":
|
|
889
|
+
return CropType.SeededGrassland
|
|
890
|
+
case "peanuts":
|
|
891
|
+
return CropType.Peanuts
|
|
892
|
+
case "perennialforages":
|
|
893
|
+
return CropType.PerennialForages
|
|
894
|
+
case "perennialgrasses":
|
|
895
|
+
return CropType.PerennialGrasses
|
|
896
|
+
case "potatoes" | "potato" | "potats" | "potatos":
|
|
897
|
+
return CropType.Potatoes
|
|
898
|
+
case "rice":
|
|
899
|
+
return CropType.Rice
|
|
900
|
+
case "rye" | "ryeall":
|
|
901
|
+
return CropType.Rye
|
|
902
|
+
case "safflower" | "safflwr":
|
|
903
|
+
return CropType.Safflower
|
|
904
|
+
case "seedpotato":
|
|
905
|
+
return CropType.SeedPotato
|
|
906
|
+
case "silagecorn" | "cornsilage" | "cornslg":
|
|
907
|
+
return CropType.SilageCorn
|
|
908
|
+
case "smallfruit":
|
|
909
|
+
return CropType.SmallFruit
|
|
910
|
+
case "softwheat":
|
|
911
|
+
return CropType.SoftWheat
|
|
912
|
+
case "soybeans" | "soybean" | "soybns":
|
|
913
|
+
return CropType.Soybeans
|
|
914
|
+
case "sorghum":
|
|
915
|
+
return CropType.Sorghum
|
|
916
|
+
case "sorghumsudangrass":
|
|
917
|
+
return CropType.SorghumSudanGrass
|
|
918
|
+
case "smallgraincereals":
|
|
919
|
+
return CropType.SmallGrainCereals
|
|
920
|
+
case "springwheat" | "wheatspring" | "whtspg":
|
|
921
|
+
return CropType.SpringWheat
|
|
922
|
+
case "springrye" | "ryespring" | "ryespg":
|
|
923
|
+
return CropType.SpringRye
|
|
924
|
+
case "sugarbeets" | "sugarb":
|
|
925
|
+
return CropType.SugarBeets
|
|
926
|
+
case "summerfallow":
|
|
927
|
+
return CropType.SummerFallow
|
|
928
|
+
case "sunflower" | "sunfls":
|
|
929
|
+
return CropType.Sunflower
|
|
930
|
+
case "sunflowerseed" | "sunflowerseeds":
|
|
931
|
+
return CropType.SunflowerSeed
|
|
932
|
+
case "tamepasture":
|
|
933
|
+
return CropType.TamePasture
|
|
934
|
+
case "timothyhay" | "ohayfd":
|
|
935
|
+
return CropType.TimothyHay
|
|
936
|
+
case "tobacco":
|
|
937
|
+
return CropType.Tobacco
|
|
938
|
+
case "totaltreefruitsnuts":
|
|
939
|
+
return CropType.TreeFruitAndNuts
|
|
940
|
+
case "triticale" | "tritcl":
|
|
941
|
+
return CropType.Triticale
|
|
942
|
+
case "tubers":
|
|
943
|
+
return CropType.Tubers
|
|
944
|
+
case "turfsod":
|
|
945
|
+
return CropType.TurfSod
|
|
946
|
+
case "undersownbarley":
|
|
947
|
+
return CropType.UndersownBarley
|
|
948
|
+
case "vegetables":
|
|
949
|
+
return CropType.Vegetables
|
|
950
|
+
case "wheatbolinder":
|
|
951
|
+
return CropType.WheatBolinder
|
|
952
|
+
case "wheatgan":
|
|
953
|
+
return CropType.WheatGan
|
|
954
|
+
case "wheat" | "wheatall" | "whtall":
|
|
955
|
+
return CropType.Wheat
|
|
956
|
+
case "wheatrye":
|
|
957
|
+
return CropType.WheatRye
|
|
958
|
+
case "winterwheat" | "wheatwinter" | "wheatwinterremaining" | "whtwint":
|
|
959
|
+
return CropType.WinterWheat
|
|
960
|
+
case "winterweeds":
|
|
961
|
+
return CropType.WinterWeeds
|
|
962
|
+
case "fieldpeas":
|
|
963
|
+
return CropType.FieldPeas
|
|
964
|
+
case "berriesandgrapes":
|
|
965
|
+
return CropType.BerriesAndGrapes
|
|
966
|
+
case "flax":
|
|
967
|
+
return CropType.Flax
|
|
968
|
+
case "triticalesilage":
|
|
969
|
+
return CropType.TriticaleSilage
|
|
970
|
+
case "wheatsilage":
|
|
971
|
+
return CropType.WheatSilage
|
|
972
|
+
case "grassclovermixtures":
|
|
973
|
+
return CropType.GrassCloverMixtures
|
|
974
|
+
case "redclovertrifoliumpratensel":
|
|
975
|
+
return CropType.RedCloverTrifoliumPratenseL
|
|
976
|
+
case "berseemclovertrifoliumalexandriuml":
|
|
977
|
+
return CropType.BerseemCloverTrifoliumAlexandriumL
|
|
978
|
+
case "sweetclovermelilotusofficinalis":
|
|
979
|
+
return CropType.SweetCloverMelilotusOfficinalis
|
|
980
|
+
case "crimsonclovertrifoliumincarnatum":
|
|
981
|
+
return CropType.CrimsonCloverTrifoliumIncarnatum
|
|
982
|
+
case "hairyvetchviciavillosaroth":
|
|
983
|
+
return CropType.HairyVetchViciaVillosaRoth
|
|
984
|
+
case "alfalfamedicagosatival":
|
|
985
|
+
return CropType.AlfalfaMedicagoSativaL
|
|
986
|
+
case "fababeanbroadbeanviciafaba":
|
|
987
|
+
return CropType.FabaBeanBroadBeanViciaFaba
|
|
988
|
+
case "cowpeavignaunguiculata":
|
|
989
|
+
return CropType.CowpeaVignaUnguiculata
|
|
990
|
+
case "austrianwinterpea":
|
|
991
|
+
return CropType.AustrianWinterPea
|
|
992
|
+
case "rapeseedbrassicanapusl":
|
|
993
|
+
return CropType.RapeseedBrassicaNapusL
|
|
994
|
+
case "winterturniprapebrassicarapasppoleiferalcvlargo":
|
|
995
|
+
return CropType.WinterTurnipRapeBrassicaRapaSppOleiferaLCVLargo
|
|
996
|
+
case "phaceliaphaceliatanacetifoliacvphaci":
|
|
997
|
+
return CropType.PhaceliaPhaceliaTanacetifoliaCVPhaci
|
|
998
|
+
case "forageradishraphanussativusl":
|
|
999
|
+
return CropType.ForageRadishRaphanusSativusL
|
|
1000
|
+
case "mustardsinapusalbalsubspmaireihlindbmaire":
|
|
1001
|
+
return CropType.MustardSinapusAlbaLSubspMaireiHLindbMaire
|
|
1002
|
+
case "barleyhordeumvulgare":
|
|
1003
|
+
return CropType.BarleyHordeumVulgare
|
|
1004
|
+
case "oatavenasativa":
|
|
1005
|
+
return CropType.OatAvenaSativa
|
|
1006
|
+
case "ryesecalecerealewinterryecerealrye":
|
|
1007
|
+
return CropType.RyeSecaleCerealeWinterRyeCerealRye
|
|
1008
|
+
case "sesamesesamumindicum":
|
|
1009
|
+
return CropType.SesameSesamumIndicum
|
|
1010
|
+
case "flaxlinumusitatissimum":
|
|
1011
|
+
return CropType.FlaxLinumUsitatissimum
|
|
1012
|
+
case "ryegrassloliumperennel":
|
|
1013
|
+
return CropType.RyeGrassLoliumPerenneL
|
|
1014
|
+
case "annualryegrassloliummultiflorum":
|
|
1015
|
+
return CropType.AnnualRyeGrassLoliumMultiflorum
|
|
1016
|
+
case "sorghumsorghumbicolour":
|
|
1017
|
+
return CropType.SorghumSorghumBicolour
|
|
1018
|
+
case "pigeonbean":
|
|
1019
|
+
return CropType.PigeonBean
|
|
1020
|
+
case "shepherdspurse":
|
|
1021
|
+
return CropType.ShepherdsPurse
|
|
1022
|
+
case "winterwheattriticumaestivum":
|
|
1023
|
+
return CropType.WinterWheatTriticumAestivum
|
|
1024
|
+
case "feedbarley":
|
|
1025
|
+
return CropType.FeedBarley
|
|
1026
|
+
case "redlentil":
|
|
1027
|
+
return CropType.RedLentils
|
|
1028
|
+
case "millingoats":
|
|
1029
|
+
return CropType.MillingOats
|
|
1030
|
+
case "polishcanola":
|
|
1031
|
+
return CropType.PolishCanola
|
|
1032
|
+
case "argentinehtcanola":
|
|
1033
|
+
return CropType.ArgentineHTCanola
|
|
1034
|
+
case "kabulichickpea":
|
|
1035
|
+
return CropType.KabuliChickpea
|
|
1036
|
+
case "yellowmustard":
|
|
1037
|
+
return CropType.YellowMustard
|
|
1038
|
+
case "cerealsilage":
|
|
1039
|
+
return CropType.CerealSilage
|
|
1040
|
+
case "cereals":
|
|
1041
|
+
return CropType.Cereals
|
|
1042
|
+
case "alfalfahay" | "alfalfa":
|
|
1043
|
+
return CropType.AlfalfaHay
|
|
1044
|
+
case "ediblegreenpeas":
|
|
1045
|
+
return CropType.EdibleGreenPeas
|
|
1046
|
+
case "edibleyellowpeas":
|
|
1047
|
+
return CropType.EdibleYellowPeas
|
|
1048
|
+
case "blackbean":
|
|
1049
|
+
return CropType.BlackBean
|
|
1050
|
+
case "hybridfallrye":
|
|
1051
|
+
return CropType.HybridFallRye
|
|
1052
|
+
case "brownmustard":
|
|
1053
|
+
return CropType.BrownMustard
|
|
1054
|
+
case "orientalmustard":
|
|
1055
|
+
return CropType.OrientalMustard
|
|
1056
|
+
case "sunfloweroilseedemss":
|
|
1057
|
+
return CropType.SunflowerOilseedEMSS
|
|
1058
|
+
case "desichickpea":
|
|
1059
|
+
return CropType.DesiChickpeas
|
|
1060
|
+
case "camelina":
|
|
1061
|
+
return CropType.Camelina
|
|
1062
|
+
case "carawayfirstseason":
|
|
1063
|
+
return CropType.CarawayFirstSeason
|
|
1064
|
+
case "carawaysecondseason":
|
|
1065
|
+
return CropType.CarawaySecondSeason
|
|
1066
|
+
case "coriander":
|
|
1067
|
+
return CropType.Coriander
|
|
1068
|
+
case "fenugreek":
|
|
1069
|
+
return CropType.Fenugreek
|
|
1070
|
+
case "quinoa":
|
|
1071
|
+
return CropType.Quinoa
|
|
1072
|
+
case "wheathardredspring":
|
|
1073
|
+
return CropType.WheatHardRedSpring
|
|
1074
|
+
case "wheatprairiespring":
|
|
1075
|
+
return CropType.WheatPrairieSpring
|
|
1076
|
+
case "wheatotherspring":
|
|
1077
|
+
return CropType.WheatOtherSpring
|
|
1078
|
+
case "beanspinto":
|
|
1079
|
+
return CropType.BeansPinto
|
|
1080
|
+
case "sunflowerconfection":
|
|
1081
|
+
return CropType.SunflowerConfection
|
|
1082
|
+
case "largegreenlentils":
|
|
1083
|
+
return CropType.LargeGreenLentils
|
|
1084
|
+
case "wheatnorthernhardred":
|
|
1085
|
+
return CropType.WheatNorthernHardRed
|
|
1086
|
+
case "sunfloweroil":
|
|
1087
|
+
return CropType.SunflowerOil
|
|
1088
|
+
case "beanswhite":
|
|
1089
|
+
return CropType.BeansWhite
|
|
1090
|
+
case "kabulichickpealarge":
|
|
1091
|
+
return CropType.LargeKabuliChickpea
|
|
1092
|
+
case "kabulichickpeasmall":
|
|
1093
|
+
return CropType.SmallKabuliChickpea
|
|
1094
|
+
case "colouredbeans":
|
|
1095
|
+
return CropType.ColouredBeans
|
|
1096
|
+
case "hardredwinterwheat":
|
|
1097
|
+
return CropType.HardRedWinterWheat
|
|
1098
|
+
case "northernontariobarley":
|
|
1099
|
+
return CropType.NorthernOntarioBarley
|
|
1100
|
+
case "southernontariobarley":
|
|
1101
|
+
return CropType.SouthernOntarioBarley
|
|
1102
|
+
case "northernontariooats":
|
|
1103
|
+
return CropType.NorthernOntarioOats
|
|
1104
|
+
case "rangelandnative":
|
|
1105
|
+
return CropType.RangelandNative
|
|
1106
|
+
case "southernontariooats":
|
|
1107
|
+
return CropType.SouthernOntarioOats
|
|
1108
|
+
case "springcanolaht":
|
|
1109
|
+
return CropType.SpringCanolaHt
|
|
1110
|
+
case "soybeansnotill":
|
|
1111
|
+
return CropType.SoybeanNoTill
|
|
1112
|
+
case "soybeansroundupready":
|
|
1113
|
+
return CropType.SoybeansRoundUpReady
|
|
1114
|
+
case "switchgrassdirect":
|
|
1115
|
+
return CropType.SwitchgrassDirect
|
|
1116
|
+
case "switchgrassdirectnotill":
|
|
1117
|
+
return CropType.SwitchgrassDirectNoTill
|
|
1118
|
+
case "switchgrassunderseeded":
|
|
1119
|
+
return CropType.SwitchgrassUnderseeded
|
|
1120
|
+
case "switchgrassunderseedednotill":
|
|
1121
|
+
return CropType.SwitchgrassUnderseededNoTill
|
|
1122
|
+
case "softwinterwheat":
|
|
1123
|
+
return CropType.SoftWinterWheat
|
|
1124
|
+
case "softwinterwheatnotill":
|
|
1125
|
+
return CropType.SoftWinterWheatNoTill
|
|
1126
|
+
case "whiteblackbeans":
|
|
1127
|
+
return CropType.WhiteBlackBeans
|
|
1128
|
+
case "whitebeans":
|
|
1129
|
+
return CropType.WhiteBeans
|
|
1130
|
+
case "wintercanolahybrid":
|
|
1131
|
+
return CropType.WinterCanolaHybrid
|
|
1132
|
+
case "hardredwinterwheatnotillage":
|
|
1133
|
+
return CropType.HardRedWinterWheatNoTill
|
|
1134
|
+
case "nfixingforages":
|
|
1135
|
+
return CropType.NFixingForages
|
|
1136
|
+
case "nonnfixingforages":
|
|
1137
|
+
return CropType.NonNFixingForages
|
|
1138
|
+
case _:
|
|
1139
|
+
# Trace.TraceError($"{nameof(CropTypeStringConverter)}: Crop type '{name}' not mapped, returning default value.")
|
|
1140
|
+
return CropType.NotSelected
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
class CropTypeInGui(AutoNameEnum):
|
|
1144
|
+
"""This class includes all CropType members that are allowed in the GUI of Holos.
|
|
1145
|
+
|
|
1146
|
+
Holos Source Code:
|
|
1147
|
+
None. This class was manually written.
|
|
1148
|
+
|
|
1149
|
+
"""
|
|
1150
|
+
# region Oilseed
|
|
1151
|
+
Camelina = CropType.Camelina
|
|
1152
|
+
Canola = CropType.Canola
|
|
1153
|
+
Flax = CropType.Flax
|
|
1154
|
+
Mustard = CropType.Mustard
|
|
1155
|
+
Oilseeds = CropType.Oilseeds
|
|
1156
|
+
Soybeans = CropType.Soybeans
|
|
1157
|
+
# endregion
|
|
1158
|
+
|
|
1159
|
+
# region Other field crops
|
|
1160
|
+
BerriesAndGrapes = CropType.BerriesAndGrapes
|
|
1161
|
+
OtherFieldCrops = CropType.OtherFieldCrops
|
|
1162
|
+
Safflower = CropType.Safflower
|
|
1163
|
+
SunflowerSeed = CropType.SunflowerSeed
|
|
1164
|
+
Tobacco = CropType.Tobacco
|
|
1165
|
+
Vegetables = CropType.Vegetables
|
|
1166
|
+
# endregion
|
|
1167
|
+
|
|
1168
|
+
# region Pulse crops
|
|
1169
|
+
BeansDryField = CropType.BeansDryField
|
|
1170
|
+
Chickpeas = CropType.Chickpeas
|
|
1171
|
+
DryFieldPeas = CropType.DryFieldPeas
|
|
1172
|
+
Lentils = CropType.Lentils
|
|
1173
|
+
PulseCrops = CropType.PulseCrops
|
|
1174
|
+
# endregion
|
|
1175
|
+
|
|
1176
|
+
# region Root crops
|
|
1177
|
+
Potatoes = CropType.Potatoes
|
|
1178
|
+
SugarBeets = CropType.SugarBeets
|
|
1179
|
+
# endregion
|
|
1180
|
+
|
|
1181
|
+
# region Silage
|
|
1182
|
+
BarleySilage = CropType.BarleySilage
|
|
1183
|
+
GrassSilage = CropType.GrassSilage
|
|
1184
|
+
OatSilage = CropType.OatSilage
|
|
1185
|
+
SilageCorn = CropType.SilageCorn
|
|
1186
|
+
TriticaleSilage = CropType.TriticaleSilage
|
|
1187
|
+
WheatSilage = CropType.WheatSilage
|
|
1188
|
+
# endregion
|
|
1189
|
+
|
|
1190
|
+
# region Small grain cereals
|
|
1191
|
+
Barley = CropType.Barley
|
|
1192
|
+
Buckwheat = CropType.Buckwheat
|
|
1193
|
+
CanarySeed = CropType.CanarySeed
|
|
1194
|
+
FallRye = CropType.FallRye
|
|
1195
|
+
GrainCorn = CropType.GrainCorn
|
|
1196
|
+
MixedGrains = CropType.MixedGrains
|
|
1197
|
+
Oats = CropType.Oats
|
|
1198
|
+
SmallGrainCereals = CropType.SmallGrainCereals
|
|
1199
|
+
Sorghum = CropType.Sorghum
|
|
1200
|
+
Triticale = CropType.Triticale
|
|
1201
|
+
UndersownBarley = CropType.UndersownBarley
|
|
1202
|
+
Wheat = CropType.Wheat
|
|
1203
|
+
# endregion
|
|
1204
|
+
|
|
1205
|
+
# region Fallow
|
|
1206
|
+
Fallow = CropType.Fallow
|
|
1207
|
+
# endregion
|
|
1208
|
+
|
|
1209
|
+
# region Perennial
|
|
1210
|
+
ForageForSeed = CropType.ForageForSeed
|
|
1211
|
+
RangelandNative = CropType.RangelandNative
|
|
1212
|
+
SeededGrassland = CropType.SeededGrassland
|
|
1213
|
+
TameGrass = CropType.TameGrass
|
|
1214
|
+
TameLegume = CropType.TameLegume
|
|
1215
|
+
TameMixed = CropType.TameMixed
|
|
1216
|
+
# endregion
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
def get_nitrogen_fixation(
|
|
1220
|
+
crop_type: CropType
|
|
1221
|
+
) -> float:
|
|
1222
|
+
"""Returns the nitrogen fixation fraction by the crop
|
|
1223
|
+
|
|
1224
|
+
Args:
|
|
1225
|
+
crop_type: CropType class member
|
|
1226
|
+
|
|
1227
|
+
Returns:
|
|
1228
|
+
(-) nitrogen fixation fraction (between 0 and 1)
|
|
1229
|
+
|
|
1230
|
+
Holos source code:
|
|
1231
|
+
https://github.com/holos-aafc/Holos/blob/b183dab99d211158d1fed9da5370ce599ac7c914/H.Core/Providers/Nitrogen/NitogenFixationProvider.cs#L60
|
|
1232
|
+
"""
|
|
1233
|
+
return 0.7 if crop_type.is_pulse_crop() else 0
|