MRV Products#
MRV API is able to perform a variety of analyses. Here we give a list of the currently available capabilities / products in MRV API. Please contact Agreena Sales if you are missing some capability in this list.
Note
Each MRV product is independent and your client must be registered to use it before you start making requests for the product. Please check Client-Product Authorisation section to learn how you can activate different MRV capabilities into your client. Otherwise, if for example you trigger a request for a tillage verification and you have not activated that product, the API will return an error message:
{
"app_exception": "AuthorizationError",
"context": {
"message": "Client is not authorized to perform tillage."
}
}
All the result examples in this section are presented as they are returned by the Requests API endpoint
/v1/requests/<request_id>/results
. The response payload in that endpoint will always have this
common schema:
id
: The UUID of the Request that the Results belong to.status
: The current status of the Request. One ofPending
,Completed
orFailed
.start_date
: Starting date of the Request.end_date
: End date of the Request.fields
: An array of objects containing individual information of Fields affected by the Request, with the different capability Results.field_id
: UUID of the Field.tillage
: results of tillage analysis.deforestation
: results of deforestation analysis.cover_crop
: results of cover crop analysis.crop_type
: results of crop type analysis.soil_moisture
: results of soil moisture analysis.field_detection
: results of field boundary detection, GeoJSON representation of the calculated geographical boundary.
Field Boundary Detection#
Capability: boundary-detection
Unlike the rest of MRV products, this one is not triggered by sending a new request, but by creating new fields using one of the detection endpoints.
The results of a field boundary detection operation will be shown under the field_detection
key.
Results example#
{
"id": "0e220c79-61b9-4d86-b2ac-2e16e538382b",
"status": "Completed",
"start_date": "2023-10-05",
"end_date": "2023-10-05",
"fields": [
{
"field_id": "292218e4-a9c1-44cc-a527-6ad8141f5170",
"tillage": null,
"deforestation": null,
"cover_crop": null,
"crop_type": null,
"soil_moisture": null,
"field_detection": {
"boundary": {
"coordinates": [
[
[
10.28795574637229,
56.272752497952524
],
[
10.287563610014672,
56.271241967681306
],
[
10.289303715101397,
56.2706840089823
],
[
10.289916428159529,
56.27242590186694
],
[
10.28795574637229,
56.272752497952524
]
]
],
"type": "Polygon"
},
"area": 18.987264263434742,
"point": {
"type": "Point",
"coordinates": [
10.28881220272197,
56.27190730669585
]
},
"land_use": "Crops",
"country_code": "DNK",
"climate_zone": "cool_temperate_moist"
},
"soil_type": null,
"ndvi": null
}
]
}
Cover crops#
Capability: cover-crops
Performs Cover Crops detection over the given fields for a given time range.
The results of the operation will be shown in the cover_crop
section. It will consist of a key
has_cover_crop
which can have the value true
or false
depending on if cover crops
technique has been applied to the specific field or not.
Results example#
{
"id": "414b53ec-597a-4638-99c7-ccb2a2426720",
"status": "Completed",
"start_date": "2022-05-01",
"end_date": "2022-08-31",
"fields": [
{
"field_id": "1d4b272d-a744-43e6-88e6-babcf4c37bf6",
"tillage": null,
"deforestation": null,
"cover_crop": {
"cover_crops_results": {
"has_cover_crop": true
}
},
"crop_type": null,
"soil_moisture": null,
"field_detection": null,
"soil_type": null,
"ndvi": null
}
]
}
Tillage#
Capability: tillage
Runs an automated tillage verification over the given fields during the specified time range.
The results of the analysis will be shown in the tillage
section. They will consist of a simple
map with a single type
field and the value for the tillage verification, which can be one of:
conventional
: conventional tillage (< 15% crop residue cover).reduced
: minimum tillage (15-30% crop residue cover).no_till
: no tillage (> 30% crop residue cover).
Results example#
{
"id": "6454a659-48b6-4539-833b-a381bf364991",
"status": "Completed",
"start_date": "2022-05-01",
"end_date": "2022-08-31",
"fields": [
{
"field_id": "1d4b272d-a744-43e6-88e6-babcf4c37bf6",
"tillage": {"type": "conventional"},
"deforestation": null,
"cover_crop": null,
"crop_type": null,
"soil_moisture": null,
"field_detection": null,
"soil_type": null,
"ndvi": null
}
]
}
Crop Type Classification#
Capability: crop-type
Performs a crop type detection analysis over the given fields for the specified dates range.
The results of the crop type verification will be shown under the crop_type
section, consisting
of a simple map with a single name
key, where the value will be the name of the crop.
Results example#
{
"id": "54ccfd97-ddc6-4206-b8e7-f5551bf2ccf4",
"status": "Completed",
"start_date": "2022-01-01",
"end_date": "2022-03-01",
"fields": [
{
"field_id": "84ccfd97-ddc6-4206-b8e7-f5551bf2ccf4",
"tillage": null,
"deforestation": null,
"cover_crop": null,
"crop_type": {"name": "corn"},
"field_detection": null,
"ndvi": null
}
]
}
NDVI#
Capability: ndvi
Runs an NDVI analysis over the given fields for the given time ranges.
The results of the NDVI analysis will be shown under the ndvi
section. They will consist of a
monthly average calculation of the NDVI index for the requested months. E.g. if the user requests an
NDVI analysis for the time range starting on May 2022 and ending at 31st August 2022, the results
will contain the 4 months of May, June, July and August.
Results example#
{
"id": "c555dc13-04c9-4079-9c0a-ab0cc33eeb97",
"status": "Completed",
"start_date": "2022-05-01",
"end_date": "2022-08-31",
"fields": [
{
"field_id": "97dbcd97-b901-4f9b-b191-b818fc747d37",
"tillage": null,
"deforestation": null,
"cover_crop": null,
"crop_type": null,
"soil_moisture": null,
"field_detection": null,
"soil_type": null,
"ndvi": {
"monthly_average": {
"2022-05": null,
"2022-06": null,
"2022-07": null,
"2022-08": 0.37751325477152764
}
}
}
]
}
NDVI Imagery#
Capability: ndvi-imagery
Performs an NDVI analysis and generates resulting images that graphically shows the NDVI values over the selected area.
The GeoTIFF images and the derived JPEG images with the data graphs will all be stored in a GCS
bucket from where it can be downloaded. The response will show Google Bucket gs://
URLs that can
be used to access the images only by authorised Agreena staff, and also regular https://
signed URLs that can be used by anyone with the link to temporarily access the data.
Warning
The signed URL links will only be valid for 7 days starting on the image_date
time.
Results example#
{
"id": "27eab3df-86f8-4900-80cd-9178e8b2ae26",
"status": "Completed",
"start_date": "2021-01-01",
"end_date": "2021-04-30",
"fields": [
{
"field_id": "9d6765d0-c489-4d1a-8614-955abbe810ea",
"tillage": null,
"deforestation": null,
"cover_crop": null,
"crop_type": null,
"soil_moisture": null,
"field_detection": null,
"soil_type": null,
"ndvi": null,
"ndvi_imagery": {
"urls": {
"jpg_url": "gs://agreena-ndvi-imagery-staging/S2B_MSIL2A_20210109T112339_N0500_R037_T30UXC_20230610T130253_9d6765d0-c489-4d1a-8614-955abbe810ea.jpg",
"raster_url": "gs://agreena-ndvi-imagery-staging/S2B_MSIL2A_20210109T112339_N0500_R037_T30UXC_20230610T130253_9d6765d0-c489-4d1a-8614-955abbe810ea.tif",
"jpg_signed_url": "https://storage.googleapis.com/agreena-ndvi-imagery-staging/S2B_MSIL2A_20210109T112339_N0500_R037_T30UXC_20230610T130253_9d6765d0-c489-4d1a-8614-955abbe810ea.jpg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=mrv-airflow2-gsa%40hbt-staging.iam.gserviceaccount.com%2F20240620%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20240620T114302Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=70b7f6dc07030ead6f918a27c9fc04d6f550337704a5de1e04e19ff38b1c76f1b06f24ab110cccc7bae0aeaaaf78e08df0ef92a146748cd9251feabab15a0f5c7a4b0226ee387bc03a2d19675316aef542786bdf69642eea8df28fa31c9185f0e0db0c30304dacb269c360decc4c5091dfb56568d26aed0896b1b7250ec39f4a10ec293db4c28b78f722e440e5f3321512cb8eb01087db7a8e1da86f964acb5afe1386145adc1c17ff1baae844f2b3acd02e48115ce700a20d975a754c04cd1920ded1a0cfe50fd3212b9685718d8f0dde13a5dac314129fbd18583a53ba909624745511d029dc3b6ddc703ceeb99f1f28e8e00e796ea9c989323db6e353fcf2",
"raster_signed_url": "https://storage.googleapis.com/agreena-ndvi-imagery-staging/S2B_MSIL2A_20210109T112339_N0500_R037_T30UXC_20230610T130253_9d6765d0-c489-4d1a-8614-955abbe810ea.tif?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=mrv-airflow2-gsa%40hbt-staging.iam.gserviceaccount.com%2F20240620%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20240620T114302Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=29c2a37bd9920c60ef2136c39b9b1fa0d3bdb759ccf51bcdac2d448be63ee716568f9d473de35b667593aa88f8b0e5a5c11207b6a9ee3410f647580dcaca99f0c8c0495d76986ca8351aec8e92cb1bf1ac84660b3941e3e19209a5349ad277a3b3d82c4c14a259286186c62aad0b068e405057f6568895d30cd311a1e40cb9df8cbbd9664bbb11197fe89f83cde320f160b6cd50461df4f159b2628fdc0ab4cbf91716898aecb327d259307a12957038c1e9a85d66c2264fa64183ab67d46c8a3d3e78542213b4eff918bfccbeaff8abc9ef5b9a352de68a158a1c139e745a35117138f746fd688c255d9546347e2c11f4bb52adc6951aeeaa35dbc01c546536"
},
"image_date": "2021-01-09T11:26:44.040000Z"
}
}
]
}
Deforestation#
Capability: deforestation
Performs a deforestation analysis over the given fields for the specified dates range.
The results of this analysis will be shown under the deforestation
section. They will include a
detailed insight of data per year, as well as some aggregated data.
Results example#
{
"id": "421a5e69-4dce-49f3-b3ae-0dacc5643041",
"status": "Completed",
"start_date": "2001-05-01",
"end_date": "2022-10-01",
"fields": [
{
"field_id": "f9212642-f8ad-4593-9dbb-28782d5f82c0",
"tillage": null,
"deforestation": {
"overview": {
"clusters": 12,
"percent_deforested": 93.44262295081968,
"hectares": 3.111639344262295
},
"above_thresholds": {
"clusters": 2,
"percent_deforested": 44.26229508196721,
"hectares": 1.4739344262295082
},
"years": {
"2001": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2002": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2003": {
"cluster_size_ha": [
0.05459016393442623,
0.05459016393442623
],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0.10918032786885246,
"percent_deforested": 3.278688524590164
},
"2004": {
"cluster_size_ha": [
0.2183606557377049,
0.8734426229508196,
0.6004918032786886,
0.10918032786885246
],
"percentage_deforested_threshold": 44.26229508196721,
"size_ha_threshold": 1.4739344262295082,
"total_cluster_size_ha": 1.8014754098360655,
"percent_deforested": 54.09836065573771
},
"2005": {
"cluster_size_ha": [
0.05459016393442623,
0.32754098360655737,
0.10918032786885246,
0.16377049180327868
],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0.6550819672131147,
"percent_deforested": 19.672131147540984
},
"2006": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2007": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2008": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2009": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2010": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2011": {
"cluster_size_ha": [
0.16377049180327868,
0.3821311475409836
],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0.5459016393442623,
"percent_deforested": 16.39344262295082
},
"2012": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2013": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2014": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2015": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2016": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2017": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2018": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2019": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2020": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2021": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
},
"2022": {
"cluster_size_ha": [],
"percentage_deforested_threshold": 0,
"size_ha_threshold": 0,
"total_cluster_size_ha": 0,
"percent_deforested": 0
}
}
}
}
]
}
Where:
above_thresholds
: data above the threshold.clusters
: total number of clusters above the threshold.percent_deforested
: total percent deforested above the threshold.hectares
: total hectares above the threshold.
overview
: general data overview, including everything above and below the threshold.clusters
: total number of clusters.percent_deforested
: total percent deforested.hectares
: total hectares deforested.
years
: detail of every year of the requested time range. A map in which keys are the year number and the values are a map with data for the year:cluster_size_ha
: an array of floats, each representing a cluster’s size. The total number of clusters can be inferred from the array size.percentage_deforested_threshold
: the deforested percentage of all the clusters above the threshold.size_ha_threshold
: the size in hectares of all the clusters above the threshold.percentage_deforested
: the total deforested percentage of all the clusters.total_cluster_size_ha
: the total size of the clusters, in hectares.