All Projects → jgrss → geowombat

jgrss / geowombat

Licence: MIT License
GeoWombat: Utilities for geospatial data

Programming Languages

Jupyter Notebook
11667 projects
python
139335 projects - #7 most used programming language
cython
566 projects

Projects that are alternatives of or similar to geowombat

geoblaze
Blazing Fast JavaScript Raster Processing Engine
Stars: ✭ 80 (+135.29%)
Mutual labels:  satellite, raster, remote-sensing
deck.gl-raster
deck.gl layers and WebGL modules for client-side satellite imagery analysis
Stars: ✭ 60 (+76.47%)
Mutual labels:  satellite, remote-sensing
GDAL.jl
Thin Julia wrapper for GDAL - Geospatial Data Abstraction Library
Stars: ✭ 78 (+129.41%)
Mutual labels:  satellite, raster
Start maja
To process a Sentinel-2 time series with MAJA cloud detection and atmospheric correction processor
Stars: ✭ 47 (+38.24%)
Mutual labels:  raster, remote-sensing
Py6s
A Python interface to the 6S Radiative Transfer Model
Stars: ✭ 117 (+244.12%)
Mutual labels:  satellite, remote-sensing
Awesome Geospatial Companies
🌐 List of 500+ geospatial companies (GIS, Earth Observation, UAV, Satellite, Digital Farming, ..)
Stars: ✭ 184 (+441.18%)
Mutual labels:  satellite, remote-sensing
lightweight-temporal-attention-pytorch
A PyTorch implementation of the Light Temporal Attention Encoder (L-TAE) for satellite image time series. classification
Stars: ✭ 43 (+26.47%)
Mutual labels:  satellite, remote-sensing
Datacube Core
Open Data Cube analyses continental scale Earth Observation data through time
Stars: ✭ 285 (+738.24%)
Mutual labels:  raster, remote-sensing
satproc
🛰️ Python library and CLI tools for processing geospatial imagery for ML
Stars: ✭ 27 (-20.59%)
Mutual labels:  satellite, remote-sensing
awesome-spectral-indices
A ready-to-use curated list of Spectral Indices for Remote Sensing applications.
Stars: ✭ 357 (+950%)
Mutual labels:  raster, remote-sensing
pylandtemp
Algorithms for computing global land surface temperature and emissivity from NASA's Landsat satellite images with Python.
Stars: ✭ 110 (+223.53%)
Mutual labels:  raster, remote-sensing
Geotiff.io
Static website for viewing and analyzing GeoTIFF's in the browser
Stars: ✭ 53 (+55.88%)
Mutual labels:  satellite, raster
Torchsat
🔥TorchSat 🌏 is an open-source deep learning framework for satellite imagery analysis based on PyTorch.
Stars: ✭ 261 (+667.65%)
Mutual labels:  satellite, remote-sensing
Rio Tiler
Rasterio plugin to create web map tiles from raster datasets.
Stars: ✭ 221 (+550%)
Mutual labels:  satellite, raster
Python Geospatial
A collection of Python packages for geospatial analysis with binder-ready notebook examples
Stars: ✭ 187 (+450%)
Mutual labels:  raster, remote-sensing
eemont
A python package that extends Google Earth Engine.
Stars: ✭ 290 (+752.94%)
Mutual labels:  raster, remote-sensing
georaster-layer-for-leaflet
Display GeoTIFFs and soon other types of raster on your Leaflet Map
Stars: ✭ 168 (+394.12%)
Mutual labels:  satellite, raster
Geospatial Python CourseV1
This is an collection of blog posts turned into a course format
Stars: ✭ 53 (+55.88%)
Mutual labels:  raster, remote-sensing
modape
MODIS Assimilation and Processing Engine
Stars: ✭ 19 (-44.12%)
Mutual labels:  satellite, remote-sensing
kinetics-downloader
Simple tool to download videos from kinetics dataset.
Stars: ✭ 28 (-17.65%)
Mutual labels:  parallel

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. 
>>>         # Mix process and thread workers to execute the task in parallel. 
>>>         results.gw.to_raster('output.tif', 
>>>                              n_workers=4, 
>>>                              n_threads=4,
>>>                              compress='lzw')

Installation

GeoWombat is not on PyPi, but it can be installed with pip. Most dependencies will be automatically installed. However, the exception is GDAL, which needs to be installed prior to executing the pip command below. See the installation documentation for details on installing GDAL. With GDAL installed, GeoWombat can be installed like:

pip install git+https://github.com/jgrss/geowombat

Alternatively, use git to clone and build the repository like:

git clone https://github.com/jgrss/geowombat.git
cd geowombat/
python setup.py build && pip install --upgrade . && rm -rf build/

opencv requires libGL.so.1. In Ubuntu, this can be obtained by running:

apt-get update && apt-get install libgl1 -y

Update

To update GeoWombat:

pip install --upgrade git+https://github.com/jgrss/geowombat

Or, to update a cloned repository:

cd geowombat/
git pull origin master
python setup.py build && pip install --upgrade . && rm -rf build/

(Optional) Install into a virtual environment on Linux

With virtualenv

# Create a Python 3.7 virtual environment named gwenv
virtualenv -p python=3.7 gwenv

# Activate the virtual environment
source gwenv/bin/activate

# Install the libspatialindex and GDAL libraries
sudo apt install libspatialindex-dev libgdal-dev

# Install GeoWombat with all extra libraries
pip install git+https://github.com/jgrss/geowombat.git#egg=project[all]

With conda

# Install the libspatialindex and GDAL libraries
sudo apt install libspatialindex-dev libgdal-dev

# Create a Python 3.7 virtual environment named gwenv
conda create -n gwenv python=3.7 cython numpy libspatialindex gdal -c conda-forge

# Activate the virtual environment
conda activate gwenv

# Install GeoWombat with all extra libraries
pip install git+https://github.com/jgrss/geowombat.git

Universal Install Via Docker

If you are having trouble installing geowombat, the surest way to get it up and running is with Docker containers. Please follow the instructions on pygis.io.

Development: Adding packages

Install pip-tools. Add packages to requirements.in and running the following to compile requirements.txt:

pip-compile requirements.in

Documentation

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

Learning

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].