Earth Observation Analysis
Overview
The Earth Observation Analysis service allows you to analyze satellite imagery by making simple REST calls. The service provides a search mechanism for finding an image of interest, and can be used to extract specific information such as a Normalized Difference Vegetation Index (NDVI). Such a surface index can provide information about the density and vitality of vegetation, and broadly distinguish vegetated areas from open water and soil. Comparing surface information can be useful, for example, for estimating areas impacted by wild fires or visualizing deforestation.
Use the Earth Observation Analysis service to:
- Access Copernicus Sentinel-2 data
- Browse through a catalog of historical and real-time satellite images
- Get metadata about specific satellite images
- Filter satellite images by time, space, and quality conditions
- Calculate classic RGB images of specific satellite images
- Calculate surface indices such as NDVI or NBR on-the-fly
- Download georeferenced images (GeoTIFF)
API Reference
/wcs
/wcs
Call the EO-WCS service as specified in the OGC standard. It is recommended to use the alternative calls documented in the rest of this API. For example, a call
/wcs?service=wcs&version=2.0.1&request=describeEOCoverageSet&eoid=DS_NDVI&count=10
is equivalent to
/wcs/describeEOCoverageSet?eoid=DS_NDVI&count=10.
The caller must have the sap.eoa_service
scope assigned.
get /wcs
Call the EO-WCS service as specified in the OGC standard. It is recommended to use the alternative calls documented in the rest of this API. For example, a call
/wcs?service=wcs&version=2.0.1&request=describeEOCoverageSet&eoid=DS_NDVI&count=10
is equivalent to
/wcs/describeEOCoverageSet?eoid=DS_NDVI&count=10.
The caller must have the sap.eoa_service
scope assigned.
Headers
- Authorization: required (string)
Used to send a valid OAuth2 access token.
Example:
Bearer access_token
Query Parameters
- service: required (string)
The OGC-service to be used. This string is fixed to wcs
Example:
service=wcs
- version: required (string)
The version of the WCS standard to use. The services are built on WCS 2.0.1.
Example:
version=2.0.1
- request: required (string)
The specific WCS request to use. This can be either getCapabilities, describeEOCoverageSet, describeCoverage, or getCoverage.
Example:
request=describeEOCoverageSet
- eoid: (string)
Required, if request=describeEOCoverageSet. Refer to the description of /wcs/describeEOCoverageSet.
- coverageId: (string)
Required, if request=getCoverage or request=describeCoverage. Refer to the description of /wcs/getCoverage and /wcs/describeCoverage.
- containment: (string)
Optional, if request=describeEOCoverageSet. Refer to the description of /wcs/describeEOCoverageSet.
- count: (string)
Optional, if request=describeEOCoverageSet. Refer to the description of /wcs/describeEOCoverageSet.
- skip: (string)
Optional, if request=describeEOCoverageSet. Refer to the description of /wcs/describeEOCoverageSet.
- dimensionTrim: (string)
Optional, if request=describeEOCoverageSet, request=describeCoverage or request=getCoverage. Refer to the description of /wcs/describeEOCoverageSet, /wcs/describeCoverage and /wcs/getCoverage.
- format: (string)
Optional for all requests. Refer to the respective descriptions.
HTTP status code 200
The request was successful.
HTTP status code 202
Coverage not available right now. Stay tuned, data fetching in progress.
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="Coverage not available but is currently being prepared for you, please stay tuned." locator="coverageId" />
</ExceptionReport>
HTTP status code 400
Bad request
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="InvalidParameterValue" locator="coverageId" />
</ExceptionReport>
HTTP status code 401
Given request is unauthorized. Bad or expired token. Reauthenticate the user. Any details will be provided within the response payload.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status":401,
"message":"Authorization: Unauthorized. Bearer TOKEN is invalid",
"type":"insufficient_credentials",
"moreInfo":"https://api.beta.yaas.io/patterns/errortypes.html"
}
HTTP status code 403
Evaluated request scopes in access token are not sufficient and do not match required scopes.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status": 403,
"message": "Given request does not have required scopes in access token. It is not authorized to perform this operation.",
"type": "insufficient_permissions"
}
HTTP status code 404
Coverage not found.
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="InvalidParameterValue" locator="coverageId" />
</ExceptionReport>
HTTP status code 501
Operation not supported
/wcs/getCapabilities
Return capabilities of WCS implementation
get /wcs/getCapabilities
Return capabilities of WCS implementation
Headers
- Authorization: required (string)
Used to send a valid OAuth2 access token.
Example:
Bearer access_token
Query Parameters
- format: (string)
Define output format. Currently allowed is:
- format=text/xml
- format=application/json
Example:
format=text/xml format=application/json
HTTP status code 200
The request was successful
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<wcs:Capabilities
xmlns:wcs="http://www.opengis.net/wcs/2.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ows="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:crs="http://www.opengis.net/wcs/crs/1.0"
xmlns:wcseo="http://www.opengis.net/wcs/wcseo/1.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:gmlcov='http://www.opengis.net/gmlcov/1.0'
xmlns:swe='http://www.opengis.net/swe/2.0'
xmlns:eop="http://www.opengis.net/eop/2.0"
xmlns:om="http://www.opengis.net/om/2.0"
updateSequence="2017-01-22T17:27:15.000000"
version="2.0.1"
xsi:schemaLocation="
http://www.opengis.net/wcs/wcseo/1.0 http://schemas.opengis.net/wcs/wcseo/1.0/wcsEOAll.xsd
http://www.opengis.net/wcs/2.0 http://schemas.opengis.net/wcs/2.0/wcsAll.xsd">
<ows:ServiceIdentification>
<ows:Title>SAP HANA Earth Observation Analysis</ows:Title>
<ows:Abstract>EO-WCS Server powered by SAP HANA</ows:Abstract>
<ows:ServiceType>OGC WCS</ows:ServiceType>
<ows:ServiceTypeVersion>2.0.1</ows:ServiceTypeVersion>
<ows:Profile>http://www.opengis.net/spec/WCS/2.0/conf/core</ows:Profile>
<ows:Profile>http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.0/conf/eowcs_get-kvp</ows:Profile>
<ows:Fees />
<ows:AccessConstraints />
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>SAP SE</ows:ProviderName>
<ows:ProviderSite xlink:href="https://hana.sap.com" />
<ows:ServiceContact>
<ows:IndividualName />
<ows:PositionName />
<ows:ContactInfo />
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata >
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="https://api.beta.yaas.io/sap/earth-analysis/v1/wcs" />
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="DescribeEOCoverageSet">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="https://api.beta.yaas.io/sap/earth-analysis/v1/wcs" />
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="GetCoverage">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="https://api.beta.yaas.io/sap/earth-analysis/v1/wcs" />
</ows:HTTP>
</ows:DCP>
</ows:Operation>
</ows:OperationsMetadata>
<wcs:ServiceMetadata>
<wcs:formatSupported>image/tiff</wcs:formatSupported>
<wcs:formatSupported>application/xml</wcs:formatSupported>
</wcs:ServiceMetadata>
<wcs:Contents>
<wcs:Extension>
<wcseo:DatasetSeriesSummary>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180 -90</ows:LowerCorner>
<ows:UpperCorner>180 90</ows:UpperCorner>
</ows:WGS84BoundingBox>
<wcseo:DatasetSeriesId>DS_NDVI</wcseo:DatasetSeriesId>
<gml:TimePeriod gml:id="DS_NDVI_timeperiod">
<gml:beginPosition>2015-06-27T10:25:31.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</wcseo:DatasetSeriesSummary>
<wcseo:DatasetSeriesSummary>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180 -90</ows:LowerCorner>
<ows:UpperCorner>180 90</ows:UpperCorner>
</ows:WGS84BoundingBox>
<wcseo:DatasetSeriesId>DS_NBR</wcseo:DatasetSeriesId>
<gml:TimePeriod gml:id="DS_NBR_timeperiod">
<gml:beginPosition>2015-06-27T10:25:31.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</wcseo:DatasetSeriesSummary>
<wcseo:DatasetSeriesSummary>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180 -90</ows:LowerCorner>
<ows:UpperCorner>180 90</ows:UpperCorner>
</ows:WGS84BoundingBox>
<wcseo:DatasetSeriesId>DS_COLORED_NDVI</wcseo:DatasetSeriesId>
<gml:TimePeriod gml:id="DS_COLORED_NDVI_timeperiod">
<gml:beginPosition>2015-06-27T10:25:31.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</wcseo:DatasetSeriesSummary>
<wcseo:DatasetSeriesSummary>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180 -90</ows:LowerCorner>
<ows:UpperCorner>180 90</ows:UpperCorner>
</ows:WGS84BoundingBox>
<wcseo:DatasetSeriesId>DS_RGB</wcseo:DatasetSeriesId>
<gml:TimePeriod gml:id="DS_RGB_timeperiod">
<gml:beginPosition>2015-06-27T10:25:31.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</wcseo:DatasetSeriesSummary>
</wcs:Extension>
</wcs:Contents>
</wcs:Capabilities>
HTTP status code 400
Bad request
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="InvalidParameterValue" locator="coverageId" />
</ExceptionReport>
HTTP status code 401
Given request is unauthorized. Bad or expired token. Reauthenticate the user. Any details will be provided within the response payload.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status":401,
"message":"Authorization: Unauthorized. Bearer TOKEN is invalid",
"type":"insufficient_credentials",
"moreInfo":"https://api.beta.yaas.io/patterns/errortypes.html"
}
HTTP status code 403
Evaluated request scopes in access token are not sufficient and do not match required scopes.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status": 403,
"message": "Given request does not have required scopes in access token. It is not authorized to perform this operation.",
"type": "insufficient_permissions"
}
HTTP status code 501
Operation not supported
/wcs/describeEOCoverageSet
Get more information about the contained Coverages of one or more Dataset Series. The returned Coverages can be filtered in time and space.
get /wcs/describeEOCoverageSet
Get more information about the contained Coverages of one or more Dataset Series. The returned Coverages can be filtered in time and space.
Headers
- Authorization: required (string)
Used to send a valid OAuth2 access token.
Example:
Bearer access_token
Query Parameters
- eoid: required (string)
Comma separated list of Dataset Series IDs (one or more ids allowed). The IDs can e.g. be obtained from the response of a getCapabilities call.
Example:
eoid=DS_NDVI
- containment: (string)
Intersection mode for bounding box (contains or overlaps)
Example:
containment=overlaps
- count: (integer)
Maximum number of CoverageDescription and DatasetSeriesDescription
Example:
count=100
- skip: (integer)
Skip number of CoverageDescription and DatasetSeriesDescription in result
Example:
skip=1200
- dimensionTrim: (string)
Trim specification. To spatially restrict the results, longitude and latitude coordinates (WGS84) are required:
- long(minLong, maxLong)
- lat(minLat, maxLat)
To temporally restrict the results, a time range can be indicated:
- phenomenonTime(minDate, maxDate)
To restrict results by quality, the range of cloud percentage can be specified:
- cloudPercentage(minCloudy, maxCloudy)
Temporal, spatial and quality trimming can be combined. For web clients that do not support the definition of the same parameter multiple times, you can append the parameter with a number. You can arbitrarily choose the number suffix. The service does not interpret the number, nor does it influence the order of parameter parsing.
Example:
dimensionTrim=phenomenonTime("2016-07-01","2016-07-15") dimensionTrim=phenomenonTime("2016-07-01","2016-07-15T19:00:00Z") dimensionTrim=lat(23.12,24.2)&dimensionTrim=long(-45.37,-43.98) dimensionTrim=lat(23.12,24.2)&dimensionTrim=long(-45.37,-43.98)&dimensionTrim=phenomenonTime("2016-07-01","2016-07-15T19:00:00Z") dimensionTrim=cloudPercentage(0.0, 40.0) dimensionTrim=phenomenonTime("2016-07-01","2016-07-15T19:00:00Z")&dimensionTrim=cloudPercentage(0.0, 40.0) dimensionTrim1=phenomenonTime("2016-07-01","2016-07-15T19:00:00Z")&dimensionTrim2=cloudPercentage(0.0, 40.0)
- format: (string)
Define output format. Currently allowed is:
- format=text/xml
- format=application/json
Example:
format=text/xml format=application/json
HTTP status code 200
The query succeeded.
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<wcseo:EOCoverageSetDescription
xmlns:wcs="http://www.opengis.net/wcs/2.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ows="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:crs="http://www.opengis.net/wcs/crs/1.0"
xmlns:wcseo="http://www.opengis.net/wcs/wcseo/1.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:gmlcov='http://www.opengis.net/gmlcov/1.0'
xmlns:swe='http://www.opengis.net/swe/2.0'
xmlns:eop="http://www.opengis.net/eop/2.0"
xmlns:om="http://www.opengis.net/om/2.0"
numberMatched="1520070" numberReturned="2"
xsi:schemaLocation="
http://www.opengis.net/wcs/wcseo/1.0 http://schemas.opengis.net/wcs/wcseo/1.0/wcsEOAll.xsd
http://www.opengis.net/wcs/2.0 http://schemas.opengis.net/wcs/2.0/wcsAll.xsd">
<wcs:CoverageDescriptions>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>13.4783177459 123.923922889</gml:lowerCorner>
<gml:upperCorner>14.4647796592 124.94640472</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204">
<gml:beginPosition>2017-01-20T02:22:01.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204">
<gml:exterior>
<gml:LinearRing>
<gml:posList>123.92789 14.471 123.923923 13.478318 124.938087 13.47254 124.946405 14.46478 123.92789 14.471</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">0.0</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32651" gml:id="NDVI_ESAS2_T51PXR_S2A_MSIL1C_20170120T022201_N0204_R103_T51PXR_20170120T022204_grid_origin">
<gml:pos>600000 1600020</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32651">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32651">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>16.1903620632 123.935508628</gml:lowerCorner>
<gml:upperCorner>17.1753497196 124.972523453</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204">
<gml:beginPosition>2017-01-20T02:22:01.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204">
<gml:exterior>
<gml:LinearRing>
<gml:posList>123.940349 17.182801 123.935509 16.190362 124.962376 16.183365 124.972523 17.17535 123.940349 17.182801</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">77.3000030518</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32651" gml:id="NDVI_ESAS2_T51QXU_S2A_MSIL1C_20170120T022201_N0204_R103_T51QXU_20170120T022204_grid_origin">
<gml:pos>600000 1900020</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32651">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32651">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
</wcs:CoverageDescriptions>
<wcseo:DatasetSeriesDescriptions>
</wcseo:DatasetSeriesDescriptions>
</wcseo:EOCoverageSetDescription>
HTTP status code 400
Bad request
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="InvalidParameterValue" locator="coverageId" />
</ExceptionReport>
HTTP status code 401
Given request is unauthorized. Bad or expired token. Reauthenticate the user. Any details will be provided within the response payload.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status":401,
"message":"Authorization: Unauthorized. Bearer TOKEN is invalid",
"type":"insufficient_credentials",
"moreInfo":"https://api.beta.yaas.io/patterns/errortypes.html"
}
HTTP status code 403
Evaluated request scopes in access token are not sufficient and do not match required scopes.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status": 403,
"message": "Given request does not have required scopes in access token. It is not authorized to perform this operation.",
"type": "insufficient_permissions"
}
HTTP status code 501
Operation not supported
/wcs/getCoverage
Get one specific Coverage that is identified by a certain ID. You can get the ID from, for example, a describeEOCoverageSet call.
get /wcs/getCoverage
Get one specific Coverage that is identified by a certain ID. You can get the ID from, for example, a describeEOCoverageSet call.
Headers
- Authorization: required (string)
Used to send a valid OAuth2 access token.
Example:
Bearer access_token
Query Parameters
- coverageId: required (string)
Unique identifier for a Coverage. You can obtain a coverageId from, for example, the response of a describeEOCoverageSet call.
Example:
coverageId=NDVI_ESAS2_T39WXN_S2A_OPER_PRD_MSIL1C_PDMC_20160607T030311_R075_V20150628T081132_20150628T081132
- format: (string)
Define output format. Currently allowed is:
- format=image/tiff
- format=image/png
Example:
- format=image/tiff - format=image/png
- dimensionTrim: (string)
Trim a coverage along longitude and latitude. Coordinates must be in WGS84 degrees. Either both lat and long or none are required. The selected bounding box must at least intersect the coverage.
- long(minLong, maxLong)
- lat(minLat, maxLat) For web clients that do not support the definition of the same parameter multiple times, you can append the parameter with a number. You can arbitrarily choose the number suffix. The service does not interpret the number, nor does it influence the order of parameter parsing.
Example:
dimensionTrim=long(-81.78,-81.52)&dimensionTrim=lat(24.5,24.62) dimensionTrim1=long(-81.78,-81.52)&dimensionTrim=lat(24.5,24.62) dimensionTrim1=long(-81.78,-81.52)&dimensionTrim2=lat(24.5,24.62) dimensionTrim=long(-81.78,-81.52)&dimensionTrim4325=lat(24.5,24.62)
HTTP status code 200
The coverage was successfully retrieved.
Body
Type: image/tiff
Type: image/png
HTTP status code 202
Coverage not available right now. Stay tuned, data fetching in progress.
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="Coverage not available but is currently being prepared for you, please stay tuned." locator="coverageId" />
</ExceptionReport>
HTTP status code 400
Bad request
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="InvalidParameterValue" locator="coverageId" />
</ExceptionReport>
HTTP status code 401
Given request is unauthorized. Bad or expired token. Reauthenticate the user. Any details will be provided within the response payload.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status":401,
"message":"Authorization: Unauthorized. Bearer TOKEN is invalid",
"type":"insufficient_credentials",
"moreInfo":"https://api.beta.yaas.io/patterns/errortypes.html"
}
HTTP status code 403
Evaluated request scopes in access token are not sufficient and do not match required scopes.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status": 403,
"message": "Given request does not have required scopes in access token. It is not authorized to perform this operation.",
"type": "insufficient_permissions"
}
HTTP status code 404
Coverage not found or invalid parameters.
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="InvalidParameterValue" locator="coverageId" />
</ExceptionReport>
HTTP status code 501
Operation not supported
HTTP status code 503
Server Overload
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="You reached the limit of concurrent requests! Please come back after results became ready." locator="client_id" />
</ExceptionReport>
/wcs/describeCoverage
Get more information about one specific Coverage that is identified by a certain ID. You can obtain the ID from, for example, a describeEOCoverageSet call.
get /wcs/describeCoverage
Get more information about one specific Coverage that is identified by a certain ID. You can obtain the ID from, for example, a describeEOCoverageSet call.
Headers
- Authorization: required (string)
Used to send a valid OAuth2 access token.
Example:
Bearer access_token
Query Parameters
- coverageId: required (string)
Unique identifiers for Coverages as comma separated list. If subsetting is applied via the dimensionTrim parameter, then only one coverage id is allowed.
Example:
- coverageId=NDVI_ESAS2_T39WXN_S2A_OPER_PRD_MSIL1C_PDMC_20160607T030311_R075_V20150628T081132_20150628T081132 - coverageId=NDVI_ESAS2_T39WXN_S2A_OPER_PRD_MSIL1C_PDMC_20160607T030311_R075_V20150628T081132_20150628T081132,RGB_ESAS2_T17RMH_S2A_OPER_PRD_MSIL1C_PDMC_20161111T124314_R097_V20161110T160502_20161110T160502
- format: (string)
Define output format. Currently allowed is:
- format=text/xml
- format=application/json
Example:
- format=text/xml - format=application/json
- dimensionTrim: (string)
Trim a coverage along longitude and latitude. Coordinates must be in WGS84 degrees. Either both lat and long or none are required. The selected bounding box must at least intersect the coverage.
- long(minLong, maxLong)
- lat(minLat, maxLat) For web clients that do not support the definition of the same parameter multiple times, you can append the parameter with a number. You can arbitrarily choose the number suffix. The service does not interpret the number, nor does it influence the order of parameter parsing.
Example:
dimensionTrim=long(-81.78,-81.52)&dimensionTrim=lat(24.5,24.62) dimensionTrim1=long(-81.78,-81.52)&dimensionTrim=lat(24.5,24.62) dimensionTrim1=long(-81.78,-81.52)&dimensionTrim2=lat(24.5,24.62) dimensionTrim=long(-81.78,-81.52)&dimensionTrim4325=lat(24.5,24.62)
HTTP status code 200
The coverage descriptions successfully retrieved.
Body
Type: text/xml
Type: application/json
HTTP status code 400
Bad request
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="InvalidParameterValue" locator="coverageId" />
</ExceptionReport>
HTTP status code 401
Given request is unauthorized. Bad or expired token. Reauthenticate the user. Any details will be provided within the response payload.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status":401,
"message":"Authorization: Unauthorized. Bearer TOKEN is invalid",
"type":"insufficient_credentials",
"moreInfo":"https://api.beta.yaas.io/patterns/errortypes.html"
}
HTTP status code 403
Evaluated request scopes in access token are not sufficient and do not match required scopes.
Body
Type: application/json
Schema:
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"error",
"description":"Schema for API specified errors.",
"type":"object",
"properties":
{
"status":
{
"type":"integer",
"description":"original HTTP error code, should be consistent with the response HTTP code",
"minimum":100,
"maximum":599
},
"type":
{
"type":"string",
"description":"classification of the error type, lower case with underscore eg validation_failure",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support"
},
"details":
{
"type":"array",
"description":"list of problems causing this error",
"items":
{
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"errorDetail",
"description":"schema for specific error cause",
"type":"object",
"properties":
{
"field":
{
"type":"string",
"description":"a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific"
},
"type":
{
"type":"string",
"description":"classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.",
"pattern":"[a-z]+[a-z_]*[a-z]+"
},
"message":
{
"type":"string",
"description":"descriptive error detail message for debugging"
},
"moreInfo":
{
"type":"string",
"format":"uri",
"description":"link to documentation to investigate further and finding support for error detail"
}
},
"required":["type"]
}
}
},
"required":["status" , "type" ]
}
Example:
{
"status": 403,
"message": "Given request does not have required scopes in access token. It is not authorized to perform this operation.",
"type": "insufficient_permissions"
}
HTTP status code 404
Coverages not found or invalid parameters.
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="InvalidParameterValue" locator="coverageId" />
</ExceptionReport>
HTTP status code 501
Operation not supported
HTTP status code 503
Server Overload
Body
Type: text/xml
Example:
<?xml version="1.0" encoding="UTF-8"?>
<ExceptionReport xmlns="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd"
version="1.0.0"
xml:lang="en">
<Exception exceptionCode="You reached the limit of concurrent requests! Please come back after results became ready." locator="client_id" />
</ExceptionReport>
Services Usage
The Earth Observation Analysis service provides a catalog of available satellite images that you can use to extract information. Examples of extracted information are the current vegetation concentration, the world's water situation, and changes to such information over time.
A first call to the service using the getCapabilities
request returns general information about the server capabilities, which are based on the Earth Observation Application Profile of the OGC WCS standard, OGC 10-140r1). Most interesting are the Dataset Series, which describe specific sets of Coverages (satellite images or values derived from satellite images), for example, the Dataset Series "DS_NDVI" that describes the Normalized Difference Vegetation Index (NDVI).
A second call, using the describeEOCoverageSet
request, returns more information about the Coverages contained in the specified Dataset Series with the ability to filter by time, and space, and quality conditions. This call returns all Coverages that fulfill your search criteria.
After making the second call, you can select and download one Coverage using the getCoverage
method and include, as a parameter in your request, the Coverage-ID returned in the describeEOCoverageSet
call. The end product is a Coverage from a selected Dataset Series, such as a georeferenced NDVI- or RGB image.
If you request a Coverage in a non-georeferenced format such as PNG, you can get the georeference using the describeCoverage
call. As with getCoverage
, you can further parameterize the Coverage here, for example by defining a subset.
getCoverage
request.Scopes
Scopes are strings that allow you to specify the type of access you need to the resources and operations in, and prevent unauthorized access to, the Earth Observation Analysis service.
- Authorization
- Scopes
The table shows the scopes that the Earth Observation Analysis service supports.
Scope | Description |
---|---|
sap.eoa_service | Use this scope to query the Web Coverage service of the Earth Observation Analysis service. |
Get the Right Data
Search for satellite images
The Earth Observation Analysis service provides a search mechanism for finding an image of interest. According to the Earth Observation Application Profile of the WCS Standard, the describeEOCoverageSet
request accepts a dimensionTrim parameter that you can use to spatially and temporally restrict the search results. You can define spatial boundaries using a minimum and maximum latitude and longitude (in the WGS84 coordinate system), as well as temporal boundaries by indicating a time range in UTC. This makes it easy to find relevant images if, for example, you want to see how a certain event, such as a wild fire, affected the earth's surface.
Download Coverages
Each Coverage has a specific coverageId that you can use to access that image with a getCoverage
request. If the Coverage is not currently available on our server, but your request was successful, you will get an appropriate response. (Refer to the Dev Portal API Documentation). In that case, make the request again later to try to fetch the respective image.
Get your first NDVI image
Learn how to find and get your first NDVI image in the Earth Observation Analysis service Tutorial.
Introduction
To use this tutorial, you must have a valid Bearer access token with the scope sap.eoa_service.
For more information about how to get an access token, refer to the YaaS Bites First Steps in the Getting Started section.
Visualize the vegetation density of Barcelona
Learn how to use the Dataset Series "DS_NDVI" to get vegetation information about a specific area at a specific point in time.
Get basic information about the service and available Dataset Series
Use the getCapabilities
request to get basic information about the service and the Dataset Series:
/wcs/getCapabilities
The XML response shown describes generic information about the service such as the latest catalog update, who is responsible for the service, which functions are available, and especially, which Dataset Series can be consumed. Scroll to the bottom of the response to learn more about the response.
Example-Response getCapabilities:
<?xml version="1.0" encoding="UTF-8"?>
<wcs:Capabilities
xmlns:wcs="http://www.opengis.net/wcs/2.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ows="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:crs="http://www.opengis.net/wcs/crs/1.0"
xmlns:wcseo="http://www.opengis.net/wcs/wcseo/1.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:gmlcov='http://www.opengis.net/gmlcov/1.0'
xmlns:swe='http://www.opengis.net/swe/2.0'
xmlns:eop="http://www.opengis.net/eop/2.0"
xmlns:om="http://www.opengis.net/om/2.0"
updateSequence="2017-01-22T17:27:15.000000"
version="2.0.1"
xsi:schemaLocation="
http://www.opengis.net/wcs/wcseo/1.0 http://schemas.opengis.net/wcs/wcseo/1.0/wcsEOAll.xsd
http://www.opengis.net/wcs/2.0 http://schemas.opengis.net/wcs/2.0/wcsAll.xsd">
<ows:ServiceIdentification>
<ows:Title>SAP HANA Earth Observation Analysis</ows:Title>
<ows:Abstract>EO-WCS Server powered by SAP HANA</ows:Abstract>
<ows:ServiceType>OGC WCS</ows:ServiceType>
<ows:ServiceTypeVersion>2.0.1</ows:ServiceTypeVersion>
<ows:Profile>http://www.opengis.net/spec/WCS/2.0/conf/core</ows:Profile>
<ows:Profile>http://www.opengis.net/spec/WCS_application-profile_earth-observation/1.0/conf/eowcs_get-kvp</ows:Profile>
<ows:Fees />
<ows:AccessConstraints />
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>SAP SE</ows:ProviderName>
<ows:ProviderSite xlink:href="https://hana.sap.com" />
<ows:ServiceContact>
<ows:IndividualName />
<ows:PositionName />
<ows:ContactInfo />
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata >
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="https://api.beta.yaas.io/sap/earth-analysis/v1/wcs" />
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="DescribeEOCoverageSet">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="https://api.beta.yaas.io/sap/earth-analysis/v1/wcs" />
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="GetCoverage">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="https://api.beta.yaas.io/sap/earth-analysis/v1/wcs" />
</ows:HTTP>
</ows:DCP>
</ows:Operation>
</ows:OperationsMetadata>
<wcs:ServiceMetadata>
<wcs:formatSupported>image/tiff</wcs:formatSupported>
<wcs:formatSupported>application/xml</wcs:formatSupported>
</wcs:ServiceMetadata>
<wcs:Contents>
<wcs:Extension>
<wcseo:DatasetSeriesSummary>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180 -90</ows:LowerCorner>
<ows:UpperCorner>180 90</ows:UpperCorner>
</ows:WGS84BoundingBox>
<wcseo:DatasetSeriesId>DS_NDVI</wcseo:DatasetSeriesId>
<gml:TimePeriod gml:id="DS_NDVI_timeperiod">
<gml:beginPosition>2015-06-27T10:25:31.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</wcseo:DatasetSeriesSummary>
<wcseo:DatasetSeriesSummary>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180 -90</ows:LowerCorner>
<ows:UpperCorner>180 90</ows:UpperCorner>
</ows:WGS84BoundingBox>
<wcseo:DatasetSeriesId>DS_NBR</wcseo:DatasetSeriesId>
<gml:TimePeriod gml:id="DS_NBR_timeperiod">
<gml:beginPosition>2015-06-27T10:25:31.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</wcseo:DatasetSeriesSummary>
<wcseo:DatasetSeriesSummary>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180 -90</ows:LowerCorner>
<ows:UpperCorner>180 90</ows:UpperCorner>
</ows:WGS84BoundingBox>
<wcseo:DatasetSeriesId>DS_COLORED_NDVI</wcseo:DatasetSeriesId>
<gml:TimePeriod gml:id="DS_COLORED_NDVI_timeperiod">
<gml:beginPosition>2015-06-27T10:25:31.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</wcseo:DatasetSeriesSummary>
<wcseo:DatasetSeriesSummary>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180 -90</ows:LowerCorner>
<ows:UpperCorner>180 90</ows:UpperCorner>
</ows:WGS84BoundingBox>
<wcseo:DatasetSeriesId>DS_RGB</wcseo:DatasetSeriesId>
<gml:TimePeriod gml:id="DS_RGB_timeperiod">
<gml:beginPosition>2015-06-27T10:25:31.000000</gml:beginPosition>
<gml:endPosition>2017-01-20T02:22:01.000000</gml:endPosition>
</gml:TimePeriod>
</wcseo:DatasetSeriesSummary>
</wcs:Extension>
</wcs:Contents>
</wcs:Capabilities>
At the bottom of the response, there is a Dataset Series with the ID DS_NDVI. The respective XML-Tag is DatasetSeriesId
. The NDVI describes the density and vitality of vegetation for an area, and it can distinguish vegetated areas from soils and water areas. Use the ID DS_NDVI of the Dataset Series as an eoid parameter in the describeEOCoverageSet
request, to list all satellite images that you can use to generate the NDVI. For instance, the call in the List Coverages of a Dataset Series and limit results section lists all matching images, and limits the result set to two.
List Coverages of a Dataset Series and limit results
Use this request to get a list of images that meet your search requirements and set a limit on the number of returned results.
/wcs/describeEOCoverageSet?eoid=DS_NDVI&count=2
Example-Response describeEOCoverageSet:
<?xml version="1.0" encoding="UTF-8"?>
<wcseo:EOCoverageSetDescription
xmlns:wcs="http://www.opengis.net/wcs/2.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ows="http://www.opengis.net/ows/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:crs="http://www.opengis.net/wcs/crs/1.0"
xmlns:wcseo="http://www.opengis.net/wcs/wcseo/1.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:gmlcov='http://www.opengis.net/gmlcov/1.0'
xmlns:swe='http://www.opengis.net/swe/2.0'
xmlns:eop="http://www.opengis.net/eop/2.0"
xmlns:om="http://www.opengis.net/om/2.0"
numberMatched="8" numberReturned="8"
xsi:schemaLocation="
http://www.opengis.net/wcs/wcseo/1.0 http://schemas.opengis.net/wcs/wcseo/1.0/wcsEOAll.xsd
http://www.opengis.net/wcs/2.0 http://schemas.opengis.net/wcs/2.0/wcsAll.xsd">
<wcs:CoverageDescriptions>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>41.4388362851 0.60606083645</gml:lowerCorner>
<gml:upperCorner>42.4474430295 1.90314831582</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:beginPosition>2015-08-12T10:49:04.000000</gml:beginPosition>
<gml:endPosition>2015-08-12T10:49:04.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:exterior>
<gml:LinearRing>
<gml:posList>0.568804 42.426902 0.606061 41.438836 1.919973 41.458682 1.903148 42.447443 0.568804 42.426902</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">31.6546001434</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32631" gml:id="NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904_grid_origin">
<gml:pos>300000 4700040</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>40.5386078513 0.63841902265</gml:lowerCorner>
<gml:upperCorner>41.5467587694 1.91850819262</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:beginPosition>2015-08-12T10:49:04.000000</gml:beginPosition>
<gml:endPosition>2015-08-12T10:49:04.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:exterior>
<gml:LinearRing>
<gml:posList>0.602817 41.526852 0.638419 40.538608 1.934585 40.557837 1.918508 41.546759 0.602817 41.526852</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">46.2281990051</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32631" gml:id="NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904_grid_origin">
<gml:pos>300000 4600020</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>40.5567069114 1.81837970781</gml:lowerCorner>
<gml:upperCorner>41.5517851164 3.11703163439</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:beginPosition>2015-08-12T10:49:04.000000</gml:beginPosition>
<gml:endPosition>2015-08-12T10:49:04.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:exterior>
<gml:LinearRing>
<gml:posList>1.800551 41.545589 1.81838 40.556707 3.115292 40.562692 3.117032 41.551785 1.800551 41.545589</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">50.9693984985</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32631" gml:id="NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904_grid_origin">
<gml:pos>399960 4600020</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>41.4575152059 1.8021752047</gml:lowerCorner>
<gml:upperCorner>42.4526297453 3.11869417362</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:beginPosition>2015-08-12T10:49:04.000000</gml:beginPosition>
<gml:endPosition>2015-08-12T10:49:04.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904">
<gml:exterior>
<gml:LinearRing>
<gml:posList>1.783517 42.446236 1.802175 41.457515 3.116873 41.463693 3.118694 42.45263 1.783517 42.446236</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">31.7630004883</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32631" gml:id="NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904_grid_origin">
<gml:pos>399960 4700040</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>41.4388362851 0.60606083645</gml:lowerCorner>
<gml:upperCorner>42.4474430295 1.90314831582</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:beginPosition>2015-08-12T10:40:26.000000</gml:beginPosition>
<gml:endPosition>2015-08-12T10:49:04.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:exterior>
<gml:LinearRing>
<gml:posList>0.568804 42.426902 0.606061 41.438836 1.919973 41.458682 1.903148 42.447443 0.568804 42.426902</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">33.8284988403</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32631" gml:id="NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904_grid_origin">
<gml:pos>300000 4700040</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>40.5386078513 0.63841902265</gml:lowerCorner>
<gml:upperCorner>41.5467587694 1.91850819262</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:beginPosition>2015-08-12T10:40:26.000000</gml:beginPosition>
<gml:endPosition>2015-08-12T10:49:04.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:exterior>
<gml:LinearRing>
<gml:posList>0.602817 41.526852 0.638419 40.538608 1.934585 40.557837 1.918508 41.546759 0.602817 41.526852</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">47.3975982666</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32631" gml:id="NDVI_ESAS2_T31TCF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904_grid_origin">
<gml:pos>300000 4600020</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>40.5567069114 1.81837970781</gml:lowerCorner>
<gml:upperCorner>41.5517851164 3.11703163439</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:beginPosition>2015-08-12T10:40:26.000000</gml:beginPosition>
<gml:endPosition>2015-08-12T10:49:04.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:exterior>
<gml:LinearRing>
<gml:posList>1.800551 41.545589 1.81838 40.556707 3.115292 40.562692 3.117032 41.551785 1.800551 41.545589</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">52.0477981567</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32631" gml:id="NDVI_ESAS2_T31TDF_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904_grid_origin">
<gml:pos>399960 4600020</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
<wcs:CoverageDescription gml:id="NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:boundedBy>
<gml:Envelope axisLabels="lat long"
srsName="http://www.opengis.net/def/crs/EPSG/0/4326"
uomLabels="deg deg"
srsDimension="2">
<gml:lowerCorner>41.4575152059 1.8021752047</gml:lowerCorner>
<gml:upperCorner>42.4526297453 3.11869417362</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<wcs:CoverageId>NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904</wcs:CoverageId>
<gmlcov:metadata>
<gmlcov:Extension>
<wcseo:EOMetadata>
<eop:EarthObservation gml:id="eo_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<om:phenomenonTime>
<gml:TimePeriod gml:id="tp_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:beginPosition>2015-08-12T10:40:26.000000</gml:beginPosition>
<gml:endPosition>2015-08-12T10:49:04.000000</gml:endPosition>
</gml:TimePeriod>
</om:phenomenonTime>
<om:resultTime />
<om:procedure>
<eop:EarthObservationEquipment gml:id="equ_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<eop:platform>
<eop:Platform>
<eop:shortName>SENTINEL2</eop:shortName>
</eop:Platform>
</eop:platform>
<eop:instrument>
<eop:Instrument>
<eop:shortName>MSI</eop:shortName>
</eop:Instrument>
</eop:instrument>
<eop:sensor>
<eop:Sensor>
<eop:sensorType>OPTICAL</eop:sensorType>
</eop:Sensor>
</eop:sensor>
</eop:EarthObservationEquipment>
</om:procedure>
<om:observedProperty />
<om:featureOfInterest>
<eop:Footprint gml:id="footprint_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<eop:multiExtentOf>
<gml:MultiSurface gml:id="ms_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904" srsName="EPSG:4326">
<gml:surfaceMember>
<gml:Polygon gml:id="poly_NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904">
<gml:exterior>
<gml:LinearRing>
<gml:posList>1.783517 42.446236 1.802175 41.457515 3.116873 41.463693 3.118694 42.45263 1.783517 42.446236</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:surfaceMember>
</gml:MultiSurface>
</eop:multiExtentOf>
</eop:Footprint>
</om:featureOfInterest>
<om:result>
<cloudPercentage uom="%">33.9817008972</cloudPercentage>
</om:result>
<eop:metaDataProperty>
<eop:EarthObservationMetaData>
<eop:identifier>NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904</eop:identifier>
<eop:acquisitionType>OTHER</eop:acquisitionType>
<eop:status>POTENTIAL</eop:status>
</eop:EarthObservationMetaData>
</eop:metaDataProperty>
</eop:EarthObservation>
</wcseo:EOMetadata>
</gmlcov:Extension>
</gmlcov:metadata>
<gml:domainSet>
<gml:RectifiedGrid gml:id="NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904_grid" dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>0 0</gml:low>
<gml:high>10980 10980</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisLabels>x y</gml:axisLabels>
<gml:origin>
<gml:Point srsName="http://www.opengis.net/def/crs/EPSG/0/32631" gml:id="NDVI_ESAS2_T31TDG_S2A_OPER_PRD_MSIL1C_PDMC_20160915T162806_R008_V20150812T104026_20150812T104904_grid_origin">
<gml:pos>399960 4700040</gml:pos>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">10 0</gml:offsetVector>
<gml:offsetVector srsName="http://www.opengis.net/def/crs/EPSG/0/32631">0 -10</gml:offsetVector>
</gml:RectifiedGrid>
</gml:domainSet>
<gmlcov:rangeType />
<wcs:ServiceParameters>
<wcs:CoverageSubtype>RectifiedDataset</wcs:CoverageSubtype>
<wcs:nativeFormat>image/tiff</wcs:nativeFormat>
</wcs:ServiceParameters>
</wcs:CoverageDescription>
</wcs:CoverageDescriptions>
<wcseo:DatasetSeriesDescriptions>
</wcseo:DatasetSeriesDescriptions>
</wcseo:EOCoverageSetDescription>
Add filters for time and space
You can add additional filters for time and space. Most of the time, consumers are interested in a specific area at a specific point in time. The request shown here lists all available satellite images for the area around Barcelona. This time, there is no count limit because the number of matches is expected to be much smaller.
/wcs/describeEOCoverageSet?eoid=DS_NDVI&dimensionTrim=phenomenonTime("2015-08-12","2015-08-13")&dimensionTrim=long(1.899568,2.290409)&dimensionTrim=lat(41.258708,41.487033)
Get the image of interest
After you find the image of interest, you can get the Coverage using the getCoverage
request:
/wcs/getCoverage?coverageId=NDVI_ESAS2_T31TCG_S2A_OPER_PRD_MSIL1C_PDMC_20160514T041712_R008_V20150812T104904_20150812T104904
The service returns the NDVI image in the default format, which is a georeferenced TIFF image.

