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
PySAL: Python Spatial Analysis Library Meta-Package

Python Spatial Analysis Library PySAL, the Python spatial analysis library, is an open source cross-platform library for geospatial data science with

Python Spatial Analysis Library 1.1k Dec 18, 2022
iNaturalist observations along hiking trails

This tool reads the route of a hike and generates a table of iNaturalist observations along the trails. It also shows the observations and the route of the hike on a map. Moreover, it saves waypoints

7 Nov 11, 2022
r.cfdtools 7 Dec 28, 2022
Simple, concise geographical visualization in Python

Geographic visualizations for HoloViews. Build Status Coverage Latest dev release Latest release Docs What is it? GeoViews is a Python library that ma

HoloViz 445 Jan 02, 2023
Read images to numpy arrays

mahotas-imread: Read Image Files IO with images and numpy arrays. Mahotas-imread is a simple module with a small number of functions: imread Reads an

Luis Pedro Coelho 67 Jan 07, 2023
Using Global fishing watch's data to build a machine learning model that can identify illegal fishing and poaching activities through satellite and geo-location data.

Using Global fishing watch's data to build a machine learning model that can identify illegal fishing and poaching activities through satellite and geo-location data.

Ayush Mishra 3 May 06, 2022
Python 台灣行政區地圖 (2021)

Python 台灣行政區地圖 (2021) 以 python 讀取政府開放平台的 ShapeFile 地圖資訊。歡迎引用或是協作 另有縣市資訊、村里資訊與各種行政地圖資訊 例如: 直轄市、縣市界線(TWD97經緯度) 鄉鎮市區界線(TWD97經緯度) | 政府資料開放平臺: https://data

WeselyOng 12 Sep 27, 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 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
gjf: A tool for fixing invalid GeoJSON objects

gjf: A tool for fixing invalid GeoJSON objects The goal of this tool is to make it as easy as possible to fix invalid GeoJSON objects through Python o

Yazeed Almuqwishi 91 Dec 06, 2022
How to use COG's (Cloud optimized GeoTIFFs) with Rasterio

How to use COG's (Cloud optimized GeoTIFFs) with Rasterio According to Cogeo.org: A Cloud Opdtimized GeoTIFF (COG) is a regular GeoTIFF file, aimed at

Marvin Gabler 8 Jul 29, 2022
Tools for the extraction of OpenStreetMap street network data

OSMnet Tools for the extraction of OpenStreetMap (OSM) street network data. Intended to be used in tandem with Pandana and UrbanAccess libraries to ex

Urban Data Science Toolkit 47 Sep 21, 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
Get-countries-info - A python code that fetches data of any country

Country-info A python code getting countries information including country's map

CODE 2 Feb 21, 2022
Interactive Maps with Geopandas

Create Interactive maps 🗺️ with your geodataframe Geopatra extends geopandas for interactive mapping and attempts to wrap the goodness of amazing map

sangarshanan 46 Aug 16, 2022
Water Detect Algorithm

WaterDetect Synopsis WaterDetect is an end-to-end algorithm to generate open water cover mask, specially conceived for L2A Sentinel 2 imagery from MAJ

142 Dec 30, 2022
Evaluation of file formats in the context of geo-referenced 3D geometries.

Geo-referenced Geometry File Formats Classic geometry file formats as .obj, .off, .ply, .stl or .dae do not support the utilization of coordinate syst

Advanced Information Systems and Technology 11 Mar 02, 2022
pure-Python (Numpy optional) 3D coordinate conversions for geospace ecef enu eci

Python 3-D coordinate conversions Pure Python (no prerequistes beyond Python itself) 3-D geographic coordinate conversions and geodesy. API similar to

Geospace code 292 Dec 29, 2022
Platform for building statistical models of cities and regions

UrbanSim UrbanSim is a platform for building statistical models of cities and regions. These models help forecast long-range patterns in real estate d

Urban Data Science Toolkit 419 Dec 30, 2022
scalable analysis of images and time series

thunder scalable analysis of image and time series analysis in python Thunder is an ecosystem of tools for the analysis of image and time series data

thunder-project 813 Dec 29, 2022