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
Program that shows all the details of the given IP address. Build with Python and ipinfo.io API

ip-details This is a program that shows all the details of the given IP address. Build with Python and ipinfo.io API Usage To use this program, run th

4 Mar 01, 2022
ArcGIS Python Toolbox for WhiteboxTools

WhiteboxTools-ArcGIS ArcGIS Python Toolbox for WhiteboxTools. This repository is related to the ArcGIS Python Toolbox for WhiteboxTools, which is an A

Qiusheng Wu 190 Dec 30, 2022
ProjPicker (projection picker) is a Python module that allows the user to select all coordinate reference systems (CRSs)

ProjPicker ProjPicker (projection picker) is a Python module that allows the user to select all coordinate reference systems (CRSs) whose extent compl

Huidae Cho 4 Feb 06, 2022
A simple python script that, given a location and a date, uses the Nasa Earth API to show a photo taken by the Landsat 8 satellite. The script must be executed on the command-line.

What does it do? Given a location and a date, it uses the Nasa Earth API to show a photo taken by the Landsat 8 satellite. The script must be executed

Caio 42 Nov 26, 2022
Solving the Traveling Salesman Problem using Self-Organizing Maps

Solving the Traveling Salesman Problem using Self-Organizing Maps This repository contains an implementation of a Self Organizing Map that can be used

Diego Vicente 3.1k Dec 31, 2022
h3-js provides a JavaScript version of H3, a hexagon-based geospatial indexing system.

h3-js The h3-js library provides a pure-JavaScript version of the H3 Core Library, a hexagon-based geographic grid system. It can be used either in No

Uber Open Source 648 Jan 07, 2023
Open Data Cube analyses continental scale Earth Observation data through time

Open Data Cube Core Overview The Open Data Cube Core provides an integrated gridded data analysis environment for decades of analysis ready earth obse

Open Data Cube 410 Dec 13, 2022
WebGL2 powered geospatial visualization layers

deck.gl | Website WebGL2-powered, highly performant large-scale data visualization deck.gl is designed to simplify high-performance, WebGL-based visua

Vis.gl 10.5k Jan 08, 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
Spatial Interpolation Toolbox is a Python-based GUI that is able to interpolate spatial data in vector format.

Spatial Interpolation Toolbox This is the home to Spatial Interpolation Toolbox, a graphical user interface (GUI) for interpolating geographic vector

Michael Ward 2 Nov 01, 2021
Tool to suck data from ArcGIS Server and spit it into PostgreSQL

chupaESRI About ChupaESRI is a Python module/command line tool to extract features from ArcGIS Server map services. Name? Think "chupacabra" or "Chupa

John Reiser 34 Dec 04, 2022
Python bindings to libpostal for fast international address parsing/normalization

pypostal These are the official Python bindings to https://github.com/openvenues/libpostal, a fast statistical parser/normalizer for street addresses

openvenues 651 Dec 16, 2022
A service to auto provision devices in Aruba Central based on the Geo-IP location

Location Based Provisioning Service for Aruba Central A service to auto provision devices in Aruba Central based on the Geo-IP location Geo-IP auto pr

Will Smith 3 Mar 22, 2022
User friendly Rasterio plugin to read raster datasets.

rio-tiler User friendly Rasterio plugin to read raster datasets. Documentation: https://cogeotiff.github.io/rio-tiler/ Source Code: https://github.com

372 Dec 23, 2022
Enable geospatial data mining through Google Earth Engine in Grasshopper 3D, via its most recent Hops component.

AALU_Geo Mining This repository is produced for a masterclass at the Architectural Association Landscape Urbanism programme. Requirements Rhinoceros (

4 Nov 16, 2022
A modern, geometric typeface by @chrismsimpson (last commit @ 85fa625 Jun 9, 2020 before deletion)

Metropolis A modern, geometric typeface. Influenced by other popular geometric, minimalist sans-serif typefaces of the new millenium. Designed for opt

Darius 183 Dec 25, 2022
EOReader is a multi-satellite reader allowing you to open optical and SAR data.

Remote-sensing opensource python library reading optical and SAR sensors, loading and stacking bands, clouds, DEM and index.

ICube-SERTIT 152 Dec 30, 2022
Map Ookla server locations as a Kernel Density Estimation (KDE) geographic map plot.

Ookla Server KDE Plotting This notebook was created to map Ookla server locations as a Kernel Density Estimation (KDE) geographic map plot. Currently,

Jonathan Lo 1 Feb 12, 2022
A trivia questions about Europe

EUROPE TRIVIA QUIZ IN PYTHON Project Outline Ask user if he / she knows more about Europe. If yes show the Trivia main screen, else show the end Trivi

David Danso 1 Nov 17, 2021
Constraint-based geometry sketcher for blender

Geometry Sketcher Constraint-based sketcher addon for Blender that allows to create precise 2d shapes by defining a set of geometric constraints like

1.7k Jan 02, 2023