Skip to content

Commit

Permalink
feat: Add SAR swath information
Browse files Browse the repository at this point in the history
  • Loading branch information
emmanuelmathot committed Jun 20, 2024
1 parent 5bc2394 commit 64712ae
Show file tree
Hide file tree
Showing 3 changed files with 147 additions and 54 deletions.
129 changes: 83 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,22 @@ To describe frame start and end times, use the

## Item Properties or Asset Fields

| Field Name | Type | Description |
| --------------------------- | --------- | ------------------------------------------------------------ |
| sar:instrument_mode | string | **REQUIRED.** The name of the sensor acquisition mode that is commonly used. This should be the short name, if available. For example, `WV` for "Wave mode" of Sentinel-1 and Envisat ASAR satellites. |
| sar:frequency_band | string | **REQUIRED.** The common name for the frequency band to make it easier to search for bands across instruments. See section "Common Frequency Band Names" for a list of accepted names. |
| sar:center_frequency | number | The center frequency of the instrument, in gigahertz (GHz). |
| sar:polarizations | \[string] | **REQUIRED.** Any combination of polarizations. |
| sar:product_type | string | ***DEPRECATED** in favor of [`product:type`](https://github.com/stac-extensions/product).* The product type, for example `SSC`, `MGD`, or `SGC` |
| sar:resolution_range | number | The range resolution, which is the maximum ability to distinguish two adjacent targets perpendicular to the flight path, in meters (m). |
| sar:resolution_azimuth | number | The azimuth resolution, which is the maximum ability to distinguish two adjacent targets parallel to the flight path, in meters (m). |
| sar:pixel_spacing_range | number | The range pixel spacing, which is the distance between adjacent pixels perpendicular to the flight path, in meters (m). Strongly RECOMMENDED to be specified for products of type `GRD`. |
| sar:pixel_spacing_azimuth | number | The azimuth pixel spacing, which is the distance between adjacent pixels parallel to the flight path, in meters (m). Strongly RECOMMENDED to be specified for products of type `GRD`. |
| sar:looks_range | number | Number of range looks, which is the number of groups of signal samples (looks) perpendicular to the flight path. |
| sar:looks_azimuth | number | Number of azimuth looks, which is the number of groups of signal samples (looks) parallel to the flight path. |
| sar:looks_equivalent_number | number | The equivalent number of looks (ENL). |
| sar:observation_direction | string | Antenna pointing direction relative to the flight trajectory of the satellite, either `left` or `right`. |
| Field Name | Type | Description |
| --------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| sar:instrument_mode | string | **REQUIRED.** The name of the sensor acquisition mode that is commonly used. This should be the short name, if available. For example, `WV` for "Wave mode" of Sentinel-1 and Envisat ASAR satellites. |
| sar:frequency_band | string | **REQUIRED.** The common name for the frequency band to make it easier to search for bands across instruments. See section "Common Frequency Band Names" for a list of accepted names. |
| sar:center_frequency | number | The center frequency of the instrument, in gigahertz (GHz). |
| sar:polarizations | \[string] | **REQUIRED.** Any combination of polarizations. |
| sar:product_type | string | ***DEPRECATED** in favor of [`product:type`](https://github.com/stac-extensions/product).* The product type, for example `SSC`, `MGD`, or `SGC` |
| sar:resolution_range | number | The range resolution, which is the maximum ability to distinguish two adjacent targets perpendicular to the flight path, in meters (m). |
| sar:resolution_azimuth | number | The azimuth resolution, which is the maximum ability to distinguish two adjacent targets parallel to the flight path, in meters (m). |
| sar:pixel_spacing_range | number | The range pixel spacing, which is the distance between adjacent pixels perpendicular to the flight path, in meters (m). Strongly RECOMMENDED to be specified for products of type `GRD`. |
| sar:pixel_spacing_azimuth | number | The azimuth pixel spacing, which is the distance between adjacent pixels parallel to the flight path, in meters (m). Strongly RECOMMENDED to be specified for products of type `GRD`. |
| sar:looks_range | number | Number of range looks, which is the number of groups of signal samples (looks) perpendicular to the flight path. |
| sar:looks_azimuth | number | Number of azimuth looks, which is the number of groups of signal samples (looks) parallel to the flight path. |
| sar:looks_equivalent_number | number | The equivalent number of looks (ENL). |
| sar:observation_direction | string | Antenna pointing direction relative to the flight trajectory of the satellite, either `left` or `right`. |
| sar:swath | \[Beam Object] | Composition of the swath of the SAR acquisition. |

**Note:** In this specification *range* values are meant to be measured perpendicular to the flight path and *azimuth* values
are meant to be measured parallel to the flight path.
Expand All @@ -61,36 +62,72 @@ for instance for `HH+HV` add both `HH` and `HV`.
**Important:** In the `properties` of a STAC Item `sar:polarizations` must be a set with unique elements.
In assets `sar:polarizations` can contain duplicate elements and, if possible, the polarizations must appear in the same order as in the file.

### Beam Object

The `sar:swath` field is an array of objects that describe the composition of the swath of the SAR acquisition.
According to the instrument mode defined in `sar:instrument_mode`, the `sar:swath` is composed of one or more beams.

| Field Name | Type | Description |
| -------------- | --------------------- | -------------------------------------------------------------------------------------- |
| id | string | **REQUIRED.** The unique identifier of the beam. It can be the subswath identifier |
| relative_burst | number | Identification number that uniquely identifies a burst cycle within each repeat cycle. |
| polarizations | \[string] | Any combination of polarizations. |
| view:* | View extension fields | Additional fields from the [View extension](https://github.com/stac-extensions/view) |

> \[!NOTE]
> If the value of a field repeats for all beams, it is recommended to include it only in the first beam.
Example of a `sar:swath` field:

```json
"sar:swath": [
{
"id": "IW1",
"relative_burst": 541,
"polarizations": ["VV", "VH"],
"view:incident_angle": 32.0
},
{
"id": "IW2",
"view:incident_angle": 34.0
},
{
"id": "IW3",
"view:incident_angle": 36.0
}
]
```

### Common Frequency Band Names

The `sar:frequency_band` is the name that is commonly used to refer to that band's spectral
properties. The table below shows the common name based on the wavelength and frequency ranges for several SAR satellites.

| Common Name | Wavelength Range (cm) | Frequency Range (GHz) | Satellites |
| ----------- | --------------------- | --------------------- | ---------- |
| P | 30 - 120 | 0.25 - 1 | |
| L | 15 - 30 | 1 - 2 | ALOS, JERS, NISAR, SOACOM |
| S | 7.5 - 15 | 2 - 4 | HJ-1C |
| C | 3.8 - 7.5 | 4 - 8 | EnviSat, ERS, Radarsat, Risat-1, Sentinel-1 |
| Common Name | Wavelength Range (cm) | Frequency Range (GHz) | Satellites |
| ----------- | --------------------- | --------------------- | -------------------------------------------------- |
| P | 30 - 120 | 0.25 - 1 | |
| L | 15 - 30 | 1 - 2 | ALOS, JERS, NISAR, SOACOM |
| S | 7.5 - 15 | 2 - 4 | HJ-1C |
| C | 3.8 - 7.5 | 4 - 8 | EnviSat, ERS, Radarsat, Risat-1, Sentinel-1 |
| X | 2.4 - 3.8 | 8 - 12.5 | Cosmo-SkyMed, TerraSAR-X, TanDEM-X, PAZ, KOMPSat-5 |
| Ku | 1.7 - 2.4 | 12.5 - 18 | |
| K | 1.1 - 1.7 | 18 - 26.5 | |
| Ka | 0.75 - 1.1 | 26.5 - 40 | |
| Ku | 1.7 - 2.4 | 12.5 - 18 | |
| K | 1.1 - 1.7 | 18 - 26.5 | |
| Ka | 0.75 - 1.1 | 26.5 - 40 | |

### Product type

The product type for SAR data defines the type of processed data contained in the assets.
A list of suggestions for [`product:type`](https://github.com/stac-extensions/product) include:

| product:type | Type | Description |
| ------------ | --------- | ----------- |
| SSC | complex | Single-look Slant-range Complex image (standard SLC) |
| MGD | amplitude | Multilooked Ground-range Detected image |
| GRD | amplitude | Multilooked Ground-range Detected image (used by Sentinel-1) |
| GEC | amplitude | Geocoded Ellipsoid Corrected image |
| GTC | amplitude | Geocoded Terrain Corrected image |
| RTC | amplitude | Geocoded Radiometrically Terrain Corrected image |
| SGC | complex | Single-look Ground projected Complex image |
| product:type | Type | Description |
| ------------ | --------- | --------------------------------------------------------------- |
| SSC | complex | Single-look Slant-range Complex image (standard SLC) |
| MGD | amplitude | Multilooked Ground-range Detected image |
| GRD | amplitude | Multilooked Ground-range Detected image (used by Sentinel-1) |
| GEC | amplitude | Geocoded Ellipsoid Corrected image |
| GTC | amplitude | Geocoded Terrain Corrected image |
| RTC | amplitude | Geocoded Radiometrically Terrain Corrected image |
| SGC | complex | Single-look Ground projected Complex image |
| SLC | complex | Single-look Ground projected Complex image (used by Sentinel-1) |

This can vary by data provider, who all may use slightly different names.
Expand All @@ -113,19 +150,19 @@ to provide clients with more information about the assets in an item. The follow
This list should not be considered definitive, and implementors are welcome to use other asset roles. If consensus and tooling consolidates around
these role names then they will be specified in the future as more standard than just 'best practices'.

| Role Name | Description |
| --------- | ---------------------------------------------------------------------- |
| local-incidence-angle | Points to the local incidence angle file. |
| ellipsoid-incidence-angle | Points to the ellipsoid incidence angle file. |
| noise-power | Points to the noise power file. |
| amplitude | Points to the intensity file with focused SAR data that has been ground range detected (e.g. GRD). |
| magnitude | Points to the intensity file where data are represented as complex numbers containing amplitude and phase information (e.g SLC). |
| sigma0 | Points to the radar backscatter file where data is referenced in ground surface. It is often derived from an `amplitude` or a `magnitude` role asset. |
| beta0 | Points to the radar backscatter file where data is referenced in the slant range plane and is radiometrically calibrated. It is often derived from an `amplitude` or a `magnitude` role asset. |
| gamma0 | Points to the radar backscatter file where data is referenced in the plane perpendicular to the line of sight. It is often derived from an `amplitude` or a `magnitude` role asset. |
| date-offset | Points to the date-offset file. |
| covmat | Points to the Points to the Normalized Polarimetric Radar Covariance Matrix (CovMat) file. |
| prd | Points to the Polarimetric Radar Decomposition (PRD) file. |
| Role Name | Description |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| local-incidence-angle | Points to the local incidence angle file. |
| ellipsoid-incidence-angle | Points to the ellipsoid incidence angle file. |
| noise-power | Points to the noise power file. |
| amplitude | Points to the intensity file with focused SAR data that has been ground range detected (e.g. GRD). |
| magnitude | Points to the intensity file where data are represented as complex numbers containing amplitude and phase information (e.g SLC). |
| sigma0 | Points to the radar backscatter file where data is referenced in ground surface. It is often derived from an `amplitude` or a `magnitude` role asset. |
| beta0 | Points to the radar backscatter file where data is referenced in the slant range plane and is radiometrically calibrated. It is often derived from an `amplitude` or a `magnitude` role asset. |
| gamma0 | Points to the radar backscatter file where data is referenced in the plane perpendicular to the line of sight. It is often derived from an `amplitude` or a `magnitude` role asset. |
| date-offset | Points to the date-offset file. |
| covmat | Points to the Points to the Normalized Polarimetric Radar Covariance Matrix (CovMat) file. |
| prd | Points to the Polarimetric Radar Decomposition (PRD) file. |

## Contributing

Expand Down
9 changes: 9 additions & 0 deletions examples/sentinel-1.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@
"sar:looks_equivalent_number": 2.7,
"sar:frequency_band": "C",
"sar:center_frequency": 5.405,
"sar:swath": [
{
"id": "EW",
"polarizations": [
"HH"
],
"view:incident_angle": 40.1
}
],
"product:type": "GRD"
},
"geometry": {
Expand Down
63 changes: 55 additions & 8 deletions json-schema/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -118,13 +118,7 @@
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"enum": [
"HH",
"VV",
"HV",
"VH"
]
"$ref": "#/definitions/polarizations"
}
},
"sar:product_type": {
Expand Down Expand Up @@ -179,6 +173,13 @@
"left",
"right"
]
},
"sar:swath": {
"title": "Swath",
"type": "array",
"items": {
"$ref": "#/definitions/beam"
}
}
},
"patternProperties": {
Expand All @@ -187,6 +188,52 @@
}
},
"additionalProperties": false
},
"beam": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"title": "Beam identification",
"type": "string",
"minLength": 1
},
"relative_burst": {
"title": "Relative burst identificator",
"type": "integer",
"minimum": 0
},
"polarizations": {
"title": "Polarizations",
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/polarizations"
}
}
},
"additionalProperties": true
},
{
"$ref": "https://stac-extensions.github.io/view/v1.0.0/schema.json#/definitions/fields",
"additionalProperties": true
},
{
"required": [
"id"
]
}
]
},
"polarizations": {
"type": "string",
"enum": [
"HH",
"VV",
"HV",
"VH"
]
}
}
}
}

0 comments on commit 64712ae

Please sign in to comment.