Skip to content

Commit

Permalink
Further improvements, added XML
Browse files Browse the repository at this point in the history
  • Loading branch information
m-mohr committed Nov 24, 2020
1 parent e4813da commit a8cefa1
Show file tree
Hide file tree
Showing 4 changed files with 230 additions and 42 deletions.
69 changes: 41 additions & 28 deletions extensions/card4l-sar-nrb/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,35 +13,47 @@ This extension requires to use the following STAC extensions:
- [SAR](../sar/README.md)
- [Satelitle](../sat/README.md)

**To be discussed:**

+ Does view:azimuth correspond to PlatformHeading?
+ [Does it make sense to fill view:incidence_angle with the central angle between IncAngleNearRange and IncAngleFarRange?](https://github.com/radiantearth/stac-spec/issues/912)
+ Replace the Asset role `card4l` to `card4l-sar-nrb`?
+ Should product type be `NRB` or `RTC`?

**To do:**

* Use new [proc extension](https://github.com/radiantearth/stac-spec/pull/907) once available, for `ProductAttributes`
* Make recommendations for STAC Collections.

## STAC Item


| Field Name | XML Tag | Description |
| --------------- | ------------------------- | ------------------------------------------------------------ |
| stac_extensions | *n/a* | **REQUIRED.** Must contain at least the following values: `card4l-sar-nrb`, `projection`, `sar`, `sat` |
| id | `ProductID` | **REQUIRED.** |
| geometry | | **REQUIRED.** |
| bbox | `GeographicalBoundingBox` | **REQUIRED.** |
| geometry | *n/a* | **REQUIRED.** The geometry of the acquisition. |
| bbox | `GeographicalBoundingBox` | **REQUIRED.** The bounding box of the acquisition. |


## STAC Item Properties

### Common Metadata

| Field Name | XML Tag | Description |
| -------------- | ---------------------- | ------------------------------------------------------------ |
| datetime | `` | **REQUIRED.** |
| start_datetime | `FirstAcquistionDate` | **REQUIRED.** |
| end_datetime | `LastAcquistitionDate` | **REQUIRED.** |
| instruments | `Instrument` | **REQUIRED.** Check STAC for potential values, example: `c-sar` for Sentinel-1 |
| constellation | `SatelliteName` | If part of a constellation (e.g. `sentinel-1` for Sentinel 1A and 1B), lower-case |
| platform | `SatelliteName` | **REQUIRED.** If part of constellation, use specific name, e.g. `sentinel-1a`. Should not duplicate `constellation`, lower-case |
| Field Name | XML Tag | Description |
| -------------- | ----------------------------------- | ------------------------------------------------------------ |
| datetime | *n/a* | **REQUIRED.** Recommended to set to the central timestamp between `start_datetime` and `end_datetime`. |
| start_datetime | `FirstAcquistionDate` | **REQUIRED.** Start time of the first acquisition. |
| end_datetime | `LastAcquistitionDate` | **REQUIRED.** End time of the last acquisition. |
| instruments | `Instrument` | **REQUIRED.** Check STAC for potential values, example: `c-sar` for Sentinel-1 |
| constellation | *n/a*, derived from `SatelliteName` | If part of a constellation (e.g. `sentinel-1` for Sentinel 1A and 1B), lower-case |
| platform | `SatelliteName` | **REQUIRED.** If part of constellation, use specific name, e.g. `sentinel-1a`. *Must not* duplicate `constellation`, lower-case |

### Projection

| Field Name | XML Tag | Description |
| ------------------------------------------- | --------------------------- | ------------------------------------------------------------ |
| proj:epsg *or* proj:wkt2 *or* proj:projjson | `CoordinateReferenceSystem` | **REQUIRED.** At least one of the three fields needs to be populated, preferably `proj:epsg`. |
| Field Name | XML Tag | Description |
| ------------------------------------- | --------------------------- | ------------------------------------------------------------ |
| proj:epsg / proj:wkt2 / proj:projjson | `CoordinateReferenceSystem` | **REQUIRED.** At least one of the three fields needs to be populated, *preferably* `proj:epsg`. |

### SAR

Expand All @@ -51,31 +63,32 @@ This extension requires to use the following STAC extensions:
| sar:frequency_band | `RadarBand` | **REQUIRED.** |
| sar:center_frequency | `RadarCenterFrequency` | **REQUIRED.** Convert to GHz if required |
| sar:polarizations | `Polarizations` | **REQUIRED.** |
| sar:product_type | `` | **REQUIRED.** Always `NRB` |
| sar:product_type | *n/a* | **REQUIRED.** Always `NRB` |
| sar:observation_direction | `AntennaPointing` | **REQUIRED.** Lower-case |

### Satelite

| Field Name | XML Tag | Description |
| ------------------ | --------------- | ------------------------ |
| sat:orbit_state | `PassDirection` | **REQUIRED.** Lower-case |
| sat:relative_orbit | `` | **REQUIRED.** |
| sat:absolute_orbit | `` | |

Use PlatformHeading?

Use new proc extension for ProductAttributes?
| sat:relative_orbit | *n/a* | *Recommended.* |
| sat:absolute_orbit | *n/a* | *Recommended.* |

## STAC Item Links

* root / collection
* derived_from (via?)
* self
| Relation Type | XML Tag | Description |
| ------------------ | ------------------------ | ------------------ |
| derived_from | *n/a* | *Recommended.* Points back to the source's STAC Item. The STAC Item *should* contain a representation of the metadata from the `SourceAttributes` XML tag. |
| source | based on `SourceDataRepository` | **REQUIRED.** Points back to the source data. |
| about | `NRAlgorithm`, `RTCAlgorithm`, `DEMReference`, `EGMReference`, `AccuracyReference` | *Recommended.* Links from the given XML tags can be added as additional information about the product. |
| related | `SensorCalibration`, `PerformanceIndicators` | *Recommended.* Links from the given XML tags can be added as additional information about the source data. |

## STAC Item Assets

- angle
- area
- {polarization}
- mask
- metadata
| Asset Key | Role Name(s) | Additional properties | XML Tag | Description |
| ------------------ | --------------- | --------------- | --------------- | --------------- |
| angle | data | `proj:shape`, `proj:transform` | `LocalIncAngle` | **REQUIRED.** Points to the local incidence angle file. |
| area | data | `proj:shape`, `proj:transform` | `LocalContributingArea` | **REQUIRED.** Points to the normalized scattering area file. |
| hh / hv / vh / vv | data | `proj:shape`, `proj:transform`, `sar:polarizations` | `BackscatterMeasurementData` | **REQUIRED.** Points to the polarization file. |
| mask | data | `proj:shape`, `proj:transform` | `DataMask` | **REQUIRED.** Points to the data mask file. |
| metadata | metadata *and* card4l | - | *n/a* | **REQUIRED.** Points to the CARD4L metadata XML file. Media type: `application/xml` |
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
"href": "s3://<s3-bucket>/s1_nrb/s1_nrb_catalog.json"
},
{
"rel": "derived_from",
"rel": "source",
"href": "s3://sentinel-s1-l1c/GRD/2019/9/17/IW/SH/S1A_IW_GRDH_1SSH_20190917T083331_20190917T083356_029058_034C2E_07F6"
},
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
<?xml version="1.0" encoding="utf-8"?>
<product Type="Normalized Radar Backscatter">
<DocumentIdentifier>CARD4L_Metadata-specification_Normalised_Radar_Backscatter-v5.0</DocumentIdentifier>
<DataCollectionTime>
<NumberOfAcquisitions>1</NumberOfAcquisitions>
<FirstAcquistionDate>2019-09-17T08:33:31.300452</FirstAcquistionDate>
<LastAcquistitionDate>2019-09-17T08:33:56.299305</LastAcquistitionDate>
</DataCollectionTime>
<SourceAttributes acqID="1">
<SourceDataRepository type="URL">s3://sentinel-s1-l1c/GRD/2019/9/17/IW/SH/S1A_IW_GRDH_1SSH_20190917T083331_20190917T083356_029058_034C2E_07F6</SourceDataRepository>
<SatelliteName>Sentinel-1</SatelliteName>
<Instrument>Synthetic Aperture Radar</Instrument>
<SourceDataAcquistionTime>
<StartTime>2019-09-17T08:33:31.300452</StartTime>
<EndTime>2019-09-17T08:33:56.299305</EndTime>
</SourceDataAcquistionTime>
<AcquisitionParameters>
<RadarBand>C</RadarBand>
<RadarCenterFrequency units="Hz">5.40500045433435e+09</RadarCenterFrequency>
<ObservationMode>IW</ObservationMode>
<Polarizations>HH</Polarizations>
<AntennaPointing>Right</AntennaPointing>
<BeamID>TOPS</BeamID>
</AcquisitionParameters>
<OrbitInformation>
<PassDirection>ASCENDING</PassDirection>
<OrbitDataSource>RESORB</OrbitDataSource>
<OrbitDataFile>S1A_OPER_AUX_RESORB_OPOD_20190917T092453_V20190917T052323_20190917T084053.EOF</OrbitDataFile>
<PlatformHeading units="deg">-1.252027173623213e+01</PlatformHeading>
<OrbitMeanAltitude units="km">693</OrbitMeanAltitude>
</OrbitInformation>
<SourceProcParam>
<ProcessingFacility>Copernicus S1 Core Ground Segment - UPA</ProcessingFacility>
<ProcessingDate>2019-09-17T09:32:59.096913</ProcessingDate>
<SoftwareVersion>Sentinel-1 IPF, 003.10</SoftwareVersion>
<ProductID>S1A_IW_GRDH_1SSH_20190917T083331_20190917T083356_029058_034C2E_07F6</ProductID>
<ProductLevel>GRD</ProductLevel>
<AzumuthNumberOfLooks>1</AzumuthNumberOfLooks>
<RangeNumberOfLooks>5</RangeNumberOfLooks>
</SourceProcParam>
<ImageAttributes>
<ProductGeometry>Ground range</ProductGeometry>
<AzimuthPixelSpacing units="m">1.000000e+01</AzimuthPixelSpacing>
<RangePixelSpacing units="m">1.000000e+01</RangePixelSpacing>
<AzimuthResolution units="m">22.5/22.6/22.6</AzimuthResolution>
<RangeResolution units="m">20.4/20.3/20.5</RangeResolution>
<IncAngleNearRange units="deg">30.21513</IncAngleNearRange>
<IncAngleFarRange units="deg">45.66679561424327</IncAngleFarRange>
<SensorCalibration type="URL">https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-1-sar/sar-instrument/calibration</SensorCalibration>
</ImageAttributes>
<PerformanceIndicators type="URL">
https://sentinel.esa.int/documents/247904/2142675/Thermal-Denoising-of-Products-Generated-by-Sentinel-1-IPF
<NoiseEquivalentIntensity type="Sigma0" units="dB">-22 to -30</NoiseEquivalentIntensity>
</PerformanceIndicators>
</SourceAttributes>
<ProductAttributes>
<DataAccess>
<ProcessingFacility>Sentinel Hub, Sinergise</ProcessingFacility>
<ProcessingTime>2020-11-17T16:02:09.500899</ProcessingTime>
<SoftwareVersion>Batch API, v1.0</SoftwareVersion>
<RepositoryURL type="URL">S3://s3-bucket/Australia_SH_products/S26E149/2019/09/17/034C2E</RepositoryURL>
</DataAccess>
<AncillaryData DEM="Copernicus DEM, GLO-30" EGM="EGM2008, 1x1 minute grid in WGS84"/>
<ProductSampleSpacing>
<ProductColumnSpacing units="deg">0.0002</ProductColumnSpacing>
<ProductRowSpacing units="deg">0.0002</ProductRowSpacing>
</ProductSampleSpacing>
<Filtering>
<FilterApplied>false</FilterApplied>
</Filtering>
<GeographicalBoundingBox corner="UL">
<Latitude units="deg">-25.0</Latitude>
<Longitude units="deg">149.0</Longitude>
</GeographicalBoundingBox>
<GeographicalBoundingBox corner="UR">
<Latitude units="deg">-25.0</Latitude>
<Longitude units="deg">150.0</Longitude>
</GeographicalBoundingBox>
<GeographicalBoundingBox corner="LL">
<Latitude units="deg">-26.0</Latitude>
<Longitude units="deg">149.0</Longitude>
</GeographicalBoundingBox>
<GeographicalBoundingBox corner="LR">
<Latitude units="deg">-26.0</Latitude>
<Longitude units="deg">150.0</Longitude>
</GeographicalBoundingBox>
<GeographicalExtent corner="UL">
<Latitude units="deg">-25.0</Latitude>
<Longitude units="deg">149.31237461749706</Longitude>
</GeographicalExtent>
<GeographicalExtent corner="UR">
<Latitude units="deg">-25.0</Latitude>
<Longitude units="deg">150.0</Longitude>
</GeographicalExtent>
<GeographicalExtent corner="LL">
<Latitude units="deg">-26.0</Latitude>
<Longitude units="deg">149.31237461749706</Longitude>
</GeographicalExtent>
<GeographicalExtent corner="LR">
<Latitude units="deg">-26.0</Latitude>
<Longitude units="deg">150.0</Longitude>
</GeographicalExtent>
<ProductImageSize>
<NumberLines>5000</NumberLines>
<NumPixelsPerLine>5000</NumPixelsPerLine>
<HeaderSize units="bytes">0</HeaderSize>
<NumBorderPixels>0</NumBorderPixels>
</ProductImageSize>
<PixelCoordinateConvention>pixel centre</PixelCoordinateConvention>
<CoordinateReferenceSystem>EPSG:4326</CoordinateReferenceSystem>
<PerPixelMetadata>
<DataMask>
<FileName>s1_nrb_034C2E_S26E149_2019_09_17_MASK.tif</FileName>
<SampleType>Mask</SampleType>
<DataFormat>geotiff</DataFormat>
<DataType>UINT</DataType>
<BitsPerSample>8</BitsPerSample>
<ByteOrder>Little Endian</ByteOrder>
<BitValues>
<NoData>0</NoData>
<ValidData>1</ValidData>
<InvalidData>0</InvalidData>
</BitValues>
</DataMask>
<LocalContributingArea>
<FileName>s1_nrb_034C2E_S26E149_2019_09_17_AREA.tif</FileName>
<SampleType units="unitless">Normalized Scattering Area</SampleType>
<DataFormat>geotiff</DataFormat>
<DataType>FLOAT</DataType>
<BitsPerSample>32</BitsPerSample>
<ByteOrder>Little Endian</ByteOrder>
</LocalContributingArea>
<LocalIncAngle>
<FileName>s1_nrb_034C2E_S26E149_2019_09_17_ANGLE.tif</FileName>
<SampleType units="degrees / 360 * 254">Angle</SampleType>
<DataFormat>geotiff</DataFormat>
<NoDataValue>255</NoDataValue>
<DataType>FLOAT</DataType>
<BitsPerSample>8</BitsPerSample>
<ByteOrder>Little Endian</ByteOrder>
</LocalIncAngle>
</PerPixelMetadata>
<BackscatterMeasurementData>
<BackscatterMeasurement>Gamma-0</BackscatterMeasurement>
<BackscatterConvention>linear power</BackscatterConvention>
<Polarization>HH</Polarization>
<FileName>s1_nrb_034C2E_S26E149_2019_09_17_HH.tif</FileName>
<DataFormat>geotiff</DataFormat>
<DataType>FLOAT</DataType>
<BitsPerSample>32</BitsPerSample>
<ByteOrder>Little Endian</ByteOrder>
</BackscatterMeasurementData>
<BackscatterConversionEq units="dB">10*log10(DN)</BackscatterConversionEq>
<NoiseRemoval>
<NoiseRemovalApplied>true</NoiseRemovalApplied>
<NRAlgorithm type="URL">https://sentinel.esa.int/web/sentinel/radiometric-calibration-of-level-1-products</NRAlgorithm>
</NoiseRemoval>
<RadiometricTerrainCorrections>
<RTCAlgorithm type="URL">https://www.geo.uzh.ch/microsite/rsl-documents/research/publications/peer-reviewed-articles/201108-TGRS-Small-tcGamma-3809999360/201108-TGRS-Small-tcGamma.pdf</RTCAlgorithm>
<DEMOversamplingFactor>2.0</DEMOversamplingFactor>
<DemExpansionPercentage>1</DemExpansionPercentage>
</RadiometricTerrainCorrections>
<GeometricCorrection>
<DigitalElevationModel dem="Surface">
<DEMReference type="URL">https://spacedata.copernicus.eu/web/cscda/dataset-details?articleId=394198</DEMReference>
<DEMType>GLO-30</DEMType>
<DEMResampling>bilinear</DEMResampling>
<EGMReference type="URL">https://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008/egm08_wgs84.html</EGMReference>
<EGMType>EGM2008, 1x1 minute grid in WGS84</EGMType>
<EGMResampling>bilinear</EGMResampling>
</DigitalElevationModel>
<GeoCorrAccuracy>
<NorthernRMSE units="m">N/A</NorthernRMSE>
<EasternRMSE units="m">N/A</EasternRMSE>
<AccuracyReference type="URL">https://www.mdpi.com/2072-4292/9/6/607</AccuracyReference>
</GeoCorrAccuracy>
<GriddingConvention>pixel center</GriddingConvention>
</GeometricCorrection>
</ProductAttributes>
</product>
21 changes: 8 additions & 13 deletions extensions/card4l-sar-nrb/json-schema/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@
"sar:polarizations",
"sar:product_type",
"sar:observation_direction",
"sat:orbit_state",
"sat:relative_orbit"
"sat:orbit_state"
],
"anyOf": [
{
Expand Down Expand Up @@ -84,19 +83,15 @@
}
},
"links": {
"allOf": [
{
"type": "array",
"contains": {
"type": "object",
"properties": {
"rel": {
"const": "derived_from"
}
}
"type": "array",
"contains": {
"type": "object",
"properties": {
"rel": {
"const": "source"
}
}
]
}
},
"assets": {
"type": "object",
Expand Down

0 comments on commit a8cefa1

Please sign in to comment.