Whereas NDVI values are between -1 and 1, the service returns values in a 16-bit integer range. Invalid values are mapped onto the minimum number, -32768, and the NDVI-values are linearly mapped onto the range [-32767,32767]. The values are here displayed in a shaded scale from white through gray. A high positive value describes the density and vitality of any vegetation (NDVI-values between 0.3 and 1.0 correspond to output-values greater than 9830), soils are in the range of 0.0 – 0.3, and free standing water is less than 0.
These samples show an area in Canada, and how the vegetation changed over time. The first picture is from April and the second from June 2016. This time, there is a more intuitive color scale to explain the vegetation density. You can get this using the Dataset Series "DS_COLORED_NDVI" instead of "DS_NDVI". All NDVI-values less than -0.05 are rendered blue, values between 0 and 0.3 represent soils and are light brown, and everything greater than 0.3 is green and shows vegetation.
For more information about error codes, see the API Reference.
Further Reading
To dive deeper into earth observation data processing and the uses of the SAP Earth Observation Analysis service, take the opportunity to read the following blogs.
SAP Earth Observation Analysis Microservices on YaaS
A hands-on tutorial about getting started using the Earth Observation Analysis service, focusing on YaaS.
https://blogs.sap.com/2016/11/25/sap-earth-observation-analysis-microservices-on-yaas/Add the Earth Observation Analysis YaaS service to HCP
Plug YaaS packages into your HCP application using the example of the Earth Observation Analysis service.
https://blogs.sap.com/2016/12/09/add-the-earth-observation-analysis-yaas-service-to-hcp/Port of Antwerp from space perspective
A hands-on tutorial working with actual geographic image data from the Earth Observation Analysis service. This article includes:- selecting the right image when only a postal address is available
- filtering by cloud coverage
- transforming pixel location in an image to latitude longitude coordinates
Spatial Reference Systems – Background Knowledge and their use in SAP HANA
Get basic background knowledge about coordinate systems in a geographical context (Spatial Reference Systems). This background material is strongly recommended for processing geographic data, or spatial analysis. In many cases, the information is even required.
https://archive.sap.com/documents/docs/DOC-75363
Glossary
Term | Description |
---|---|
Coverage | Coverage in this service refers to the coverage types defined by the Unified Coverage Model (refer to the OGC standard [OGC 09-146]). Typically, a single NDVI Coverage is a 2D rectified grid coverage. This means the service can map each value onto an external coordinate system. Such 2D rectified grid coverages are, by default, encoded as TIFF images with embedded georeferences (GeoTIFF). |
Dataset Series | A Dataset Series is an identifiable, query-able collection of Coverages as defined in the EO-WCS Standard [OGC 10-140](http://www.opengeospatial.org/standards/wcs). It is possible that a Dataset Series contains not only Coverages, but also other Dataset Series (that are themselves collections of Coverages and can contain other Dataset Series). |
GeoTIFF | GeoTIFF is a standard used to embed georeferencing within a TIFF file. By default, the Earth Observation Analysis service returns GeoTIFF images containing an image and additional metadata about the spatial reference system and the geolocation. |
Normalized Difference Vegetation Index (NDVI) | The Normalized Difference Vegetation Index (NDVI) is a number between -1 and 1. It is a normalized ratio between reflected light in the near-infrared spectrum and the visible red spectrum. In the process of photosynthesis, plants absorb nearly all the visible sunlight in the red spectrum, but reflect a lot of light in the near-infrared spectrum. The NDVI emphasizes this so-called "red edge," which is typical for photosynthetically active plants. A large NDVI value (> 0.3) therefore indicates vital vegetation. |
Open Geospatial Consortium (OGC) | The Open Geospatial Consortium (OGC) is an international industry consortium of companies, government agencies, and universities participating in a consensus process to develop publicly-available interface standards for geospatial data. You can learn more about the OGC on the official [OGC website](http://www.opengeospatial.org/). |
Sentinel-2 | Sentinel-2 is one of the satellites in the European Commission"s Copernicus program for environmental monitoring. Sentinel-2 carries a high-resolution multispectral imager (MSI). |
Web Coverage Service (WCS) | The Web Coverage Service (WCS) is one of the standards defined by the Open Geospatial Consortium (OGC). The WCS provides an interface to access coverage data over the Internet. The complete WCS standard documentation can be found on the [OGC Website](http://www.opengeospatial.org/standards/wcs). |
If you find any information that is unclear or incorrect, please let us know so that we can improve the Dev Portal content.
Use our private help channel. Receive updates over email and contact our specialists directly.
If you need more information about this topic, visit hybris Experts to post your own question and interact with our community and experts.