Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jgrss/geowombat
GeoWombat: Utilities for geospatial data
https://github.com/jgrss/geowombat
dask geography python raster rasterio remote-sensing satellite xarray
Last synced: about 2 months ago
JSON representation
GeoWombat: Utilities for geospatial data
- Host: GitHub
- URL: https://github.com/jgrss/geowombat
- Owner: jgrss
- License: mit
- Created: 2019-03-07T23:42:28.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-05-06T08:31:35.000Z (2 months ago)
- Last Synced: 2024-05-06T09:36:08.626Z (2 months ago)
- Topics: dask, geography, python, raster, rasterio, remote-sensing, satellite, xarray
- Language: Jupyter Notebook
- Homepage: https://geowombat.readthedocs.io
- Size: 240 MB
- Stars: 174
- Watchers: 5
- Forks: 10
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
- Authors: AUTHORS.txt
Lists
- awesome-stars - jgrss/geowombat - GeoWombat: Utilities for geospatial data (Jupyter Notebook)
- awesome-stars - jgrss/geowombat - GeoWombat: Utilities for geospatial data (Jupyter Notebook)
README
![](data/logo.png)
[![](https://img.shields.io/badge/License-MIT-black.svg)](https://github.com/jgrss/geowombat/blob/main/LICENSE.txt)
[![python](https://img.shields.io/badge/Python-3.8%20%7C%203.9%20%7C%203.10-3776AB.svg?style=flat&logo=python&logoColor=white)](https://www.python.org)
[![](https://img.shields.io/github/v/release/jgrss/geowombat?display_name=release)](https://github.com/jgrss/geowombat/releases)
[![](https://github.com/jgrss/geowombat/actions/workflows/ci.yml/badge.svg)](https://github.com/jgrss/geowombat/actions/)
[![](https://img.shields.io/github/repo-size/jgrss/geowombat)](https://shields.io/category/size)
[![](https://readthedocs.org/projects/geowombat/badge/?version=latest&style=flat)](https://readthedocs.org/projects/geowombat/)[GeoWombat on Anaconda](https://anaconda.org/conda-forge/geowombat)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/geowombat/badges/version.svg)](https://anaconda.org/conda-forge/geowombat)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/geowombat/badges/platforms.svg)](https://anaconda.org/conda-forge/geowombat)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/geowombat/badges/downloads.svg)](https://anaconda.org/conda-forge/geowombat)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/geowombat/badges/latest_release_date.svg)](https://anaconda.org/conda-forge/geowombat)### 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
```python
>>> import geowombat as gw
```Use a context manager and Xarray plotting to analyze processing chains
```python
>>> # 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
```python
>>> # 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.
```python
>>> # 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](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:
```commandline
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:```commandline
conda install geowombat
```or faster with mamba:
```commandline
mamba install geowombat
```### Pip Install
GeoWombat is not on PyPi, but it can be installed with `pip`. We provide detailed instructions in our [documentation](https://geowombat.readthedocs.io/en/latest/install.html).### Universal Install Via Docker
If you are having trouble installing geowombat, the surest way to get it up and running is with Docker containers.
See the `Dockerfile`, or for more details instructions, see the guide on [pygis.io](https://mmann1123.github.io/pyGIS/docs/b_conda_started.html).## Learning
If you are new to geospatial programming in Python please refer to [pygis.io](https://pygis.io)