Skip to content

Repository files navigation

python

GeoWombat on Anaconda

Anaconda-Server Badge Anaconda-Server Badge Anaconda-Server Badge Anaconda-Server Badge

GeoWombat: Utilities for geospatial data

Like a wombat, GeoWombat has a simple interface (for raster I/O) with a strong backend (for data processing at scale).

Common Remote Sensing Uses

  • Simple read/write for a variety of sensors, including:
    • Sentinel 2
    • Landsat 5-8
    • PlanetScope
    • Others
  • Image mosaicking
  • On-the-fly image transformations (reprojection)
  • Point / polygon raster sampling, extraction
  • Time series analysis
  • Band math (NDVI, Tasseled cap, EVI etc)
  • Image classification and regression
  • Radiometry (BRDF normalization)
  • Distributed processing

Basic usage - Sentinel & Landsat

>>> import geowombat as gw

Use a context manager and Xarray plotting to analyze processing chains

>>> # Define satellite sensors (here, Landsat 7)
>>> with gw.config.update(sensor='l7'):
>>>
>>>     # Open images as Xarray DataArrays
>>>     with gw.open('LT05_L1TP_227083_20110123_20161011_01_T1.tif') as src:
>>>
>>>         # Apply calculations using Xarray and Dask
>>>         results = src.sel(band=['blue', 'green', 'red']).mean(dim='band')
>>>
>>>         # Check results by computing the task and plotting
>>>         results.gw.imshow()

Use a context manager to pass sensor information to geowombat methods

>>> # Set the sensor as Sentinel 2
>>> with gw.config.update(sensor='s2'):
>>>
>>>     # Open a Sentinel 2 image
>>>     with gw.open('L1C_T20HPH_A002352_20151204T141125_MTD.tif') as src:
>>>
>>>         # Use built-in normalization methods, such as the NDVI
>>>         ndvi = src.gw.ndvi(scale_factor=0.0001)
>>>
>>>         # Check results by computing the task and plotting
>>>         ndvi.gw.imshow()

Computation scales easily over large datasets with minimal changes to the code.

>>> # Set a reference image to align to
>>> with gw.config.update(ref_image='ref_image.tif'):
>>>
>>>     # Open images as Xarray DataArrays
>>>     with gw.open('image_a.tif') as srca, gw.open('image_b.tif') as srcb:
>>>
>>>         # The size of srca, srcb, and results are determined by the configuration context
>>>         results = srca.sel(band=1) * srcb.sel(band=[1, 2, 3]).mean(dim='band')
>>>
>>>         # Initiate computation by writing the results to file.
>>>         # Compute the task in parallel using dask.
>>>         results.gw.save(
>>>             'output.tif',
>>>             num_workers=4,
>>>             compress='lzw'
>>>         )

Documentation

For more details, see https://geowombat.readthedocs.io.

Installation

Conda Install

To allow easy installation and build of all dependencies we recommend installing via conda-forge:

Installing geowombat from the conda-forge channel can be achieved by adding conda-forge to your channels with:

conda config --add channels conda-forge
conda config --set channel_priority strict

Once the conda-forge channel has been enabled, geowombat can be installed with conda:

conda install geowombat

or faster with mamba:

mamba install geowombat

Pip Install

GeoWombat is on PyPI and can be installed with pip:

pip install geowombat

To include optional extras (e.g., ml and stac):

pip install "geowombat[ml,stac]"

Or to install all optional extras:

pip install "geowombat[all]"

We provide detailed instructions in our documentation.

Learning

If you are new to geospatial programming in Python please refer to pygis.io

About

GeoWombat: Utilities for geospatial data

Topics

Resources

Contributing

Stars

199 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages