No summary available
Project Links
Meta
Requires Python: >=3.9
Classifiers
xarray-safe-s1
Xarray Sentinel1 python SAFE files reader
Install
Conda
- Install xarray-safe-s1
conda create -n safe_s1
conda activate safe_s1
conda install -c conda-forge xarray-safe-s1
Pypi
- Install xarray-safe-s1
conda create -n safe_s1
conda activate safe_s1
pip install xarray-safe-s1
>>> from safe_s1 import Sentinel1Reader, sentinel1_xml_mappings
>>> filename = sentinel1_xml_mappings.get_test_file('S1A_IW_GRDH_1SDV_20170907T103020_20170907T103045_018268_01EB76_Z010.SAFE')
>>> Sentinel1Reader(filename).datatree
DataTree('None', parent=None)
├── DataTree('geolocationGrid')
│ Dimensions: (line: 10, sample: 21)
│ Coordinates:
│ * line (line) int64 0 2014 4028 6042 ... 12084 14098 16112 16777
│ * sample (sample) int64 0 1260 2520 3780 ... 21420 22680 23940 25186
│ Data variables:
│ longitude (line, sample) float64 -67.84 -67.96 -68.08 ... -70.4 -70.51
│ latitude (line, sample) float64 20.73 20.75 20.77 ... 19.62 19.64
│ height (line, sample) float64 8.405e-05 8.058e-05 ... 3.478e-05
│ azimuthTime (line, sample) datetime64[ns] 2017-09-07T10:30:20.936147 ...
│ slantRangeTime (line, sample) float64 0.005331 0.005375 ... 0.006382
│ incidenceAngle (line, sample) float64 30.82 31.7 32.57 ... 44.71 45.36 46.0
│ elevationAngle (line, sample) float64 27.5 28.27 29.02 ... 39.89 40.41
│ Attributes:
│ history: longitude:\n annotation/s1a.xml:\n - /product/geolocationGrid...
├── DataTree('orbit')
│ Dimensions: (time: 17)
│ Coordinates:
│ * time (time) datetime64[ns] 2017-09-07T10:29:14.474905 ... 2017-09-...
│ Data variables:
│ velocity_x (time) float64 -116.7 -154.1 -191.4 ... -628.1 -663.4 -698.6
│ velocity_y (time) float64 -3.433e+03 -3.368e+03 ... -2.413e+03 -2.342e+03
│ velocity_z (time) float64 -6.776e+03 -6.808e+03 ... -7.174e+03 -7.194e+03
│ position_x (time) float64 2.892e+06 2.89e+06 ... 2.833e+06 2.826e+06
│ position_y (time) float64 -5.782e+06 -5.816e+06 ... -6.222e+06 -6.246e+06
│ position_z (time) float64 2.869e+06 2.801e+06 ... 1.82e+06 1.748e+06
│ Attributes:
│ orbit_pass: Descending
│ platform_heading: -167.7668824808032
│ frame: Earth Fixed
│ history: orbit:\n annotation/s1a.xml:\n - //product/generalAn...
├── DataTree('image')
│ Dimensions: (dim_0: 2)
│ Dimensions without coordinates: dim_0
│ Data variables: (12/14)
│ LineUtcTime (dim_0) datetime64[ns] 2017-09-07T10:30:20.93640...
│ numberOfLines int64 16778
│ numberOfSamples int64 25187
│ azimuthPixelSpacing float64 10.0
│ slantRangePixelSpacing float64 10.0
│ groundRangePixelSpacing float64 10.0
│ ... ...
│ slantRangeTime float64 0.005331
│ swath_subswath <U2 'IW'
│ radarFrequency float64 5.405e+09
│ rangeSamplingRate float64 6.435e+07
│ azimuthSteeringRate float64 1.59
│ history <U824 'image:\n annotation/s1a.xml:\n - /produ...
├── DataTree('azimuth_fmrate')
│ Dimensions: (azimuthTime: 11)
│ Coordinates:
│ * azimuthTime (azimuthTime) datetime64[ns] 2017-09-07T10:30:18...
│ Data variables:
│ t0 (azimuthTime) float64 0.005331 ... 0.005331
│ azimuthFmRatePolynomial (azimuthTime) object -2337.303489601216 + 448953...
│ Attributes:
│ history: azimuth_fmrate:\n annotation/s1a.xml:\n - //product/generalAn...
├── DataTree('doppler_estimate')
│ Dimensions: (azimuthTime: 27, nb_fine_dce: 20)
│ Coordinates:
│ * azimuthTime (azimuthTime) datetime64[ns] 2017-09-07T10:...
│ * nb_fine_dce (nb_fine_dce) int64 0 1 2 3 4 ... 16 17 18 19
│ Data variables:
│ t0 (azimuthTime) float64 0.005332 ... 0.005331
│ geometryDcPolynomial (azimuthTime) object -1.070619 - 183.4602·x...
│ dataDcPolynomial (azimuthTime) object -74.90705 + 85274.16·x...
│ fineDceAzimuthStartTime (azimuthTime) datetime64[ns] 2017-09-07T10:...
│ fineDceAzimuthStopTime (azimuthTime) datetime64[ns] 2017-09-07T10:...
│ dataDcRmsError (azimuthTime) float64 6.181 6.181 ... 7.745
│ slantRangeTime (azimuthTime, nb_fine_dce) float64 0.006021...
│ frequency (azimuthTime, nb_fine_dce) float64 -28.36 ....
│ dataDcRmsErrorAboveThreshold (azimuthTime) bool False False ... False False
│ Attributes:
│ history: doppler_estimate:\n annotation/s1a.xml:\n - /product/dopplerC...
├── DataTree('bursts')
│ Dimensions: (burst: 0)
│ Dimensions without coordinates: burst
│ Data variables:
│ azimuthTime (burst) float64
│ linesPerBurst int64 0
│ samplesPerBurst int64 0
│ Attributes:
│ history: bursts_grd:\n annotation/s1a.xml:\n - /product/swathTiming/li...
├── DataTree('calibration_luts')
│ Dimensions: (line: 27, sample: 631, pol: 2)
│ Coordinates:
│ * line (line) int64 0 671 1342 2013 2684 ... 15436 16107 16778 17449
│ * sample (sample) int64 0 40 80 120 160 ... 25040 25080 25120 25160 25186
│ * pol (pol) object 'VV' 'VH'
│ Data variables:
│ sigma0_lut (pol, line, sample) float64 662.0 661.7 661.5 ... 558.9 558.8
│ gamma0_lut (pol, line, sample) float64 613.4 613.1 612.7 ... 465.8 465.7
├── DataTree('noise_azimuth_raw')
│ Dimensions: (swath: 0, pol: 2)
│ Coordinates:
│ * swath (swath) float64
│ * pol (pol) object 'VV' 'VH'
│ Data variables:
│ line_start (pol, swath) int64
│ line_stop (pol, swath) int64
│ sample_start (pol, swath) int64
│ sample_stop (pol, swath) int64
│ Attributes:
│ history: noise_lut_azi_raw_grd:\n annotation/calibration/noise.xml:\n ...
└── DataTree('noise_range_raw')
Dimensions: (line: 27, sample: 634, pol: 2)
Coordinates:
* line (line) int64 0 671 1342 2013 2684 ... 15433 16104 16775 16777
* sample (sample) int64 0 40 80 120 160 ... 25028 25068 25108 25148 25186
* pol (pol) object 'VV' 'VH'
Data variables:
noise_lut (pol, line, sample) float64 1.641e+03 1.62e+03 ... 0.0 0.0
Example of usage for S3: access
url = 's3:///eodata/..../.SAFE'
storage_options = {"anon": False, "client_kwargs": {"endpoint_url": 'https://'+entrypoint_url, 'aws_access_key_id':access_key,
'aws_secret_access_key':secret_key}}
reader = Sentinel1Reader(url,backend_kwargs={"storage_options": storage_options})
2026.1.23
Jan 23, 2026
2025.9.25
Sep 25, 2025
2025.6.2
Jun 02, 2025
2025.3.24
Mar 24, 2025
2024.11.28
Nov 28, 2024
2024.11.12
Nov 12, 2024
2024.5.16
May 16, 2024
2024.5.6
May 06, 2024
2024.4.19.post1
Apr 19, 2024
2024.4.19
Apr 19, 2024
2024.1.9
Jan 09, 2024
2023.12.7
Dec 07, 2023
2023.6.13
Jun 13, 2023
2023.6.2
Jun 02, 2023
2023.6.1
Jun 08, 2023
2023.5.11
May 11, 2023
2023.5.10
May 10, 2023
2023.5.5
May 05, 2023
2023.5.4
May 04, 2023
1.0.4
May 02, 2023
1.0.2
May 02, 2023
1.0.0
May 02, 2023
0.0.3
May 05, 2023
0.0.2
May 03, 2023