{"id":42870603,"url":"https://github.com/umr-lops/xarray-safe-s1","last_synced_at":"2026-01-30T12:58:58.232Z","repository":{"id":154182334,"uuid":"631889604","full_name":"umr-lops/xarray-safe-s1","owner":"umr-lops","description":"Xarray reader for SAFE Sentinel1 files","archived":false,"fork":false,"pushed_at":"2026-01-23T16:20:00.000Z","size":311,"stargazers_count":8,"open_issues_count":8,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-24T04:44:11.570Z","etag":null,"topics":["grd","level-1","python3","radar","reader","safe","sar","sentinel-1","slc","xarray","xml"],"latest_commit_sha":null,"homepage":"https://xarray-safe-s1.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/umr-lops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-04-24T09:20:28.000Z","updated_at":"2026-01-23T15:07:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"371e88dc-d92e-4101-8c50-5df804ea5226","html_url":"https://github.com/umr-lops/xarray-safe-s1","commit_stats":{"total_commits":88,"total_committers":10,"mean_commits":8.8,"dds":0.5113636363636364,"last_synced_commit":"5a99c192c5ed871eb3d31b3a8967a820d1e4242a"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/umr-lops/xarray-safe-s1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umr-lops%2Fxarray-safe-s1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umr-lops%2Fxarray-safe-s1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umr-lops%2Fxarray-safe-s1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umr-lops%2Fxarray-safe-s1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/umr-lops","download_url":"https://codeload.github.com/umr-lops/xarray-safe-s1/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umr-lops%2Fxarray-safe-s1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28913208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T12:13:43.263Z","status":"ssl_error","status_checked_at":"2026-01-30T12:13:22.389Z","response_time":66,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grd","level-1","python3","radar","reader","safe","sar","sentinel-1","slc","xarray","xml"],"created_at":"2026-01-30T12:58:57.483Z","updated_at":"2026-01-30T12:58:58.226Z","avatar_url":"https://github.com/umr-lops.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Documentation Status](https://readthedocs.org/projects/xarray-safe-s1/badge/?version=latest)](https://xarray-safe-s1.readthedocs.io/en/latest/?badge=latest)\n\n# xarray-safe-s1\n\nXarray Sentinel1 python SAFE files reader\n\n# Install\n\n## Conda\n\n1. Install xarray-safe-s1\n\n```\nconda create -n safe_s1\nconda activate safe_s1\nconda install -c conda-forge xarray-safe-s1\n```\n\n## Pypi\n\n1. Install xarray-safe-s1\n\n```\nconda create -n safe_s1\nconda activate safe_s1\npip install xarray-safe-s1\n```\n\n```pycon\n\u003e\u003e\u003e from safe_s1 import Sentinel1Reader, sentinel1_xml_mappings\n\u003e\u003e\u003e filename = sentinel1_xml_mappings.get_test_file('S1A_IW_GRDH_1SDV_20170907T103020_20170907T103045_018268_01EB76_Z010.SAFE')\n\u003e\u003e\u003e Sentinel1Reader(filename).datatree\n\nDataTree('None', parent=None)\n├── DataTree('geolocationGrid')\n│       Dimensions:         (line: 10, sample: 21)\n│       Coordinates:\n│         * line            (line) int64 0 2014 4028 6042 ... 12084 14098 16112 16777\n│         * sample          (sample) int64 0 1260 2520 3780 ... 21420 22680 23940 25186\n│       Data variables:\n│           longitude       (line, sample) float64 -67.84 -67.96 -68.08 ... -70.4 -70.51\n│           latitude        (line, sample) float64 20.73 20.75 20.77 ... 19.62 19.64\n│           height          (line, sample) float64 8.405e-05 8.058e-05 ... 3.478e-05\n│           azimuthTime     (line, sample) datetime64[ns] 2017-09-07T10:30:20.936147 ...\n│           slantRangeTime  (line, sample) float64 0.005331 0.005375 ... 0.006382\n│           incidenceAngle  (line, sample) float64 30.82 31.7 32.57 ... 44.71 45.36 46.0\n│           elevationAngle  (line, sample) float64 27.5 28.27 29.02 ... 39.89 40.41\n│       Attributes:\n│           history:  longitude:\\n  annotation/s1a.xml:\\n  - /product/geolocationGrid...\n├── DataTree('orbit')\n│       Dimensions:     (time: 17)\n│       Coordinates:\n│         * time        (time) datetime64[ns] 2017-09-07T10:29:14.474905 ... 2017-09-...\n│       Data variables:\n│           velocity_x  (time) float64 -116.7 -154.1 -191.4 ... -628.1 -663.4 -698.6\n│           velocity_y  (time) float64 -3.433e+03 -3.368e+03 ... -2.413e+03 -2.342e+03\n│           velocity_z  (time) float64 -6.776e+03 -6.808e+03 ... -7.174e+03 -7.194e+03\n│           position_x  (time) float64 2.892e+06 2.89e+06 ... 2.833e+06 2.826e+06\n│           position_y  (time) float64 -5.782e+06 -5.816e+06 ... -6.222e+06 -6.246e+06\n│           position_z  (time) float64 2.869e+06 2.801e+06 ... 1.82e+06 1.748e+06\n│       Attributes:\n│           orbit_pass:        Descending\n│           platform_heading:  -167.7668824808032\n│           frame:             Earth Fixed\n│           history:           orbit:\\n  annotation/s1a.xml:\\n  - //product/generalAn...\n├── DataTree('image')\n│       Dimensions:                  (dim_0: 2)\n│       Dimensions without coordinates: dim_0\n│       Data variables: (12/14)\n│           LineUtcTime              (dim_0) datetime64[ns] 2017-09-07T10:30:20.93640...\n│           numberOfLines            int64 16778\n│           numberOfSamples          int64 25187\n│           azimuthPixelSpacing      float64 10.0\n│           slantRangePixelSpacing   float64 10.0\n│           groundRangePixelSpacing  float64 10.0\n│           ...                       ...\n│           slantRangeTime           float64 0.005331\n│           swath_subswath           \u003cU2 'IW'\n│           radarFrequency           float64 5.405e+09\n│           rangeSamplingRate        float64 6.435e+07\n│           azimuthSteeringRate      float64 1.59\n│           history                  \u003cU824 'image:\\n  annotation/s1a.xml:\\n  - /produ...\n├── DataTree('azimuth_fmrate')\n│       Dimensions:                  (azimuthTime: 11)\n│       Coordinates:\n│         * azimuthTime              (azimuthTime) datetime64[ns] 2017-09-07T10:30:18...\n│       Data variables:\n│           t0                       (azimuthTime) float64 0.005331 ... 0.005331\n│           azimuthFmRatePolynomial  (azimuthTime) object -2337.303489601216 + 448953...\n│       Attributes:\n│           history:  azimuth_fmrate:\\n  annotation/s1a.xml:\\n  - //product/generalAn...\n├── DataTree('doppler_estimate')\n│       Dimensions:                       (azimuthTime: 27, nb_fine_dce: 20)\n│       Coordinates:\n│         * azimuthTime                   (azimuthTime) datetime64[ns] 2017-09-07T10:...\n│         * nb_fine_dce                   (nb_fine_dce) int64 0 1 2 3 4 ... 16 17 18 19\n│       Data variables:\n│           t0                            (azimuthTime) float64 0.005332 ... 0.005331\n│           geometryDcPolynomial          (azimuthTime) object -1.070619 - 183.4602·x...\n│           dataDcPolynomial              (azimuthTime) object -74.90705 + 85274.16·x...\n│           fineDceAzimuthStartTime       (azimuthTime) datetime64[ns] 2017-09-07T10:...\n│           fineDceAzimuthStopTime        (azimuthTime) datetime64[ns] 2017-09-07T10:...\n│           dataDcRmsError                (azimuthTime) float64 6.181 6.181 ... 7.745\n│           slantRangeTime                (azimuthTime, nb_fine_dce) float64 0.006021...\n│           frequency                     (azimuthTime, nb_fine_dce) float64 -28.36 ....\n│           dataDcRmsErrorAboveThreshold  (azimuthTime) bool False False ... False False\n│       Attributes:\n│           history:  doppler_estimate:\\n  annotation/s1a.xml:\\n  - /product/dopplerC...\n├── DataTree('bursts')\n│       Dimensions:          (burst: 0)\n│       Dimensions without coordinates: burst\n│       Data variables:\n│           azimuthTime      (burst) float64\n│           linesPerBurst    int64 0\n│           samplesPerBurst  int64 0\n│       Attributes:\n│           history:  bursts_grd:\\n  annotation/s1a.xml:\\n  - /product/swathTiming/li...\n├── DataTree('calibration_luts')\n│       Dimensions:     (line: 27, sample: 631, pol: 2)\n│       Coordinates:\n│         * line        (line) int64 0 671 1342 2013 2684 ... 15436 16107 16778 17449\n│         * sample      (sample) int64 0 40 80 120 160 ... 25040 25080 25120 25160 25186\n│         * pol         (pol) object 'VV' 'VH'\n│       Data variables:\n│           sigma0_lut  (pol, line, sample) float64 662.0 661.7 661.5 ... 558.9 558.8\n│           gamma0_lut  (pol, line, sample) float64 613.4 613.1 612.7 ... 465.8 465.7\n├── DataTree('noise_azimuth_raw')\n│       Dimensions:       (swath: 0, pol: 2)\n│       Coordinates:\n│         * swath         (swath) float64\n│         * pol           (pol) object 'VV' 'VH'\n│       Data variables:\n│           line_start    (pol, swath) int64\n│           line_stop     (pol, swath) int64\n│           sample_start  (pol, swath) int64\n│           sample_stop   (pol, swath) int64\n│       Attributes:\n│           history:  noise_lut_azi_raw_grd:\\n  annotation/calibration/noise.xml:\\n  ...\n└── DataTree('noise_range_raw')\n        Dimensions:    (line: 27, sample: 634, pol: 2)\n        Coordinates:\n          * line       (line) int64 0 671 1342 2013 2684 ... 15433 16104 16775 16777\n          * sample     (sample) int64 0 40 80 120 160 ... 25028 25068 25108 25148 25186\n          * pol        (pol) object 'VV' 'VH'\n        Data variables:\n            noise_lut  (pol, line, sample) float64 1.641e+03 1.62e+03 ... 0.0 0.0\n\n```\n\nExample of usage for S3: access\n\n```pycon\nurl = 's3:///eodata/..../.SAFE'\nstorage_options = {\"anon\": False, \"client_kwargs\": {\"endpoint_url\": 'https://'+entrypoint_url, 'aws_access_key_id':access_key,\n    'aws_secret_access_key':secret_key}}\nreader = Sentinel1Reader(url,backend_kwargs={\"storage_options\": storage_options})\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumr-lops%2Fxarray-safe-s1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fumr-lops%2Fxarray-safe-s1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumr-lops%2Fxarray-safe-s1/lists"}