Xarray backend to Copernicus Sentinel-1 satellite data products

Overview

xarray-sentinel

WARNING: this product is a "technology preview" / pre-Alpha

Xarray backend to explore and load Copernicus Sentinel-1 satellite data products.

This Open Source project is sponsored by B-Open - https://www.bopen.eu

Features

  • access to SLC burst data - technology preview
  • access to metadata: product, orbit, attitude, GCPs - technology preview
  • access to metadata: calibration, deramp - in roadmap
  • products:
    • Sentinel-1 SLC IW (Interferometric Wide Swath): technology preview
    • Sentinel-1 SLC EW (Extended Wide Swath): technology preview
    • Sentinel-1 SLC SM (Stripmap): in roadmap
    • Sentinel-1 GRD SM/IW/EW: in roadmap
    • Sentinel-2 L1C/L2A: in roadmap

Install

The easiest way to install xarray-sentinel is via conda. Create a new environment, activate it, install the package and its dependencies, as follows:

    conda create -n xarray-sentinel
    conda activate xarray-sentinel
    conda install -c conda-forge rioxarray xmlschema
    pip install xarray-sentinel

Sentinel-1 SLC IW

Data

Currently, xarray-sentinel provides access as Xarray datasets to the following data:

  • burst data
  • gcp
  • orbit
  • attitude

using azimuth_time and slant_range_time dimensions.

Examples:

Open root dataset

>>> from xarray_sentinel import sentinel1
>>> product_path = "tests/data/S1B_IW_SLC__1SDV_20210401T052622_20210401T052650_026269_032297_EFA4.SAFE"
>>> sentinel1.open_dataset(product_path)
<xarray.Dataset>
Dimensions:  ()
Data variables:
    *empty*
