easysnowdata.sar.sentinel1.local_incidence_angle#
- easysnowdata.sar.sentinel1.local_incidence_angle(aoi: Any = None, time: Any = None, *, source: str | None = None, relative_orbit: int | None = None, orbit_state: str | None = None, incidence_angle: float | DataArray | None = None, resolution: float | None = None, crs: Any = 'utm', dem: DataArray | None = None, mask: bool = True, chunks: Any = 'easysnowdata-default', **kwargs: Any) Dataset[source]#
Local incidence angle (and, where available, the layover/shadow mask).
The local incidence angle is a property of one acquisition geometry, not of a place: it depends on which relative orbit (track) the scene came from, whether the pass was ascending or descending, and where in the swath a pixel sits (the ellipsoidal incidence angle runs from about 29° at near range to 46° at far range in IW mode). Rasters of different tracks are therefore never fused. With
relative_orbit=the result is one(y, x)raster for that track; without it, one raster per track that crosses the AOI, stacked along arelative_orbitdimension withsat:orbit_state(and, on the computed routes,platform_headingandlook_azimuth) as coordinates along it. An INFO log line says so.The three routes trade exactness for access:
"opera-static"(default, Earthdata Login)The published answer. OPERA’s RTC-S1-STATIC layers carry the local incidence angle, the ellipsoidal incidence angle and the layover/shadow mask per burst, computed from the orbit state vectors and the Copernicus DEM. The bursts of one track are mosaicked; bursts of different tracks go to different
relative_orbitslices."dem"(no account)An approximation from a DEM. The geometry of each track is taken from a representative Planetary Computer RTC scene: the platform heading from the scene footprint’s along-track edge, the look azimuth from the heading and the look side, and the ellipsoidal incidence angle as a field that grows linearly from the near-range edge to the far-range edge of the swath. Every pass of a relative orbit is assumed to share this geometry (the same assumption the standalone LIA tool at egagli/generate_sentinel1_local_incidence_angle_maps makes; that tool computes the exact geometry from the GRD orbit file with
sarsen, at the price of a SAFE download per track). The result is within a few degrees of OPERA’s on open slopes and does not know about layover or shadow. When no RTC scene of a requested track or pass can be found over the AOI the route raisesValueErrorrather than guess: the heading varies with latitude and the incidence angle with the position in the swath, so there is no defensible default."gee"(Earth Engine)The
COPERNICUS/S1_GRDangleband — the real per-pixel ellipsoidal incidence angle of each track — combined with the Copernicus DEM and the same footprint-derived heading.
- Parameters:
aoi – The area, and (OPERA route) a time window for the search.
time – The area, and (OPERA route) a time window for the search.
source –
"opera-static","dem"or"gee".relative_orbit – The Sentinel-1 track (
sat:relative_orbit) to compute or select.None(default) returns every track over aoi along arelative_orbitdimension.orbit_state –
"ascending"or"descending"restricts the tracks to one pass direction on the"dem"and"gee"routes;None(default) keeps both. Ignored when relative_orbit is given (a track has one pass direction) and on the OPERA route.incidence_angle – Override for the ellipsoidal incidence angle on the
"dem"route: a scalar for the whole AOI or a raster aligned with the DEM.dem – A DEM to use instead of fetching the Copernicus DEM (
"dem"route).
- Returns:
xarray.Dataset–local_incidence_angleandincidence_anglein degrees, plus the categoricalmaskon the OPERA route. With relative_orbit the geometry used is in the attrs (relative_orbit,orbit_state,platform_heading,look_azimuth,incidence_angle_model); without it, the per-track values are coordinates alongrelative_orbit.
Examples using easysnowdata.sar.sentinel1.local_incidence_angle#
Sentinel-1 RTC backscatter and local incidence angle