...
2. Development catalogue available here: https://radiantearth.github.io/stac-browser/#/external/pgstac.demo.cloudferro.com
Sentinel-
...
5P attributes to be discussed on
...
27.
...
05.2024
Sentinel- |
5P Odata |
attributes |
data type | to be removed | target STAC extension (in bold new attributes to be added) | STAC Counterpart | asset level | Description | Example STAC | Example Odata |
beginningDateTime |
DateTimeOffsetAttribute |
attribute |
start_datetime |
s2:tile_id
MGRS: tile_id ?
STAC Sentinel extensions
A priority should be to update the STAC Sentinel extensions to be less extensive at least. The plan is to find spaces in the general STAC community for these fields.
As a first step, we need to identify which fields are actually relevant to the general public.
General fields
For descriptions of the fields, please refer to the Sentinel extensions or the stactools-package implementations.
datetime | 2018-11-03T23:58:55.121559Z | 2024-05-17T00:23:29.000Z | ||||||
endingDateTime | DateTimeOffsetAttribute | core STAC attribute | end_datetime | 2018-11-03T23:58:55.121559Z | 2024-05-17T00:27:08.000Z | |||
instrumentShortName | StringAttribute | core STAC attribute | instruments | tropomi | TROPOMI | |||
orbitNumber | IntegerAttribute | sat | sat:absolute_orbit | 34158 | 34158 | |||
parentIdentifier | StringAttribute | X | urn:ogc:def:EOP:ESA:SENTINEL.S5P_TROP_L2__NO2___ | |||||
platformShortName | StringAttribute | core STAC attribute | constellation | sentinel-5p | SENTINEL-5P | |||
processingCenter | StringAttribute | processing | processing:facility | ? | pdgs-op | PDGS-OP | ||
processingDate | DateTimeOffsetAttribute | processing | processing:datetime | 2018-11-03T23:58:55.121559Z | 2024-05-17T01:26:59.613000+00:00 | |||
processingLevel | StringAttribute | processing | processing:level | L2 | L2 | |||
processingMode | StringAttribute | product | product:timeliness product:timeliness_category |
NRT | NRTI | |||
processorName | StringAttribute | X | TROPNLL2DP | |||||
processorVersion | StringAttribute | X | For Sentinel-5P I believe the processing:version should be taken from the netCDF global attribute processor_version | 20600 | ||||
productType | StringAttribute | product:type | product:type | L2__NO2___ | L2__NO2___ |
Sentinel-1 attributes to be discussed on 20.05.2024
Sentinel-1 Odata attributes | data type | to be removed | target STAC extension (in bold new attributes to be added) | STAC Counterpart | asset level | Description | Example STAC | Example Odata |
beginningDateTime | DateTimeOffsetAttribute | core STAC attribute | start_datetime datetime | 2018-11-03T23:58:55.121559Z | 2024-05-14T00:06:28.688Z | |||
completionTimeFromAscendingNode | DoubleAttribute | sat:anx_end_offset | 238903.7 | |||||
cycleNumber | IntegerAttribute | sat:orbit_cycle | sat:orbit_cycle | 322 | ||||
datatakeID | IntegerAttribute | EOPF | 429004 | |||||
endingDateTime | DateTimeOffsetAttribute | core STAC attribute | end_datetime | 2018-11-03T23:59:55.112875Z | 2024-05-14T00:06:53.687Z | |||
instrumentConfigurationID | IntegerAttribute | EOPF | 7 | |||||
instrumentShortName | StringAttribute | core STAC attribute | instruments | sar | SAR | |||
operationalMode | StringAttribute | sar:instrument_mode | sar:instrument_mode | IW | IW | |||
orbitDirection | StringAttribute | sat | sat:orbit_state | descending | ASCENDING | |||
orbitNumber | IntegerAttribute | sat | sat:absolute_orbit | 42767 | 53860 | |||
origin | StringAttribute | processing | processing:facility | production service-serco | ESA | |||
platformSerialIdentifier | StringAttribute | core STAC attribute | platform | sentinel-1a | A | |||
platformShortName | StringAttribute | core STAC attribute | constellation | sentinel-1 | SENTINEL-1 | |||
polarisationChannels | StringAttribute | sar:polarizations | sar:polarizations | '[VV,VH]' | VV&VH | |||
processingCenter | StringAttribute | processing | processing:facility | production service-serco | Production Service-SERCO | |||
processingDate | DateTimeOffsetAttribute | processing | processing:datetime | 2024-05-14T08:04:12.593998+00:00 | ||||
processingLevel | StringAttribute | processing | processing:level | L1 | LEVEL1 | |||
processorName | StringAttribute | X | to be dropped | Sentinel-1 IPF | ||||
processorVersion | StringAttribute | X | 3.71 | |||||
processing:version (PR) | processing:version (PR) | to be added in the future? what to do with s-1 baseline? | ||||||
productClass | StringAttribute | X | S | |||||
productComposition | StringAttribute | X | Slice/Slice-Partial | |||||
productType | StringAttribute | product:type | IW_GRDH_1S | IW_GRDH_1S | ||||
product:type | sar:product_type | to be moved to product:type (PR) | GRD | |||||
relativeOrbitNumber | IntegerAttribute | sat:relative_orbit | sat:relative_orbit | 63 | ||||
segmentStartTime | DateTimeOffsetAttribute | X | 2024-05-14T00:05:09.988000+00:00 | |||||
sliceNumber | IntegerAttribute | X | 4 | |||||
sliceProductFlag | BooleanAttribute | X | false | |||||
startTimeFromAscendingNode | DoubleAttribute | sat:anx_start_offset | milliseconds from anx crossing | 213904.7 | ||||
swathIdentifier | StringAttribute | X | IW | |||||
timeliness | StringAttribute | product | product:timeliness product:timeliness_category |
Fast-24H | Fast-24h | |||
totalSlices | IntegerAttribute | X | 20 | |||||
sar:frequency_band | sar:frequency_band | collection level? | C |
Additional attributes for bursts:
burst attributes | example | to be added to STAC |
linesPerBurst | 1493 | |
samplesPerBurst | 21673 | |
subswath | "IW1" should be string | sar:subswaths_id |
polarization | vh | sar:polarizations |
start line | 1493 | |
azimuthTime | 2024-05-10T00:40:19.788314 | |
sensingTime | 2024-05-10T00:40:19.788314 | start_datetime datetime |
byteOffset | 129538967 | |
burstId_relative | 8690 should be string used to be called frame_id | sar:relative_burst |
burstId_absolute | 115560765 | |
burstID_internal | 2 |
Sentinel-3 attributes to be discussed on 13.05.2024
Sentinel-3 Odata attributes | data type | to be removed | target STAC extension (in bold new attributes to be added) | STAC Counterpart | asset level | Description | Example STAC | Example Odata |
baselineCollection | StringAttribute | X | X | processing:version | OL__L1_.003.03.02, reflected in the: processing:version | 003 | ||
beginningDateTime | DateTimeOffset | start_datetime datetime | start_datetime datetime | 2023-07-10T00:47:16.702921Z | 2024-05-04T00:02:03.199Z | |||
cloudCover | DoubleAttribute | ? | eo:cloud_cover | 28 | 28 | |||
coastalCover | DoubleAttribute | X | 1 | 0.009 | ||||
cycleNumber | IntegerAttribute | sat:orbit_cycle | sat:orbit_cycle | The orbital cycle is 27 days (14+7/27 orbits per day, 385 orbits per cycle). The orbit cycle is the time taken for the satellite to pass over the same geographical point on the ground. | 112 | |||
endingDateTime | DateTimeOffset | core STAC attribute | end_datetime | 2023-07-10T00:47:16.702921Z | 2024-05-04T00:05:03.199Z | |||
freshInlandWaterCover | DoubleAttribute | X | s3:fresh_inland_water | 0 | 0 | |||
instrumentShortName | StringAttribute | core STAC attribute | instruments | olci | OLCI | |||
landCover | DoubleAttribute | ? | s3:land | 2 | 2 | |||
operationalMode | StringAttribute | ? | To be harmonized across missions | Earth Observation | ||||
orbitDirection | StringAttribute | sat | sat:orbit_state | descending | DESCENDING | |||
orbitNumber | IntegerAttribute | sat | sat:absolute_orbit | 42767 | 42767 | |||
platformSerialIdentifier | StringAttribute | core STAC attribute | platform | sentinel-3a | A | |||
platformShortName | StringAttribute | core STAC attribute | constellation | sentinel-3 | SENTINEL-3 | |||
processingDate | DateTimeOffset | processing | processing:datetime | 2023-07-10T00:47:16.702921Z | 2024-05-04T02:11:42+00:00 | |||
processingLevel | StringAttribute | processing | processing:level | L2 | 2 | |||
processorName | StringAttribute | X | To be dropped and discussed with ESA experts. | PUG | PUG | |||
processorVersion | StringAttribute | X |
| 03.50 | ||||
<sentinel3: processingBaseline>PB_ID.xxx.yy.zz </sentinel3: processingBaseline> from SAFE does not exists in Odata | processing:version OL__L1_.003.03.02 OL - instrument L1 - processing level 003 - baselineCollection 03.02 - S3 processorVersion | To be discussed with Jordi. https://sentinels.copernicus.eu/web/sentinel/technical-guides/sentinel-3-olci/processing-baseline | <sentinel3: processingBaseline>PB_ID.xxx.yy.zz </sentinel3: processingBaseline> <PB_ID> is unique and has as fixed format with 7 alphanumeric characters. | |||||
productType | StringAttribute | product | product:type | OL_2_LFR___ | OL_2_LFR___ | |||
relativeOrbitNumber | IntegerAttribute | sat:relative_orbit | sat:relative_orbit | 59 | 59 | |||
salineWaterCover | DoubleAttribute | X | s3:saline_water | 44 | 2 | |||
tidalRegionCover | DoubleAttribute | X | s3:tidal_region | 2 | 0 | |||
timeliness | StringAttribute | product | product:timeliness product:timeliness_category |
NR | NR |
Sentinel-2 attributes to be discussed on 06.05.2024
Mappings not directly defined in the Sentinel extensions:
Sentinel-2 Odata attributes | data type | to be removed | target STAC extension (in bold new attributes to be added) | querable | STAC Counterpart | asset level | Description | Example STAC | Example Odata |
mediaContentType | StringAttribute | X | application/octet-stream | ||||||
Id | StringAttribute | X | Odata internal id | X | 3e3b9d1a-18d5-43b8-83d8-564587ec3070 | ||||
Name | StringAttribute | id (core STAC attribute) | X | s2:product_uri (to be removed) | product name. STAC "id" is without .SAFE | S2A_MSIL2A_20240308T100841_N0510_R022_T33UVR_20240308T143352 | S2B_MSIL2A_20240419T001429_N0510_R116_T56NNG_20240419T013152.SAFE | ||
ContentType | StringAttribute | core STAC attribute | type | X | differs between Odata and STAC | image/jp2 | application/octet-stream | ||
ContentLength | IntegerAttribute | file | file:size | X | in bytes | 720970508 | 720970508 | ||
OriginDate | DateTimeOffsetAttribute | core STAC attribute | X | into eopf time of the publication at prip | 2024-03-08T14:33:52.000000Z | 2024-04-19T02:13:20.000Z | |||
PublicationDate | DateTimeOffsetAttribute | core STAC attribute | X | published | 2024-03-08T14:33:52.000000Z | 2024-04-19T02:20:17.555Z | |||
ModificationDate | DateTimeOffsetAttribute | core STAC attribute | X | updated | 2024-03-08T14:33:52.000000Z | 2024-04-19T02:21:14.300Z | |||
Checksum | Checksum | file | file:checksum | X | Blake3/MD5 in Odata vs Multihash in STAC | ||||
ContentDate.Start | DateTimeOffsetAttribute | core STAC attribute | X | datetime start_datetime | 2024-04-19T00:14:29.024Z | ||||
ContentDate.End | DateTimeOffsetAttribute | core STAC attribute | X | end_datetime | 2024-04-19T00:14:29.024Z | ||||
Footprint | X | X | X | X | |||||
GeoFootprint | core STAC attribute | geometry | "GeoFootprint":{"type":"Polygon","coordinates": [[[153.9866661847601,0.945453049017732], [153.9866661847601,0.945453049017732]]]} | ||||||
origin | StringAttribute | processing | processing:facility | from manifest or EUMETSAT | |||||
cloudCover | DoubleAttribute | eo | X | eo:cloud_cover | 14.583966 | ||||
orbitNumber | IntegerAttribute | sat | sat:absolute_orbit | 37179 | |||||
sourceProduct | StringAttribute | X | S2B_OPER_MSI_L2A_TL_2BPS_20240419T013152_A037179_T56NNG_N05.10 S2B_OPER_MSI_L2A_DS_2BPS_20240419T013152_S20240419T001424_N05.10 | ||||||
processingLevel | StringAttribute | processing | processing:level | L2 | S2MSI2A | ||||
platformShortName | StringAttribute | core STAC attribute | constellation | sentinel-2 | SENTINEL-2 | ||||
instrumentShortName | StringAttribute | core STAC attribute | instruments | msi | MSI | ||||
relativeOrbitNumber | IntegerAttribute | sat | X | sat:relative_orbit | 22 | 116 | |||
sourceProductOriginDate | StringAttribute | X | 2024-04-19T02:13:20Z 2024-04-19T01:32:14Z | ||||||
platformSerialIdentifier | StringAttribute | core STAC attribute | platform | sentinel-2a | A | ||||
beginningDateTime | DateTimeOffsetAttribute | core STAC attribute | start_datetime datetime | 2024-03-08T14:33:52.000000Z | 2024-04-19T00:14:29.024Z | ||||
endingDateTime | DateTimeOffsetAttribute | core STAC attribute | end_datetime | 2024-03-08T14:33:52.000000Z | 2024-04-19T00:14:29.024Z | ||||
granuleIdentifier | StringAttribute | X | None | s2:granule_id (removed) | S2A_OPER_MSI_L2A_TL_2APS_20240308T143352_A045493_T33UVR_N05.10 | S2A_OPER_MSI_L2A_TL_2APS_20240308T143352_A045493_T33UVR_N05.10 |
Sentinel-2 STAC extension attributes to be discussed (not all present in Odata):
- s2:generation_time (also in s1)
- s2:datatake_id (also in s1)
- s2:product_type (also in s1, s3, s5)
- s2:tile_id
- s2:product_uri
- s2:datastrip_id
- s2:datatake_type
- s2:processing_baseline
- s2:reflectance_conversion_factor
See the table below for details.
STAC Sentinel extensions
A priority should be to update the STAC Sentinel extensions to be less extensive at least. The plan is to find spaces in the general STAC community for these fields.
As a first step, we need to identify which fields are actually relevant to the general public.
General fields
For descriptions of the fields, please refer to the Sentinel extensions or the stactools-package implementations.
Idea is to keep a small variant of the Sentinel extensions as best practices, mostly using other extensions.
EOPF is for "private" fields that externals are not interested in.
Field name | Data Type | Relevant to general public? | Potential future extension or field | Comments | ||||||||||||||
Multi-Mission | ||||||||||||||||||
s1:processing_datetime s2:generation_time | date-time | Yes | processing:datetime (PR) | OData: processingDate S2 Example: 2024-04-19T01:31:52+00:00 (in STAC Z instead of +00:00) | ||||||||||||||
s1:datatake_id s2:datatake_id | string | Yes | to be included in the CDSE STAC and added to eopf extension | OData: productGroupId S2 Example: GS2A_20240308T100841_045493_N05.10 | ||||||||||||||
s2:product_type s3:product_type s5p:product_type | string | No? | product:type potentially restricted in s2 extension | What's the difference between name and type? Can it be just one property, e.g. the name? S2 example: S2MSI2A | ||||||||||||||
s3:product_name s5p:product_name | string | Yes? | ||||||||||||||||
s1:product_timeliness s3:processing_timeliness | string | Yes? | product:timeliness potentially restricted in s2 extension | Can we find a common set of values for this? e.g. ISO 8601 Durations? | ||||||||||||||
Sentinel-1 | ||||||||||||||||||
s1:instrument_configuration_ID | string | No? | ||||||||||||||||
s1:orbit_source | string | No? | ||||||||||||||||
s1:product_identifier | string | ? | externalIds? | |||||||||||||||
s1:resolution | string | No? | ||||||||||||||||
s1:slice_number | string | No | ||||||||||||||||
s1:total_slices | string | No | ||||||||||||||||
Sentinel-2 | ||||||||||||||||||
s2:tile_id | string | Yes? | grid:code (querable) |
| ||||||||||||||
s2:product_uri | string | NO To be removed | NONE | Might be needed in the S2 extension by some other users of the extensions. | ||||||||||||||
s2:datastrip_id | string | Yes? | EOPF | OData field: datastripId Example: S2A_OPER_MSI_L2A_DS_2APS_20240308T143352_S20240308T101546_N05.10 | ||||||||||||||
s2:datatake_type | string | ON HOLD similar to instrument_mode in the SAR | EOPF | OData: operationalMode Example: INS-NOBS | ||||||||||||||
s2:processing_baseline | string | Yes | processing:version (PR) | OData: processorVersion, example: 5.1 STAC example: 05.10 | ||||||||||||||
Field name | Data Type | Relevant to general public? | Potential future extension or field | Comments | ||||||||||||||
Multi-Mission | s1:processing_datetime s2:generation_time | date-time | Yes | processing:datetime (PR) created in assets | s1:datatake_id s2:datatake_id | string | Yes | externalIds? | s2:product_type s3:product_type s5p:product_type | string | No? | What's the difference between name and type? Can it be just one property, e.g. the name? | s3:product_name s5p:product_name | string | Yes? | s1:product_timeliness s3:processing_timeliness | string | ? | Can we find a common set of values for this? |
Sentinel-1 | s1:instrument_configuration_ID | string | No? | s1:orbit_source | string | No? | s1:product_identifier | string | ? | externalIds? | s1:resolution | string | No? | s1:slice_number | string | No | s1:total_slices | string | No |
Sentinel-2 | ||||||||||||||||||
s2:tile_id | string | Yes? | externalIds? MGRS: tile_id ? | s2:product_uri | string | Yes? | as a normal STAC Link | s2:datastrip_id | string | Yes? | externalIds? | s2:datatake_type | string | ? | s2:processing_baseline | string | Yes? | processing:version (PR) |
s2:reflectance_conversion_factor | number | ? | s2:degraded_msi_data_percentage | number | No? | To be removed | To be removed | Example: 1.01707999697991 | ||||||||||
Sentinel-3 | ||||||||||||||||||
s3:gsd | various | No?gsd as a single value? | to be dropped or used acrossed all missions "gsd" STAC core attribute | |||||||||||||||
s3:lrm_mode | number | Yes? | altm:insinstrument_type | |||||||||||||||
s3:sar_mode | numbernumber | Yes? | altm:insinstrument_mode | |||||||||||||||
Sentinel-3 (Asset-level properties) | ||||||||||||||||||
s3:spatial_resolution (in assets) | [number] | ? | raster:spatial_resolution as a single value? | |||||||||||||||
s3:altimetry_bands (in assets) | [Altimetry Band Object] | ? | bands STAC core attribute in STAC 1.1 | |||||||||||||||
Sentinel-5 | ||||||||||||||||||
s5p:processing_mode | string | ? | ||||||||||||||||
s5p:collection_identifier | string | ? | ||||||||||||||||
s5p:spatial_resolution | [number] | ? | raster:spatial_resolution as a single value? | |||||||||||||||
Sentinel-5 Container Objects | ||||||||||||||||||
s5p:aer_ai | Aer Ai Object | Flatten into top-level properties | None | |||||||||||||||
s5p:aer_lh | Aer Lh Object | Flatten into top-level properties | None | |||||||||||||||
s5p:ch4 | CH4 Object | Flatten into top-level properties | None | |||||||||||||||
s5p:cloud | Cloud Object | Flatten into top-level properties | None | |||||||||||||||
s5p:co | CO Object | Flatten into top-level properties | None | |||||||||||||||
s5p:hcho | HCHO Object | Flatten into top-level properties | None | |||||||||||||||
s5p:no2 | NO2 Object | Flatten into top-level properties | None | |||||||||||||||
s5p:npbd3 | NPBD Object | Flatten into top-level properties | None | |||||||||||||||
s5p:npbd6 | NPBD Object | Flatten into top-level properties | None | |||||||||||||||
s5p:npbd7 | NPBD Object | Flatten into top-level properties | None | |||||||||||||||
s5p:o3 | O2 Object | Flatten into top-level properties | None | |||||||||||||||
s5p:o3_tcl | O3 TCL Object | Flatten into top-level properties | None | |||||||||||||||
s5p:so2 | SO2 Object | Flatten into top-level properties | None | |||||||||||||||
Sentinel 5P Container Object Fields These fields appear in at least one of the Sentinel-5 Container Objects above. | ||||||||||||||||||
input_band | string / [string] | No? | ||||||||||||||||
irradiance_accompanied | string | No? | ||||||||||||||||
geolocation_grid_from_band | integer | No? | ||||||||||||||||
cloud_mode | string | No? | ||||||||||||||||
shape_ccd | [integer] | No? | ||||||||||||||||
shape_csa | [integer] | No? | ||||||||||||||||
stratosphere_start_datetime | string | ? | ||||||||||||||||
stratosphere_end_datetime | string | ? | ||||||||||||||||
troposphere_start_datetime | string | ? | ||||||||||||||||
troposphere_end_datetime | string | ? | ||||||||||||||||
input_orbits | [integer] | No? | ||||||||||||||||
input_files | [string] | No? | ||||||||||||||||
analysed_s5p_band | integer | No? | ||||||||||||||||
VIIRS_band | [integer] | No? | ||||||||||||||||
number_of_scaled_fov | integer | No? |
...
Field name | Relevant to general public? | Potential future extension or field | Comments | ||
General and Other | |||||
s3:land | ? | ||||
s2:unclassified_percentage? | Yes, not queryable | classification:classes[*].percentage | |||
Clouds | |||||
s2:cloud_shadow_percentage | ? | Yes, not queryable | classification:classes[*].percentage | ||
s2:high_proba_clouds_percentage | Yes, not queryable | classification:classes[*].percentage? | |||
s2:medium_proba_clouds_percentage | ? | _clouds_percentage | Yes, not queryable | classification:classes[*].percentage | |
s2:thin_cirrus_percentage | Yes, not queryable | classification:classes[*].percentage? | |||
Water and Coastal | |||||
s2:water_percentage | Yes, queryable ? | new: eo:water_cover ? + classification:classes[*].percentage | |||
s3:closed_sea | ? | ||||
s3:fresh_inland_water | ? | ||||
s3:open_ocean | ? | ||||
s3:saline_water | ? | ||||
s3:tidal_region | ? | ||||
s3:coastal | ? | ||||
s3:continental_ice | ? | ||||
Unusable | |||||
s2:nodata_pixel_percentagepercentage | Yes, queryable | new: raster:nodata_percentage ? + classification:classes[*].percentageYes | |||
s3:bright | ? | ||||
s3:dubious_samples | ? | ||||
s3:duplicated | ? | ||||
s3:invalid | ? | ||||
s3:out_of_range | ? | ||||
s2:dark_features_percentage | Yes, not queryable | classification:classes[*].percentage? | |||
s3:saturated s2:saturated_defective_pixel_percentage | Yes, not queryable | classification:classes[*].percentage? | |||
Vegetation | |||||
s2:vegetation_percentage | Yes, queryable? | new: eo:vegetation_cover ? + classification:classes[*].percentage | |||
s2:not_vegetated_percentage | Yes, not queryable | classification:classes[*].percentage? |
Depending on the asset structure, some percentages may be provided as a classification percentages as proposed in https://github.com/stac-extensions/classification/pull/49
...