Il s'agit d'une prévision thermique expérimentale du maïs pour 2024, évaluée hors échantillon, et non d'un conseil agronomique. Le tableau de bord demande quand les stades d'un État franchiraient 50 % si le développement suivait la chaleur accumulée sur une maille CFS.
Le tableau de bord utilise CFS FLXF de NOAA, dont les sorties toutes les six heures s'étendent jusqu'à environ 215 jours, avec un modèle modifié de Growing Degree Days (GDD) calibré et évalué à partir des rapports USDA sur l'avancement des cultures. Cette approche produit une prévision thermique à l'échelle de la saison dont les hypothèses et les seuils restent vérifiables.
Le cas est figé au 1er juillet 2024 à 00 UTC. Il raccorde avant cette date l'historique CFS à échéance exacte de six heures à un seul cycle archivé après celle-ci. L'historique reste une prévision de modèle, pas une observation, et aucun cycle ultérieur n'est ajouté.
CFS étant grossier, chaque série emploie une coordonnée native de la grille gaussienne, et non une ville ou une moyenne d'État :
| État | Latitude | Longitude |
|---|---|---|
| Iowa | 42.047066 | -93.750371 |
| Nebraska | 41.102190 | -99.375363 |
| Kansas | 38.267561 | -100.312862 |
| Indiana | 40.157314 | -86.250381 |
| Missouri | 39.212437 | -92.812872 |
| Ohio | 40.157314 | -82.500386 |
| North Dakota | 46.771444 | -98.437864 |
À chaque intervalle, TMAX et TMIN sont converties en Fahrenheit, bornées à 50–86 °F, moyennées, puis la base de 50 °F est soustraite et le résultat multiplié par un quart de jour :
Tmax_F = (TMAX_K - 273.15) × 9 / 5 + 32
Tmin_F = (TMIN_K - 273.15) × 9 / 5 + 32
GDD50_6h = (
(clamp(Tmax_F, 50, 86) + clamp(Tmin_F, 50, 86)) / 2 - 50
) × 6 / 24
La base de 50 °F et le plafond de 86 °F suivent la méthode modifiée d'Iowa State University Extension. L'appliquer à chaque intervalle n'est pas identique à calculer d'abord des extrêmes journaliers ; les seuils sont donc calibrés dans la même métrique sur six heures.
Les cibles viennent de USDA NASS Crop Progress and Condition. Nous interpolons linéairement l'instant où le pourcentage hebdomadaire de l'État franchit 50 %. Le semis à 50 % démarre l'accumulation ; levée, sortie des soies, grain pâteux, denté et maturité sont les cibles.
Pour chaque État, année et stade, le seuil implicite est le GDD accumulé entre les deux dates. Afin que 2024 ne serve pas à son propre calibrage, les constantes du tableau de bord sont les médianes de 2020–2023. C'est un petit calibrage historique, pas un apprentissage automatique :
| État | Levée | Sortie des soies | Grain pâteux | Denté | Maturité |
|---|---|---|---|---|---|
| Iowa | 113.475 | 1332.409 | 1739.139 | 2163.247 | 2563.627 |
| Nebraska | 142.086 | 1388.037 | 1898.494 | 2357.720 | 2892.070 |
| Kansas | 166.002 | 1557.522 | 2111.445 | 2664.386 | 3290.921 |
| Indiana | 115.466 | 1275.090 | 1766.812 | 2228.159 | 2632.039 |
| Missouri | 72.729 | 1389.516 | 1874.276 | 2365.314 | 2910.735 |
| Ohio | 127.756 | 1277.139 | 1677.836 | 2173.649 | 2538.914 |
| North Dakota | 177.123 | 1116.568 | 1623.371 | 1963.759 | 2248.754 |
Les écarts entre États sont intentionnels : un seuil national unique fonctionnait mal. Ces constantes absorbent les variétés, maturités relatives, calendriers de semis et l'écart entre une maille et un État.
Nous avons répété l'ajustement en validation leave-one-year-out sur 2020–2024. Pour le même raccord historique-prévision du 1er juillet, les résultats hors échantillon sont :
| Stade | Prévus / éligibles | Couverture | Biais | Erreur absolue moyenne | Erreur absolue médiane |
|---|---|---|---|---|---|
| Sortie des soies | 35 / 35 | 100% | -0.9 jours | 2.5 jours | 1.7 jours |
| Grain pâteux | 35 / 35 | 100% | -0.9 jours | 3.3 jours | 1.9 jours |
| Denté | 34 / 35 | 97% | +0.8 jours | 4.7 jours | 3.6 jours |
| Maturité | 32 / 35 | 91% | +2.9 jours | 6.5 jours | 4.2 jours |
La couverture est la part des saisons éligibles qui atteignent le stade avant la fin de la prévision. Le biais vaut date prévue moins date USDA. Ces résultats rendent plausible, pour la démo, une estimation de maturité à environ une semaine en juillet ; ils ne garantissent ni une parcelle particulière ni la prochaine prévision.
Le tableau de bord regroupe sept coordonnées ; ces deux requêtes minimales pour l'Iowa montrent le calcul complet. Grafana concatène les contributions, retire le GDD antérieur au semis et calcule la somme cumulée.
curl -X POST 'https://gribstream.com/api/v2/cfsflxf/timeseries' \
-H "Content-Type: application/json" \
-H "Accept: text/csv" \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2024-04-15T06:00:00Z",
"untilTime": "2024-07-01T06:00:00Z",
"asOf": "2024-11-02T00:00:00Z",
"minLeadTime": "6h",
"maxLeadTime": "6h",
"coordinates": [
{"name": "Iowa", "lat": 42.047066, "lon": -93.750371}
],
"variables": [
{"name": "TMAX", "level": "2 m above ground", "info": "", "alias": "temperature_max_k", "hidden": true},
{"name": "TMIN", "level": "2 m above ground", "info": "", "alias": "temperature_min_k", "hidden": true}
],
"expressions": [
{"expression": "(temperature_max_k - 273.15) * 9 / 5 + 32", "alias": "temperature_max_f"},
{"expression": "(temperature_min_k - 273.15) * 9 / 5 + 32", "alias": "temperature_min_f"},
{"expression": "((func.Min(86.0, func.Max(50.0, temperature_max_f)) + func.Min(86.0, func.Max(50.0, temperature_min_f))) / 2 - 50.0) * 0.25", "alias": "gdd50_f_degree_days_6h"}
]
}'
curl -X POST 'https://gribstream.com/api/v2/cfsflxf/runs' \
-H "Content-Type: application/json" \
-H "Accept: text/csv" \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"forecastedFrom": "2024-07-01T00:00:00Z",
"forecastedUntil": "2024-07-01T00:00:00Z",
"minLeadTime": "6h",
"maxLeadTime": "2952h",
"coordinates": [
{"name": "Iowa", "lat": 42.047066, "lon": -93.750371}
],
"variables": [
{"name": "TMAX", "level": "2 m above ground", "info": "", "alias": "temperature_max_k", "hidden": true},
{"name": "TMIN", "level": "2 m above ground", "info": "", "alias": "temperature_min_k", "hidden": true}
],
"expressions": [
{"expression": "(temperature_max_k - 273.15) * 9 / 5 + 32", "alias": "temperature_max_f"},
{"expression": "(temperature_min_k - 273.15) * 9 / 5 + 32", "alias": "temperature_min_f"},
{"expression": "((func.Min(86.0, func.Max(50.0, temperature_max_f)) + func.Min(86.0, func.Max(50.0, temperature_min_f))) / 2 - 50.0) * 0.25", "alias": "gdd50_f_degree_days_6h"}
]
}'
Exemples de lignes au raccord historique-prévision :
forecasted_at,forecasted_time,lat,lon,name,member,gdd50_f_degree_days_6h,temperature_max_f,temperature_min_f
2024-06-30T18:00:00Z,2024-07-01T00:00:00Z,42.0471,-93.7504,Iowa,0,4.7475,70.2500,67.7300
2024-07-01T00:00:00Z,2024-07-01T06:00:00Z,42.0471,-93.7504,Iowa,0,3.3300,69.5300,57.1100
Sources primaires : documentation NOAA CFSv2 · modèle et inventaire CFS FLXF · méthodologie USDA NASS · archives officielles Crop Progress · méthode GDD d'Iowa State.