Skip to content

Commit

Permalink
CropOM story to production (#2724)
Browse files Browse the repository at this point in the history
* changes to how raster data is fetched

* fix: adjust size and bbox

* fix: flip data vertically

* chore: use two lines for readability

* fix: board aspect ratio by taking hexagon geometry into account

* fix: transparency

* fix: set hexagon scaling correction to 120%

* feat: start building new minesweeper modals and their stats

* refactor: use new minesweeper modal component to reduce bloating of map component

* feat: enable setting flags on cells using right-click

* chore: add reveal-all method and fix linter errors

* chore: add game modes, modify text and run linter auto-fix

* feat: centralize board and rendering states in new `Minesweeper` class for consistency

* chore: update to new minesweeper class, add reveal button and fix linter errors

* feat: implement simple game flow event handlers

* feat: push current half-working state

* chore: disable minesweeper query parameter

* fix: remove second query param check

* fix: broken game over modal and remove v-model prop warning

* feat: add mine counter

* fix: make sure modal actually shows

* feat: implement working stats for gameover state

* feat: add win mode and pass in elapsed seconds as a prop

* feat: add game flow methods

* feat: complete game flow event handling, implement timer

* fix: re-add lost revealAllTiles method and remove console bloat

* fix: update winning text

* fix: linter errors and remove duplicate reveal function

* fix: include flags in completion indicator

* fix: mine flags

* feat: enable copying stats if the user has won the game

* chore: integrate IND2 as cog rendering

* feat: also provide stats copy-button when the game is lost

* chore: various changes and lint

* feat: work with multiple locations, for now static

* fix: game size better computed now

* fix: manually compute window because bbox is buggy

* feat: various fixes
- fix game flow when flagging
- setup teardown and layer cleanup
- remove dependency on ol-games
- zoom to selected location
- setup cog extent to location only
- cleanup unused methods

* feat: adding Locations change functionality

* chore: update package-lock

* fix: refactor event handling on map click
so they are actually removable due to usage of bind

* feat: integrate osmtogeojson

* chore: visualize HOPI

* fix: update power inframap sprite url

* fix: filters for indicator 1

* chore: dissolve layers ind1 and ind4 as overlays

* feat: implement CustomAlert on timeout 15s

* chore: redo legendUrl and update LayerControl

* fix: previous commit

* fix: minor bugfix

* feat: implement various enhancements for I4

* fix: display features.legendUrl for I4

* chore: refactor overpass api fetch

* chore: minor updates

* feat: implement custom features parameters

* fix: dissolved wildlife layer nodata transparent

client-side fix for areas where all bands ==0

* chore: create configs for auxiliary data for ideas_i4 (#2496)

* chore: create configs for auxiliary data

* chore: add GHS built up area 2020

* add two other builtup area layers

* chore: add two osm tags and update color mapping

* chore: add 'content' tag to OSM allowed props

* chore: add legend to GHSPopulation

* feat: implement world bounds from which smaller bboxes can be chosen randomly

* feat: implement randomization algorithm

* chore: update formatting of worldBounds

* feat: add a prng so that we can have repeatable bbox generations

* doc: update jsdoc of `cyrb128` function

* chore: add config for indicator3
currently without overpass api integration
because the resulting vectorlayer configured via .features for some reason does not work with Geotiff layer together

* fix: a lot of linter errors

* chore: features config working together with cog source

* chore: remove worldBounds and add configurable horizontal extents for each minesweep location

* feat: use new randomizer to set the bounding box

* fix: linter error by actually exporting new randomizer fn

* update of IND1_1

* Update IND2_1

* add IND3_1

* feat: pass randomly generated bounding box into minesweeper code

* fix: shrink all of the horizontal extents so they fit into the defined world boxes

* chore: update ideas i3 aux data

* feat: use the new crop bbox also as a constraint for the hex board itself

* feat: integrate new ind1 data

* feat: add data for wildlife plant and animal species

* chore: rename species index

* feat: show discovered species in dialog and copy text

* feat: add logic to extrapolate present species for a given minesweeper bbox

* chore: only display common name if it is not unknown, put in parens if there

* fix: linting

* fix: shorten lines

* chore: make species list reusable

* chore: make species list completely modular

* chore: revert to pevious `winMinesweep` method since the species code now runs in dedicated component

* fix: enable drawing buttons for `IND2_1`

* feat: add species enumeration for selected areas

* fix: comparison of webgl layers
according to Viglino/ol-ext#1054

* chore: move index json to bucket

* chore: update  config to use EU-wide dataset

* fix: comparison of webgl layer works now

* chore: minor fix

* chore: lint

* feat: aggregrate species with same index to prevent multiples and display a count

* chore: fix linter errors

* feat: enable species extraction also for lost games both in-dialog and in text

* refactor: remove old confusing minesweeper variable

* fix: move discovered species into DataPanel so they are visible without scrolling

* style: reduce spacing between species items

* feat: expose covered mine count as a getter and display remaining mines in minesweeper options

* Update IND3_1.md

* chore: add mine and flag counts, improve counting mechanism

* fix: implement counter properly so that it does not allow cheating

* chore: add `@turf/turf` and `@turf/intersect` dependencies for intersection detection

* chore: update dependencies

* chore: update package lock

* feat: define method for detecting intersections between europe geojson and sweeper bbox

* chore: regenerate seed and bounding box iteratively if no intersections are found

* chore: add geojson with countries that belong to wildlife dataset

* fix: linter errors

* chore: remove console logs

* chore: slightly refactor specieslist
adding watcher or prop to refresh on new area drawn

* fix: relative path for testing deployments

* chore: adjust the welcome message to give intro to game

* feat: configure new HULK endpoint

* chore: hide species info box in sidebar if minesweeper is configured

* chore: hide "reveal all" button behind debug flag as a query parameter

* chore: remove location dropdown for now

* chore: move "copy to clipboard" button to bottom of dialog

* chore: sort species by descending count and limit to 5 results

* fix: copy-to-clipboard species by moving species sorting into minesweeper dialog for consistency

* wip: change mine icon to a flower emoji and get started with revealing board when mine is clicked

* style: implement requested field colors

* feat: update minesweeper to use corine and esa landcover layers
remove original wildlife
lint

* chore: minor update of intro text

* chore: minor brush up on the initial popup in minesweeper
add opacity for layers

* fix: NaN poisoning and simplify color interpolation; reveal board when mine is clicked

* feat: enable easy restarting with a new-game button

* fix: change "new game" to "restart game" and make sure it always renders when appropriate

* fix: linter errors

* chore: zoom to location bbox

* update style

* fix: update ind4 image and show selected value in wmsVariables dropdown

* fix: broken NaN checker

* feat: integrate species images

* style: transform species name to uppercase

* feat: add new area statistics component

* chore: replace species index with S3 version

* fix: add missing s3 link

* minor update of text

* chore: add mock scenarios

* chore: adapt indicator 4

* fix: chart rendering

* feat: add question mark placeholders

* fix: switch descriptions of confidence and storm_surge

* update species index file

* chore: push latest state with styles

* fix: and simplify aggregation, add loading indicator

* fix: preselection

* feat: implement user hint

* fix: use narrower design on smaller screens

* feat: rework layout on smaller screens; adjust to new variable names from ideas_i4

* chore: fix linter errors

* chore: remove temp files

* chore: remove comment

* Update IND1_1.md

* feat: integrate minesweeper for ind2

* fix: unify bbox for minesweeps

* update version

* fix: minesweeper options reset instead of selectedLocationIndex

* fix: OSM features shown again
defaults seen in WMS options
minesweeper for houhpi filter 0s
note: never touch this code again

* chore: remove blue boxes in legend

* feat: rework state display, integrate promise handling

* fix: finally get aggregation working again; properly use pre-set variables

* fix: push working chart rendering with aggregation (almost done)

* feat: almost finalizing integration of statistics charts for indicator 4

* feat: implement species conservation status for minesweeper stats

* chore: add hint label

* chore: lint

* feat: change baselayer for HOUHPI  minesweeper to days exceeding who threshold

* fix: enableCustomAreaStatistics

* fix: reordering logic and map export state for custom area data (#2656)

* fix: adding ids to layers to make sure reordering in layercontrol works

* chore: linting

* fix: wrong layer order exported for analysis layers

* Adaptations of ideas deployment (#2659)

* fix: adaptations of ideas deployment
ref #2650

* update image icons for game indicators

* fix: double format caps/lowercase

* Merging of new vector filter capabilities (#2663)

* feat: added possibility to pass flat style style

* chore: added initial vector layer for sawmill data

* feat: implemented initial idea for vector tile feature filtering

* chore: cleanup of component, added category info to filter definition

* fix: made sure colormap is loaded in correct layer for forest disturbance

* chore: added truck supported roads network as layer to fcm2, added sawmill capabilities also to fcm3

* chore: removed adress from tooltip

* Stories july (#2653)

4 new stories added

* first set of updates for ideas indicators

* fix: several ideas fixes

* chore: bump package versions

intentionally not bumping stacinfo to 0.4.0 because even when adhering to breaking changes, it does not show here

* feat: add automatic opening of analysis panel

* merge staging into ideas_i4

* fix: cleanupand merge conflict resolution

* fix: multiple fixes

* fix: styling and display fixes after merge

* feat: remote GTIF brand check from DataPanel
!potentially regression causing change

* fix: minor config fixes

* fix: review ideas merge into staging

* fix: syntax

* chore: lint

* fix: styling issues, separate into catalogs

* fix: regression

* Update eodashMarkdown_EXTREME_SST.md

* fix: href links to images, remove ?catalog queru from dashboard link

* Update eodashMarkdown_EXTREME__TEMPERATURES_2.md (#2675)

* Update eodashMarkdown_EXTREME__TEMPERATURES_2.md

* Update stories.json

* update wind layer to a global one

* update storytelling to 1.1.0

* fix: override SLSTR1 dateformat function

* feat: add ideas 5 indicator

* fix: legend

* fix: format for SLSTR1

* chore: minor update of step for ind5

* fix: WSF

* Final story review (#2679)

* Update eodashMarkdown_EXTREME_SST.md

* Update eodashMarkdown_EXTREME_SST.md

added link between Ocean content and Marine Heat wave

* Update eodashMarkdown_EXTREME_SST.md

link between ocean content and marine heat waves

* Update eodashMarkdown_EXTREME_SST.md

* Add files via upload

* Update eodashMarkdown_EXTREME__TEMPERATURES_2.md

Change name of the story

* Update eodashMarkdown_EXTREME_SST.md

* Update eodashMarkdown_EXTREME_POLLUTION_2.md

* Update eodashMarkdown_HUNGA_ERUPTION_2.md

* Update eodashMarkdown_EXTREME__TEMPERATURES_2.md

* Update about.md

* Update about.md

* Update about.md

* chore: update s3 date in story

---------

Co-authored-by: Anca Anghelea <[email protected]>
Co-authored-by: santilland <[email protected]>

* chore: fixed map config issues in story

* Update stories.json (#2686)

updated titles to official stories on main page

* chore: updated game dialog text (#2705)

* Update eodashMarkdown_HUNGA_ERUPTION_2.md (#2702)

* Update eodashMarkdown_HUNGA_ERUPTION_2.md

* Update eodashMarkdown_EXTREME_POLLUTION_2.md

updates based on review of authors

* Update eodashMarkdown_EXTREME_POLLUTION_2.md

* Update eodashMarkdown_EXTREME_POLLUTION_2.md

* Update stories.json

Correct name of author of Extreme Pollution story

* Update eodashMarkdown_EXTREME_POLLUTION_2.md

More updates to the story - inclusion of an animation requested by the authors.

* Update eodashMarkdown_HUNGA_ERUPTION_2.md

Updated with ALOS-PALSAR2 images where you can actually see the disappearance of the the island - as requested by the authros.

* Update eodashMarkdown_EXTREME_POLLUTION_2.md

Add video animation as requested by the authors.

* Update eodashMarkdown_EXTREME_POLLUTION_2.md

Removing placeholder map

* Update eodashMarkdown_EXTREME_POLLUTION_2.md (#2718)

* Update eodashMarkdown_EXTREME_POLLUTION_2.md

correct links to winds and CO animations

* Update eodashMarkdown_EXTREME_POLLUTION_2.md

using raw links to datasets

---------

Co-authored-by: Daniel Santillan <[email protected]>

* Feat: Implementation of COG source change and minor style fix (#2721)

* feat: implemented change of cog source based on time information

* fix: spinner style

* fix: made sure only create map export string if dialog is open, should help with performance; fix: made sure style is exported correctly (#2722)

* Create CropOM.md (#2720)

* Create CropOM.md

* chore: updated story and added it to the race config; fix: issue with theme definition for story

* chore: added story to carousel config

* chore: updating story link in carousel

* chore: fixed linter error

---------

Co-authored-by: Daniel Santillan <[email protected]>

* Updated game description for IDEAS integration (#2713)

* chore: updated game info and layer name for indicator

* chore: updated time property

* fix: added custom projection registration for storytelling maps

* chore: added image links to story

---------

Co-authored-by: Lubomir Dolezal <[email protected]>
Co-authored-by: Moritz Riede <[email protected]>
Co-authored-by: Lubomír Doležal <[email protected]>
Co-authored-by: UndeadFairy <[email protected]>
Co-authored-by: Moritz Riede <[email protected]>
Co-authored-by: Anca Anghelea <[email protected]>
Co-authored-by: AparicioSF <[email protected]>
  • Loading branch information
8 people authored Dec 23, 2024
1 parent 22467c5 commit 546399d
Show file tree
Hide file tree
Showing 7 changed files with 128 additions and 24 deletions.
90 changes: 90 additions & 0 deletions app/public/data/storytelling-md/RACE/CropOM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@

##

County-level crop yield averages are among the most widely used agricultural indicators, as they are highly valuable to various economic sectors and government institutions. Crop yield data is a crucial input for shaping policies that ensure food security, inform structural economic decisions, and guide market evaluations. Statistical agencies typically release this data at the end of the growing season, after collecting actual figures from producers. While these statistics are vital for assessing the performance of a country's agricultural sector, they reflect only past outcomes.

However, during the growing season, estimates or forecasts of crop yields at the county or regional level can provide highly useful insights. Access to expected yield data by crop type supports better planning, strategy development, and pricing strategies for businesses, while offering real-time input for policymakers and decision-makers.

To generate yield forecasts at a national level during the growing season, CropOM leverages Copernicus data provided by the European Space Agency (ESA), along with meteorological and soil datasets, as part of the [Danube Information Factory](https://www.ddc.cropom.com). Using these data sources and advanced information technology, [CropOM](https://cropom.com)’s CropModel API delivers regional yield predictions for commodity crops under various scenarios.

<center>
<img src=https://www.ddc.cropom.com/assets/DDC__MAIN-DMAXp7Jk.svg height="300">

Danube Data Cube is a cloud-based platform that integrates data, decisions, and actions. Source: [https://www.ddc.cropom.com](https://www.ddc.cropom.com)
</center>

A demonstration of CropOM's service capabilities is currently featured on the [RACE Dashboard](https://race.esa.int/) to highlight the importance of Copernicus data in monitoring commodity crops. On RACE, we showcase the types of information the service provides and its analytical capabilities at the country, county, and sub-county levels. The complete service is accessible through the ESA [Network of Resources](https://portfolio.nor-discover.org/?textSearch=cropom&filterServiceType=Any&filterSource=Any&filterGeographicalCoverage=Any&filterTemporalPeriodStart=&filterTemporalPeriodEnd=).

The map below illustrates the crop yield indicator for maize, under average scenario conditions. Other crops including soybean, sunflower and wheat, as well as two additional scenarios (best and worst) are [available on the RACE Dashboard](https://race.esa.int/?indicator=CROPOMHU1&x=2193607.25256&y=5996965.74672&z=7.4418).


## Crop Yield <!--{as="eox-map" style="width: 100%; height: 500px;" layers='[{"type":"Tile","properties":{"id":"Overlay labels"},"source":{"type":"XYZ","urls":["//s2maps-tiles.eu/wmts/1.0.0/overlay_base_bright_3857/default/g/{z}/{y}/{x}.jpg"]}},{"type":"Vector","properties":{"id":"Hungary yield"},"style":{"jsonform":{"type":"object","title":"Data configuration","properties":{"crop":{"title":"Crop","type":"string","enum":["Maize","Soybean","Sunflower","Wheat"],"default":"Maize"},"vstat":{"title":"Statistical value","type":"string","enum":["average","best","worst"],"default":"average"},"vminmax":{"title":"Dynamic range","description":"Yield [t/ha]","type":"object","properties":{"vmin":{"type":"number","minimum":0,"maximum":50,"format":"range","default":2},"vmax":{"type":"number","minimum":0,"maximum":50,"format":"range","default":20}},"format":"minmax"}}},"variables":{"crop":"Maize","vstat":"average","vmin":2,"vmax":7.7},"fill-color":["case",["==",["get","yield","Maize","average"],"N/A"],[253,231,37,0.25],["interpolate",["linear"],["/",["-",["get","yield","Maize","average"],2],7.7],0,[68,1,84,1],0.06666666666666667,[70,23,103,1],0.13333333333333333,[71,44,122,1],0.2,[65,63,131,1],0.26666666666666666,[59,81,139,1],0.3333333333333333,[52,97,141,1],0.4,[44,113,142,1],0.4666666666666667,[39,129,142,1],0.5333333333333333,[33,144,141,1],0.6,[39,173,129,1],0.6666666666666666,[66,187,114,1],0.7333333333333333,[92,200,99,1],0.8,[131,210,75,1],0.8666666666666667,[170,220,50,1],0.9333333333333333,[212,226,44,1],1,[253,231,37,1]]],"stroke-color":"black","stroke-width":1,"layerId":"crop_forecast_hu"},"source":{"type":"Vector","url":"https://api.cropom-dev.com/crop_model/regional_forecast?country_code=HU","format":{"type":"GeoJSON","dataProjection":"EPSG:3035"}}},{"type":"Tile","properties":{"id":"Terrain light"},"source":{"type":"XYZ","urls":["//s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpg"]}}]' zoom="6.69708496650794" center=[19.7,46.75390620626126] }-->

<center>
<img src="https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/crop_forecast_CropOM/cm_legend.png" height="50">
</center>

##

To mitigate the risks posed by climate impacts and droughts, irrigation systems are being developed and implemented on an increasingly widespread scale across Europe. However, these systems can only deliver the promised improvements in crop yield and stability if they have sufficient water supply. The term "sufficient water" is relative, as different crops have varying water requirements for optimal growth. Therefore, understanding crop-specific water demand at a regional level is crucial for planning the development of irrigation systems. This information is equally critical for daily decision-making during droughts, where the allocation of limited water resources must be carefully managed.

Similar to its regional yield forecasting capabilities, CropOM’s Crop Model API provides crop-specific water demand estimates. These estimates indicate the amount of irrigation water needed to achieve maximum potential yield in a region under various climatic scenarios.

## Water Demand <!--{ as="eox-map" mode="tour" }-->

### <!--{ layers='[{"type":"Tile","properties":{"id":"Overlay labels"},"source":{"type":"XYZ","urls":["//s2maps-tiles.eu/wmts/1.0.0/overlay_base_bright_3857/default/g/{z}/{y}/{x}.jpg"]}},{"type":"Vector","properties":{"id":"Hungary water demand"},"style":{"jsonform":{"type":"object","title":"Data configuration","properties":{"crop":{"title":"Crop","type":"string","enum":["Maize","Soybean","Sunflower","Wheat"],"default":"Maize"},"vstat":{"title":"Statistical value","type":"string","enum":["average","best","worst"],"default":"average"},"vminmax":{"title":"Dynamic range","description":"Water need [mm]","type":"object","properties":{"vmin":{"type":"number","minimum":0,"maximum":800,"format":"range","default":0},"vmax":{"type":"number","minimum":0,"maximum":800,"format":"range","default":500}},"format":"minmax"}}},"variables":{"crop":"Maize","vstat":"average","vmin":179.82,"vmax":263.69},"fill-color":["case",["==",["get","water_need","Maize","average"],"N/A"],[253,231,37,0.25],["interpolate",["linear"],["/",["-",["get","water_need","Maize","average"],179.82],263.69],0,[68,1,84,1],0.06666666666666667,[70,23,103,1],0.13333333333333333,[71,44,122,1],0.2,[65,63,131,1],0.26666666666666666,[59,81,139,1],0.3333333333333333,[52,97,141,1],0.4,[44,113,142,1],0.4666666666666667,[39,129,142,1],0.5333333333333333,[33,144,141,1],0.6,[39,173,129,1],0.6666666666666666,[66,187,114,1],0.7333333333333333,[92,200,99,1],0.8,[131,210,75,1],0.8666666666666667,[170,220,50,1],0.9333333333333333,[212,226,44,1],1,[253,231,37,1]]],"stroke-color":"black","stroke-width":1,"layerId":"crop_forecast_hu_water"},"source":{"type":"Vector","url":"https://api.cropom-dev.com/crop_model/regional_forecast?country_code=HU","format":{"type":"GeoJSON","dataProjection":"EPSG:3035"}}},{"type":"Tile","properties":{"id":"Terrain light"},"source":{"type":"XYZ","urls":["//s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpg"]}}]' zoom="6.69708496650794" center=[19.7,46.75390620626126] animationOptions={duration:500}}-->
#### County Level Forecast
Managing irrigation water to ensure that all food producers have adequate supply for successful operations is primarily a regional responsibility rather than a statewide endeavor. To support regional water management authorities—who have the legal authority and physical access to irrigation channel systems—detailed and precise mapping is essential.

By visualizing the water needs of sub-county regions and highlighting areas where demand is highest, such maps aid decision-making when timely action is critical. Updating these maps daily transforms them into an effective monitoring system, providing decision-makers with real-time information on the water demand of major crop types at the sub-county level.


<center>
<img src="https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/crop_forecast_CropOM/cm_legend.png" height="50"/>

Map Legend
</center>
<center>
<img src="https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/stories/RACE/county-water-demand.png"/>
</center>

### <!--{ layers='[{"type":"Tile","properties":{"id":"Overlay labels"},"source":{"type":"XYZ","urls":["//s2maps-tiles.eu/wmts/1.0.0/overlay_base_bright_3857/default/g/{z}/{y}/{x}.jpg"]}},{"type":"Vector","properties":{"id":"Hungary Békés subcounty yield"},"style":{"jsonform":{"type":"object","title":"Data configuration","properties":{"crop":{"title":"Crop","type":"string","enum":["Maize","Soybean","Sunflower","Wheat"],"default":"Maize"},"vstat":{"title":"Statistical value","type":"string","enum":["average","best","worst"],"default":"average"},"vminmax":{"title":"Dynamic range","description":"Yield [t/ha]","type":"object","properties":{"vmin":{"type":"number","minimum":0,"maximum":50,"format":"range","default":2},"vmax":{"type":"number","minimum":0,"maximum":50,"format":"range","default":20}},"format":"minmax"}}},"variables":{"crop":"Maize","vstat":"average","vmin":1.24,"vmax":3.82},"fill-color":["case",["==",["get","yield","Maize","average"],"N/A"],[253,231,37,0.25],["interpolate",["linear"],["/",["-",["get","yield","Maize","average"],1.24],3.82],0,[68,1,84,1],0.06666666666666667,[70,23,103,1],0.13333333333333333,[71,44,122,1],0.2,[65,63,131,1],0.26666666666666666,[59,81,139,1],0.3333333333333333,[52,97,141,1],0.4,[44,113,142,1],0.4666666666666667,[39,129,142,1],0.5333333333333333,[33,144,141,1],0.6,[39,173,129,1],0.6666666666666666,[66,187,114,1],0.7333333333333333,[92,200,99,1],0.8,[131,210,75,1],0.8666666666666667,[170,220,50,1],0.9333333333333333,[212,226,44,1],1,[253,231,37,1]]],"stroke-color":"black","stroke-width":1,"layerId":"crop_forecast_hu_bekes"},"source":{"type":"Vector","url":"https://api.cropom-dev.com/crop_model/regional_forecast?region_code=HU332","format":{"type":"GeoJSON","dataProjection":"EPSG:3035"}}},{"type":"Tile","properties":{"id":"Terrain light"},"source":{"type":"XYZ","urls":["//s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpg"]}}]' zoom="9.049803408653483" center=[21.049999999999997,46.71545914037338] animationOptions={duration:500}}-->
#### Sub-county Level Forecasting
Yield forecasts are also provided for the same sub-county regions.

<center>
<img src="https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/crop_forecast_CropOM/cm_legend.png" height="50">

Map Legend
</center>
<center>
<img src="https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/stories/RACE/subcounty-water-demand.png"/>
</center>

### <!--{ layers='[{"type":"Tile","properties":{"id":"Overlay labels"},"source":{"type":"XYZ","urls":["//s2maps-tiles.eu/wmts/1.0.0/overlay_base_bright_3857/default/g/{z}/{y}/{x}.jpg"]}},{"type":"Vector","properties":{"id":"Hungary Mezőhegyes microregion water demand"},"style":{"jsonform":{"type":"object","title":"Data configuration","properties":{"crop":{"title":"Crop","type":"string","enum":["Maize","Soybean","Sunflower","Wheat"],"default":"Maize"},"vstat":{"title":"Statistical value","type":"string","enum":["average","best","worst"],"default":"average"},"vminmax":{"title":"Dynamic range","description":"Water need [mm]","type":"object","properties":{"vmin":{"type":"number","minimum":0,"maximum":800,"format":"range","default":0},"vmax":{"type":"number","minimum":0,"maximum":800,"format":"range","default":500}},"format":"minmax"}}},"variables":{"crop":"Maize","vstat":"average","vmin":227.74,"vmax":251.71},"fill-color":["case",["==",["get","water_need","Maize","average"],"N/A"],[253,231,37,0.25],["interpolate",["linear"],["/",["-",["get","water_need","Maize","average"],227.74],251.71],0,[68,1,84,1],0.06666666666666667,[70,23,103,1],0.13333333333333333,[71,44,122,1],0.2,[65,63,131,1],0.26666666666666666,[59,81,139,1],0.3333333333333333,[52,97,141,1],0.4,[44,113,142,1],0.4666666666666667,[39,129,142,1],0.5333333333333333,[33,144,141,1],0.6,[39,173,129,1],0.6666666666666666,[66,187,114,1],0.7333333333333333,[92,200,99,1],0.8,[131,210,75,1],0.8666666666666667,[170,220,50,1],0.9333333333333333,[212,226,44,1],1,[253,231,37,1]]],"stroke-color":"black","stroke-width":1,"layerId":"crop_forecast_hu_mezohegyes_water"},"source":{"type":"Vector","url":"https://api.cropom-dev.com/crop_model/regional_forecast?region_code=HU3321","format":{"type":"GeoJSON","dataProjection":"EPSG:3035"}}},{"type":"Tile","properties":{"id":"Terrain light"},"source":{"type":"XYZ","urls":["//s2maps-tiles.eu/wmts/1.0.0/terrain-light_3857/default/g/{z}/{y}/{x}.jpg"]}}]' zoom="10.473578924860789" center=[20.97,46.38803298583869] animationOptions={duration:500}}-->
#### Micro-region level
Moving further down the scale to microregions, which is essentially the level of municipalities, the information can support the operation of companies, and local communities, providing information on the water demand of agriculture for every actor to facilitate informed discussion on water use.
<center>
<img src="https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/crop_forecast_CropOM/cm_legend.png" height="50">

Map Legend
</center>

## CropOM Model API Service

These indicators are provided as a service by [CropOM](https://cropom.com) - a technology company (SME) that develops data integration platform services and integrated software for agriculture, insurance, and education.

The data presented on this dashboard is a demonstration of the “Crop Model API” service over selected countries and regions.

To discover the full service and explore the full offering including field level forecasts, please visit ESA’s [Network of Resources](https://portfolio.nor-discover.org/?textSearch=cropom&filterServiceType=Any&filterSource=Any&filterGeographicalCoverage=Any&filterTemporalPeriodStart=&filterTemporalPeriodEnd=).

The DDC (Dynamic Data Cube) Crop Model API is a web-based implementation of the state-of-the-art crop modelling algorithm, [AquaCrop](https://www.fao.org/aquacrop/en/), created by FAO. Crop Model API model measures the actual crop development instead of purely modelling it. Combining crop development time series, high-precision meteorological data, and soil conditions from DDC with the modelling processes of AquaCrop results in a precise crop model specific to a location.

The API takes location, crop type, crop variety, sowing date, and irrigation water application data as user inputs, HR-VPP data from [Copernicus Land Services](https://land.copernicus.eu/en), Meteorological and Soil data from DDC data sources, and retrieves daily crop development (phenology), biomass, water need, and predicted yield data.

## References

* Cover image credits: Wikimedia Commons. LICENCE
[ESA Standard Licence](https://www.esa.int/ESA_Multimedia/Terms_and_conditions_of_use_of_images_and_videos_available_on_the_esa_website) and Additional permission may be required (contact [email protected] for further information)
* [CropOM Crop Model API](https://cropom.com)
* [Danube Information Factory](https://www.ddc.cropom.com)
4 changes: 4 additions & 0 deletions app/src/appConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ module.exports = [
tutorialText: '/eodash-data/general/tutorials',
showNewsCarousel: true,
newsCarouselitems: [
{
href: './story?id=yield-forecast-crop-water-demand',
src: 'https://raw.githubusercontent.com/eurodatacube/eodash-assets/refs/heads/main/stories/RACE/cropom_preview.png',
},
{
poi: 'ES4-E1b',
src: './eodash-data/general/cimbelli.png',
Expand Down
29 changes: 8 additions & 21 deletions app/src/components/Modal/MinesweeperDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,14 @@
</p>
<p>
<b>Quick overview:</b><br/>
Identify and flag <b>(right-click)</b> areas with very high
<b><span v-if="indicatorObject.indicator === 'IND1_1_minesweeper'">
health risks
</span>
<span v-else-if="indicatorObject.indicator === 'IND2_1_minesweeper'">
biodiversity
</span>
</b> using Earth Observation data.
</p>
<p>
Use visible layers to guide your exploration and uncover new tiles (<b>left-click</b>).
</p>
<p>Your <b>score</b> is based on the percentage of uncovered area at the end of the game.
</p>
<p v-if="indicatorObject.indicator === 'IND2_1_minesweeper'">
After you finish the game, a summary of significant
wildlife species which live there is shown.
</p>
<p>
A new location is <b>available daily</b> — come back tomorrow to explore more!
</p>
<ul>
<li>The goal of the game is to <b>UNCOVER (left-click)</b> most tiles possible that do not have a 'mine', or in other words, tiles corresponding to areas with high <span v-if="indicatorObject.indicator === 'IND1_1_minesweeper'">health risks</span><span v-else-if="indicatorObject.indicator === 'IND2_1_minesweeper'">biodiversity</span>. Your <b>score</b> is based on <b>the percentage of uncovered area and time spent</b> at the end of the game.</li>
<li>You can <b>FLAG (right-click)</b> the tiles with 'mines' (i.e. areas with very high health risk) to indicate they have a 'mine'.</li>
<li><b>Hint:</b> Use visible layers to guide your exploration and uncover new tiles (left-click).</li>
</ul>
<p>
A new location is available <b>daily</b> — come back tomorrow to explore more!
</p>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
Expand Down
3 changes: 2 additions & 1 deletion app/src/config/ideas_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,7 @@ const IDEASConfigs = [
{ url: 'https://eox-ideas.s3.eu-central-1.amazonaws.com/indicator2/AR3_wildlife.tif' },
],
legendUrl: 'https://raw.githubusercontent.com/eurodatacube/eodash-assets/main/collections/IDEAS2_wildlife/cm_legend.png',
name: 'Indicator 2: Wildlife',
name: 'Wildlife Biodiversity Indicator',
customAreaFeatures: true,
overlayLayers: [{
// dissolved individual bands as layers
Expand Down Expand Up @@ -704,6 +704,7 @@ const IDEASConfigs = [
properties: {
indicatorObject: {
indicator: 'IND1_1_minesweeper',
time: [''],
display: [{
minesweeperOptions: {
// Board dimensions in number of hex cells
Expand Down
10 changes: 9 additions & 1 deletion app/src/config/stories.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,15 @@
"esa": {
"agriculture": {},
"water": {},
"land": {},
"land": {
"yield-forecast-crop-water-demand": {
"storyMarkdown": "./data/storytelling-md/RACE/CropOM.md",
"title": "Regional yield forecast and crop water demand",
"subtitle": "Forecasts for commodity crops with CropOM's CropModel API",
"image": "https://www.esa.int/var/esa/storage/images/esa_multimedia/images/2018/09/watering_crops/17679972-1-eng-GB/Watering_crops_pillars.jpg",
"imagePlaceholder": "https://www.esa.int/var/esa/storage/images/esa_multimedia/images/2018/09/watering_crops/17679972-1-eng-GB/Watering_crops_pillars.jpg"
}
},
"health": {},
"air": {},
"economy": {}
Expand Down
Loading

0 comments on commit 546399d

Please sign in to comment.