Attributes: (12/15)
    constellation:              sentinel-1
    platform:                   sentinel-1b
    instrument:                 ['c-sar']
    sat:orbit_state:            descending
    sat:absolute_orbit:         26269
    sat:relative_orbit:         168
    ...                         ...
    sar:polarizations:          ['VV', 'VH']
    sar:product_type:           SLC
    xs:instrument_mode_swaths:  ['IW1', 'IW2', 'IW3']
    groups:                     ['IW1', 'IW1/calibration', 'IW1/gcp', 'IW1/at...
    Conventions:                CF-1.7
    history:                    created by xarray_sentinel-...

The attribute groups shows the available groups to be loaded. The key group shall be used to select the dataset to be loaded.

Open gcp dataset

To load the gcp relative to the first swath use the key group="IW1/gcp":

>>> sentinel1.open_dataset(product_path, group="IW1/gcp")
<xarray.Dataset>
Dimensions:           (azimuth_time: 10, slant_range_time: 21)
Coordinates:
  * azimuth_time      (azimuth_time) datetime64[ns] 2021-04-01T05:26:24.20973...
  * slant_range_time  (slant_range_time) float64 0.005343 0.00536 ... 0.005679
    line              (azimuth_time) int64 0 1501 3002 ... 10507 12008 13508
    pixel             (slant_range_time) int64 0 1082 2164 ... 19476 20558 21631
Data variables:
    latitude          (azimuth_time, slant_range_time) float64 ...
    longitude         (azimuth_time, slant_range_time) float64 ...
    height            (azimuth_time, slant_range_time) float64 ...
    incidenceAngle    (azimuth_time, slant_range_time) float64 ...
    elevationAngle    (azimuth_time, slant_range_time) float64 ...
Attributes:
    Conventions:  CF-1.7
    title:        Geolocation grid
    comment:      The dataset contains geolocation grid point entries for eac...
    history:      created by xarray_sentinel-...

Open attitude dataset

>>> sentinel1.open_dataset(product_path, group="IW1/attitude")
<xarray.Dataset>
Dimensions:       (azimuth_time: 25)
Coordinates:
  * azimuth_time  (azimuth_time) datetime64[ns] 2021-04-01T05:26:24.750001 .....
Data variables:
    q0            (azimuth_time) float64 ...
    q1            (azimuth_time) float64 ...
    q2            (azimuth_time) float64 ...
    q3            (azimuth_time) float64 ...
    wx            (azimuth_time) float64 ...
    wy            (azimuth_time) float64 ...
    wz            (azimuth_time) float64 ...
    pitch         (azimuth_time) float64 ...
    roll          (azimuth_time) float64 ...
    yaw           (azimuth_time) float64 ...
Attributes:
    Conventions:  CF-1.7
    title:        Attitude information used by the IPF during processing
    comment:      The dataset contains a sets of attitude data records that a...
    history:      created by xarray_sentinel-...

Open orbit dataset

>>> sentinel1.open_dataset(product_path, group="IW1/orbit")
<xarray.Dataset>
Dimensions:       (azimuth_time: 17)
Coordinates:
  * azimuth_time  (azimuth_time) datetime64[ns] 2021-04-01T05:25:19 ... 2021-...
Data variables:
    x             (azimuth_time) float64 ...
    y             (azimuth_time) float64 ...
    z             (azimuth_time) float64 ...
    vx            (azimuth_time) float64 ...
    vy            (azimuth_time) float64 ...
    vz            (azimuth_time) float64 ...
Attributes:
    reference_system:  Earth Fixed
    Conventions:       CF-1.7
    title:             Orbit information used by the IPF during processing
    comment:           The dataset contains a sets of orbit state vectors tha...
    history:           created by xarray_sentinel-...

Open a single burst

>>> sentinel1.open_dataset(product_path, group="IW1/R168-N459-E0115")
<xarray.Dataset>
Dimensions:           (azimuth_time: 1501, slant_range_time: 21632)
Coordinates:
    line              (azimuth_time) float64 1.051e+04 1.051e+04 ... 1.201e+04
    pixel             (slant_range_time) float64 0.5 1.5 ... 2.163e+04 2.163e+04
  * azimuth_time      (azimuth_time) datetime64[ns] 2021-04-01T05:26:43.51577...
  * slant_range_time  (slant_range_time) float64 0.005343 0.005343 ... 0.005679
Data variables:
    VH                (azimuth_time, slant_range_time) complex128 ...
    VV                (azimuth_time, slant_range_time) complex128 ...
Attributes: (12/14)
    constellation:              sentinel-1
    platform:                   sentinel-1b
    instrument:                 ['c-sar']
    sat:orbit_state:            descending
    sat:absolute_orbit:         26269
    sat:relative_orbit:         168
    ...                         ...
    sar:instrument_mode:        IW
    sar:polarizations:          ['VV', 'VH']
    sar:product_type:           SLC
    xs:instrument_mode_swaths:  ['IW1', 'IW2', 'IW3']
    Conventions:                CF-1.7
    history:                    created by xarray_sentinel-...

With the upcoming release of Xarray v0.18.0, xarray-sentinel will be automatically available as an Xarray backend:

>>> import xarray as xr
>>> ds = xr.open_dataset(product_path, engine="sentinel-1")

Contributing

The main repository is hosted on GitHub, testing, bug reports and contributions are highly welcomed and appreciated:

https://github.com/bopen/xarray-sentinel

Lead developer:

Main contributors:

See also the list of contributors who participated in this project.

License

Copyright 2021, B-Open Solutions srl and the xarray-sentinel authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Identify bursts groups also using the burst number

    Identify bursts groups also using the burst number

    Scheme proposed by @alexamici:

    • [x] remove the (slow) parsing of GCP on open_dataset(..., group=None) and only report available groups by burst_id, e.g. ["IW1/1", "IW1/2", ...]
    • [ ] move the naming logic to an external function in xarray_sentinel that takes either the filename or the gcp dataset (whatever is more reasonable) and returns the mapping between the label and the burst_id
    enhancement 
    opened by aurghs 8
  • ASF or .zip support?

    ASF or .zip support?

    I have a bunch of S1 data from the Alaska Satellite Facility in .zip format. I tried seeing what happens if I load in the .zip but it of course didn't work. Are there plans to support ASF data? Or am I doing something wrong? Does it need to be SLC?

    opened by TheJeran 4
  • Add initial sentinel1 accessor that raises when not used on backend Dataset (more or less)

    Add initial sentinel1 accessor that raises when not used on backend Dataset (more or less)

    Objectives for the accessors are:

    • [ ] exposes a hierarchical dataset tree where accessing group datasets without the need to open_dataset again #7
    • [ ] exposes original product exploration functions, especially the one that may require slow access when on a network #15
    • [ ] exposes a way to get as much as possible of the original metadata #7
    • [ ] exposes API to write STAC catalogs to the product folder
    • [x] raises a user-friendly error message when not used on a sentinel-1 Dataset
    opened by alexamici 3
  • Add sample data for tests

    Add sample data for tests

    For testing burst opening, we need real data to pass to rioxarray. Of course using the original TIFF files is not feasible, as they can easily be very big, order of GiBs.

    I played a bit to solve this issue and I have a few options:

    1. Put in the repository an all-zeros TIFF file with the same geometric properties of the original ones. By using the compression facility of TIFFs (method ZSTD gave the best result), I cut down 1.1GiB to 384KiB.
    2. Same as before, but changing the block size to the whole image (the rational is that compression is performed at block level). In this way the same TIFF as before reduce to 344KiB.
    3. Add setup code to tests that generates the needed TIFF on-the-fly. The code would be very simple, we could put the destination file name under .gitignore to avoid mistakes and we could also "cache" the produced file to avoid generating it repeatedly.

    Personally I think the second option is not worth losing the original blocksize, while the third option is more code to maintain and it slightly complicates the tests. Nonetheless, the third option could be useful should we need more meainingful data to put in, for example for calibration.

    help wanted design 
    opened by corrado9999 3
  • Group names do not uniquely identify a burst

    Group names do not uniquely identify a burst

    Group names do not uniquely identify a burst, it possible (even if unlikely) that two relative orbits will have identical group names for different bursts, e.g. group="IW2/N433_W0120_VV".

    @aurghs: "The relative orbit is useful mainly to identify uniquely the bursts, I would rather add the orbit in the burst name, for example: group="IW2/N433_W0120_VV_T22""

    @alexamici: "I agree with the idea, but prefer: group="IW2/R022_N433_W0120_VV" (R for "relative orbit" and keep the name to a fixed length).

    I also noticed that the polarisations should really be bands of the same dataset, not different datasets, but that is another issue (they have identical dimensions and coordinates)"

    Originally posted by @alexamici in https://github.com/bopen/xarray-sentinel/pull/8#issuecomment-819350889

    design 
    opened by alexamici 3
  • Expose burst level data via GDAL / rasterio / rioxarray

    Expose burst level data via GDAL / rasterio / rioxarray

    The lowest level in exposing the data is to create bursts datasets with the data contained in the measurements TIFF files (real and imaginary part scaled to int16 aa "distribution" digital number, not the original DN).

    The step needed are:

    1. parse burst information from the product annotation
    2. build the burst window into the original TIFF file (line_min, sample_min, line_max, sample_max)
    3. map the burst data to a xr.Dataset

    Step 3. can be done quickly by creating a VRT on disk and opening it with rioxarray.

    Longer term we wan to support products on read-only file-systems or zip files, but there is no way (that I found) to pass the VRT XML to GDAL without saving it first to a file.

    enhancement 
    opened by alexamici 3
  • Propose adding the relative orbit to the group name

    Propose adding the relative orbit to the group name

    Group names do not uniquely identify a burst, it possible (even if unlikely) that two relative orbits will have identical group names for different bursts, e.g. group="IW2/N433_W0120_VV". Adding the relative orbit to the group structure will make all group names longer and more complex, but unique: e.g. group="22/IW2/N433_W0120_VV" and group="169/IW2/N433_W0120_VV".

    This is a trade-off. I'm not sure what naming scheme is best.

    We could even accept both (causing even more confusion).

    enhancement 
    opened by alexamici 3
  • Provide GCPs or at least extent with burst data

    Provide GCPs or at least extent with burst data

    At the moment the only way to link the burst to the associated GCPs is to match the azimuth_times and slant_range_times.

    It would be helpful to attach some information on localisation of the burst (computed to define the burst name) to the burst dataset.

    enhancement 
    opened by alexamici 2
  • Resource .xsd files not included in pip install

    Resource .xsd files not included in pip install

    I'm able to have this run when I git clone and pip install . inside the repository. But when I pip install xarray-sentinel, it successfully installs but throws the error

    sentinel1.open_dataset( "S1A_IW_SLC__1SDV_20191130T235546_20191130T235613_030147_0371D0_AEE1.SAFE")
    ...
    URLError: <urlopen error [Errno 2] No such file or directory: '/home/scott/miniconda3/envs/mapping/lib/python3.8/site-packages/xarray_sentinel/resources/sentinel1/s1-level-1-product.xsd'>
    
    $ ls /home/scott/miniconda3/envs/mapping/lib/python3.8/site-packages/xarray_sentinel
    conventions.py  esa_safe.py  __init__.py  __pycache__  sentinel1.py  version.py
    

    The .xsd files aren't in the directory pip creates, and this is true even after disabling installs from wheel.

    I think this might involve setting package_data=True and including a MANIFEST.in file to specify the non-python files to include.

    opened by scottstanie 2
  • Proposal for open_dataset interface

    Proposal for open_dataset interface

    Draft for open open_dataset inferface. open_dataset takes in input both the manifest.safe and the directory.

    Open without a group:

    manifest_path = (
        DATA_FOLDER
        / "S1B_IW_SLC__1SDV_20210401T052622_20210401T052650_026269_032297_EFA4.SAFE"
    )
    xr.open_dataset(manifest_path, engine="sentinel-1")
    
    <xarray.Dataset>
    Dimensions:  ()
    Data variables:
        *empty*
    Attributes: (12/13)
        constellation:              sentinel-1
        platform:                   sentinel-1b
        instrument:                 ['c-sar']
        sat:orbit_state:            descending
        sat:absolute_orbit:         26269
        sat:relative_orbit:         168
        ...                         ...
        sar:frequency_band:         C
        sar:instrument_mode:        IW
        sar:polarizations:          ['VV', 'VH']
        sar:product_type:           SLC
        xs:instrument_mode_swaths:  ['IW1', 'IW2', 'IW3']
        groups:                     ['IW1/gcp', 'IW1/attitude', 'IW1/orbit', 'IW2...]
    

    Open with group = 'IW1':

    manifest_path = (
        DATA_FOLDER
        / "S1B_IW_SLC__1SDV_20210401T052622_20210401T052650_026269_032297_EFA4.SAFE"
    )
    xr.open_dataset(manifest_path, engine="sentinel-1", group="IW1")  
    <xarray.Dataset>
    Dimensions:  ()
    Data variables:
        *empty*
    Attributes:
        groups:   ['orbit', 'attitude', 'gcp']
    

    Open with group = 'IW1/orbit':

    manifest_path = (
        DATA_FOLDER
        / "S1B_IW_SLC__1SDV_20210401T052622_20210401T052650_026269_032297_EFA4.SAFE"
    )
    xr.open_dataset(manifest_path, engine="sentinel-1", group="IW1/orbit")  # type: ignore
    
    <xarray.Dataset>
    Dimensions:  (time: 17)
    Coordinates:
      * time     (time) datetime64[ns] 2021-04-01T05:25:19 ... 2021-04-01T05:27:59
    Data variables:
        x        (time) float64 ...
        y        (time) float64 ...
        z        (time) float64 ...
        vx       (time) float64 ...
        vy       (time) float64 ...
        vz       (time) float64 ...
    Attributes:
        Conventions:       CF-1.7
        reference_system:  Earth Fixed
    

    TBC:

    • groups to be displayed in case group=None:
      • [IW1, IW2...]
      • [IW1/orbit, IW1/attitude, IW1/gcp, IW2/orbit...]
      • [IW1, IW1/orbit, IW1/attitude, IW1/gcp, IW2, IW2/orbit...]
    • attributes to expose in case group=None
    • attributes to expose in case group='IW1'
    • Support for zip? Nice to have but I would postpone the implementation.
    opened by aurghs 2
  • Parse the XML files via `xmlschema` and the XSD definitions

    Parse the XML files via `xmlschema` and the XSD definitions

    Most metadata are distributed in XML files (e.g. manifest.safe, product/swath and calibration files) and the product zip file contains part of the XSD definition to use.

    As the XSD schemas are required when using xmlschema we need a way to always have a set of files. Strategy is:

    1. allow the user to specify a set of XSD files as a mapping from namespace to path to the schema file
    2. look for the distributed schema files based on a predefined product folder structure e.g. top_dir/support/s1-level-1-product.xsd
    3. use a mapping from namespace to shipped schema file
    reafactor 
    opened by alexamici 2
  • Full support for fsspec urlpaths is broken due to rioxarray / rasterio not accepting a file-like object

    Full support for fsspec urlpaths is broken due to rioxarray / rasterio not accepting a file-like object

    Until some releases ago we had full fsspec thanks to the following line working:

    ds = xr.open_dataset(fs.open(urlpath), engine="rasterio")
    

    This broke with some recent release of rioxarray or xarray, I think due to the fact that the open file is assumed to be a simple python object not a fsspec one.

    At the moment a workaround is in place that attempt to use rasaterio remote URLs, but it is very fragile.

    bug 
    opened by alexamici 0
  • Detected Memory leaks in code numpy as_type() (working on PR)

    Detected Memory leaks in code numpy as_type() (working on PR)

    as type copies arrays when not specified otherwise see: https://numpy.org/doc/stable/reference/generated/numpy.ndarray.astype.html

    • https://github.com/bopen/xarray-sentinel/blob/main/xarray_sentinel/sentinel1.py#L741
    • https://github.com/bopen/xarray-sentinel/blob/main/xarray_sentinel/sentinel1.py#L746

    Seems to be reason for tests failing in sarsen, will try working more on this and PR is "underway"

    opened by Scartography 0
  • Add option to crop a burst precisely via `firstValidSample` and `lastValidSample`

    Add option to crop a burst precisely via `firstValidSample` and `lastValidSample`

    Useful enhancements:

    • [ ] read the firstValidSample and lastValidSample tags and expose them (possibly making them more readable)
    • [ ] provide and option to crop the burst to the border of the actual image
    enhancement 
    opened by alexamici 2
Releases(v0.9.5)
  • v0.9.5(Nov 18, 2022)

    Easily explore and access the SAR data products of the Copernicus Sentinel-1 satellite mission in Python.

    This Open Source project is sponsored by B-Open - https://www.bopen.eu.

    What's new:

    • Acknowledge that full fsspec support is now broken, see #127, and implement a workaround that work in simple cases.

    Overview:

    xarray-sentinel is a Python library and Xarray backend with the following functionalities:

    • supports the following data products as distributed by ESA:
      • Sentinel-1 Ground Range Detected (GRD):
        • Stripmap (SM)
        • Interferometric Wide Swath (IW)
        • Extra Wide Swath (EW)
      • Sentinel-1 Single Look Complex (SLC) SM/IW/EW
    • creates ready-to-use Xarray Datasets that map the data lazily and efficiently in terms of both memory usage and disk / network access
    • reads all SAR imagery data: GRD images, SLC swaths and SLC bursts
    • reads several metadata elements: satellite orbit and attitude, ground control points, radiometric calibration look up tables, Doppler centroid estimation and more
    • (partially broken, see #127) reads uncompressed and compressed SAFE data products on the local computer or on a network via fsspec - depends on rasterio >= 1.3.0
    • supports larger-than-memory and distributed data access via Dask and rioxarray / rasterio / GDAL
    • provides a few helpers for simple operations involving metadata like cropping individual bursts out of IW SLC swaths applying radiometric calibration polynomials and converting slant to ground range for GRD products

    Overall, the software is in the beta phase and the usual caveats apply.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.4(Nov 1, 2022)

  • v0.9.3(Jul 26, 2022)

  • v0.9.2(Jul 13, 2022)

    Easily explore and access the SAR data products of the Copernicus Sentinel-1 satellite mission in Python.

    This Open Source project is sponsored by B-Open - https://www.bopen.eu.

    What's new:

    • Add geospatial_* attributes from ACDD-1.3 to full images and bursts #54
    • Update documentation and tests following the release of rasterio 1.3.0 that enable the full support for accessing compressed and remote data via fsspec,
    • Improve performance of calibrate_* and slant_range_time_to_ground_range helpers in several real scenarios,
    • Add ground_range_to_slant_range_time helper.

    Overview:

    xarray-sentinel is a Python library and Xarray backend with the following functionalities:

    • supports the following data products as distributed by ESA:
      • Sentinel-1 Ground Range Detected (GRD):
        • Stripmap (SM)
        • Interferometric Wide Swath (IW)
        • Extra Wide Swath (EW)
      • Sentinel-1 Single Look Complex (SLC) SM/IW/EW
    • creates ready-to-use Xarray Datasets that map the data lazily and efficiently in terms of both memory usage and disk / network access
    • reads all SAR imagery data: GRD images, SLC swaths and SLC bursts
    • reads several metadata elements: satellite orbit and attitude, ground control points, radiometric calibration look up tables, Doppler centroid estimation and more
    • reads uncompressed and compressed SAFE data products on the local computer or on a network via fsspec - depends on rasterio >= 1.3.0
    • supports larger-than-memory and distributed data access via Dask and rioxarray / rasterio / GDAL
    • provides a few helpers for simple operations involving metadata like cropping individual bursts out of IW SLC swaths applying radiometric calibration polynomials and converting slant to ground range for GRD products

    Overall, the software is in the beta phase and the usual caveats apply.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Apr 25, 2022)

  • v0.9.0(Apr 25, 2022)

    Easily explore and access the SAR data products of the Copernicus Sentinel-1 satellite mission in Python.

    This Open Source project is sponsored by B-Open - https://www.bopen.eu.

    What's new:

    • first beta release, the code is in excellent shape with respect to features, stability and performance
    • breaking change: naming is now always modelled from SAFE XML tags ported to snake_case #101
    • add the option to select a burst by its burst_id in crop_burst_dataset #100
    • add a make_stac_item(ds.attrs) helper function
    • add group metadata attributes to data arrays #101
    • added a CF compliance checker to the test suite and fixed several CF issues #98

    Overview:

    xarray-sentinel is a Python library and Xarray backend with the following functionalities:

    • supports the following data products as distributed by ESA:
      • Sentinel-1 Ground Range Detected (GRD):
        • Stripmap (SM)
        • Interferometric Wide Swath (IW)
        • Extra Wide Swath (EW)
      • Sentinel-1 Single Look Complex (SLC) SM/IW/EW
    • creates ready-to-use Xarray Datasets that map the data lazily and efficiently in terms of both memory usage and disk / network access
    • reads all SAR imagery data: GRD images, SLC swaths and SLC bursts
    • reads several metadata elements: satellite orbit and attitude, ground control points, radiometric calibration look up tables, Doppler centroid estimation and more
    • reads uncompressed and compressed SAFE data products on the local computer or on a network via fsspec - depends on rasterio>=1.3a3
    • supports larger-than-memory and distributed data access via Dask and rioxarray / rasterio / GDAL
    • provides a few helpers for simple operations involving metadata like croppping individual bursts out of IW SLC swaths applying radiometric calibration polynomials and converting slant to ground range for GRD products

    Overall, the software is in the beta phase and the usual caveats apply.

    Source code(tar.gz)
    Source code(zip)
  • v0.4.2(Mar 21, 2022)

  • v0.4.1(Mar 15, 2022)

  • v0.4(Mar 8, 2022)

    What's new:

    • Fixed chunking of measurement data
    • Added a helper functions for simple operations involving metadata
    • Start adding metadata to variables

    Overview:

    Overall the software is in the alpha phase and the usual caveats apply.

    • supports the following data products as distributed by ESA:
      • Sentinel-1 Ground Range Detected (GRD):
        • Stripmap (SM)
        • Interferometric Wide Swath (IW)
        • Extra Wide Swath (EW)
      • Sentinel-1 Single Look Complex (SLC) SM/IW/EW
    • creates ready-to-use Xarray Datasets that map the data lazily and efficiently in terms of both memory usage and disk / network access
    • reads all SAR imagery data: GRD images, SLC swaths and SLC bursts
    • reads several metadata elements: satellite orbit and attitude, ground control points, radiometric calibration look up tables, Doppler centroid estimation and more
    • reads uncompressed and compressed SAFE data products on the local computer or on a network via fsspec - depends on rasterio>=1.3a3
    • supports larger-than-memory and distributed data access via Dask and rioxarray / rasterio / GDAL
    • provides a few helpers for simple operations involving metadata like croppping individual bursts out of IW SLC swaths applying radiometric calibration polynomials and converting slant to ground range for GRD products
    Source code(tar.gz)
    Source code(zip)
  • v0.3(Feb 7, 2022)

    Overall the software is in the alpha phase and the usual caveats apply.

    • supports the following data products as distributed by ESA:
      • Sentinel-1 Ground Range Detected (GRD): NEW
        • Stripmap (SM)
        • Interferometric Wide Swath (IW)
        • Extra Wide Swath (EW)
      • Sentinel-1 Single Look Complex (SLC) SM/IW/EW
    • creates ready-to-use Xarray Datasets that map the data lazily and efficiently in terms of both memory usage and disk / network access
    • reads all SAR imagery data: GRD images, SLC swaths and SLC bursts
    • reads several metadata elements: satellite orbit and attitude, ground control points, radiometric calibration look up tables, Doppler centroid estimation and more
    • reads uncompressed and compressed SAFE data products on the local computer or on a network via fsspec - depends on rasterio>=1.3a3
    • supports larger-than-memory and distributed data access via Dask and rioxarray / rasterio / GDAL
    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(Jan 18, 2022)

  • v0.2(Jan 11, 2022)

    Overall the software is in the alpha phase and the usual caveats apply. A few features, identified as technology preview below, are not fully usable yet.

    • supports the following data products as distributed by ESA:
      • Sentinel-1 Single Look Complex (SLC):
        • Stripmap (SM)
        • Interferometric Wide Swath (IW)
        • Extra Wide Swath (EW)
        • Wave (WV) - technology preview
      • Sentinel-1 Ground Range Detected (GRD) SM/IW/EW/WV - technology preview
    • creates ready-to-use Xarray Datasets that map the data lazily and efficiently in terms of both memory usage and disk / network access
    • reads all SAR imagery data: GRD images, SLC swaths and SLC bursts
    • reads several metadata elements: satellite orbit and attitude, ground control points, radiometric calibration look up tables, Doppler centroid estimation and more
    • reads uncompressed and compressed SAFE data products on the local computer or on a network via fsspec - technology preview
    • allows larger-than-memory and distributed processing via dask
    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Apr 27, 2021)

  • v0.1(Apr 22, 2021)

Owner
B-Open
B-Open
Tool to display your current position and angle above your radar

🛠 Tool to display your current position and angle above your radar. As a response to the CS:GO Update on 1.2.2022, which makes cl_showpos a cheat-pro

Miko 6 Jan 04, 2023
Starlite-tile38 - Showcase using Tile38 via pyle38 in a Starlite application

Starlite-Tile38 Showcase using Tile38 via pyle38 in a Starlite application. Repo

Ben 8 Aug 07, 2022
Geocode rows in a SQLite database table

Geocode rows in a SQLite database table

Chris Amico 225 Dec 08, 2022
GetOSM is an OpenStreetMap tile downloader written in Python that is agnostic of GUI frameworks.

GetOSM GetOSM is an OpenStreetMap tile downloader written in Python that is agnostic of GUI frameworks. It is used with tkinter by ProjPicker. Require

Huidae Cho 3 May 20, 2022
Manipulation and analysis of geometric objects

Shapely Manipulation and analysis of geometric objects in the Cartesian plane. Shapely is a BSD-licensed Python package for manipulation and analysis

3.1k Jan 03, 2023
The geospatial toolkit for redistricting data.

maup maup is the geospatial toolkit for redistricting data. The package streamlines the basic workflows that arise when working with blocks, precincts

Metric Geometry and Gerrymandering Group 60 Dec 05, 2022
Yet Another Time Series Model

Yet Another Timeseries Model (YATSM) master v0.6.x-maintenance Build Coverage Docs DOI | About Yet Another Timeseries Model (YATSM) is a Python packag

Chris Holden 60 Sep 13, 2022
Helping data scientists better understand their datasets and models in text classification. With love from ServiceNow.

Azimuth, an open-source dataset and error analysis tool for text classification, with love from ServiceNow. Overview Azimuth is an open source applica

ServiceNow 145 Dec 23, 2022
Rasterio reads and writes geospatial raster datasets

Rasterio Rasterio reads and writes geospatial raster data. Geographic information systems use GeoTIFF and other formats to organize and store gridded,

Mapbox 1.9k Jan 07, 2023
An API built to format given addresses using Python and Flask.

An API built to format given addresses using Python and Flask. About The API returns properly formatted data, i.e. removing duplicate fields, distingu

1 Feb 27, 2022
Client library for interfacing with USGS datasets

USGS API USGS is a python module for interfacing with the US Geological Survey's API. It provides submodules to interact with various endpoints, and c

Amit Kapadia 104 Dec 30, 2022
Implementation of Trajectory classes and functions built on top of GeoPandas

MovingPandas MovingPandas implements a Trajectory class and corresponding methods based on GeoPandas. Visit movingpandas.org for details! You can run

Anita Graser 897 Jan 01, 2023
ESMAC diags - Earth System Model Aerosol-Cloud Diagnostics Package

Earth System Model Aerosol-Cloud Diagnostics Package This Earth System Model (ES

Pacific Northwest National Laboratory 1 Jan 04, 2022
Build, deploy and extract satellite public constellations with one command line.

SatExtractor Build, deploy and extract satellite public constellations with one command line. Table of Contents About The Project Getting Started Stru

Frontier Development Lab 70 Nov 18, 2022
GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.

Table of Contents What is GeoNode? Try out GeoNode Install Learn GeoNode Development Contributing Roadmap Showcase Most useful links Licensing What is

GeoNode Development Team 1.2k Dec 26, 2022
A Python tool to display geolocation information in the traceroute.

IP2Trace Python IP2Trace Python is a Python tool allowing user to get IP address information such as country, region, city, latitude, longitude, zip c

IP2Location 22 Jan 08, 2023
Obtain a GNSS position fix from an 11-millisecond raw GNSS signal snapshot

Obtain a GNSS position fix from an 11-millisecond raw GNSS signal snapshot without any prior knowledge about the position of the receiver and only coarse knowledge about the time.

Jonas Beuchert 2 Nov 17, 2022
Python library to decrypt Airtag reports, as well as a InfluxDB/Grafana self-hosted dashboard example

Openhaystack-python This python daemon will allow you to gather your Openhaystack-based airtag reports and display them on a Grafana dashboard. You ca

Bezmenov Denys 19 Jan 03, 2023
Get Landsat surface reflectance time-series from google earth engine

geextract Google Earth Engine data extraction tool. Quickly obtain Landsat multispectral time-series for exploratory analysis and algorithm testing On

Loïc Dutrieux 50 Dec 15, 2022
A compilation of several single-beam bathymetry surveys of the Caribbean

Caribbean - Single-beam bathymetry This dataset is a compilation of several single-beam bathymetry surveys of the Caribbean ocean displaying a wide ra

Fatiando a Terra Datasets 0 Jan 20, 2022