Skip to content
Snippets Groups Projects
README.md 1.8 KiB
Newer Older
Remi Cresson's avatar
Remi Cresson committed
# pyotb: Orfeo ToolBox for Python
NARCON Nicolas's avatar
NARCON Nicolas committed

[![latest release](https://forgemia.inra.fr/orfeo-toolbox/pyotb/-/badges/release.svg)](https://forgemia.inra.fr/orfeo-toolbox/pyotb/-/releases)
[![pipeline status](https://forgemia.inra.fr/orfeo-toolbox/pyotb/badges/develop/pipeline.svg)](https://forgemia.inra.fr/orfeo-toolbox/pyotb/-/commits/develop)
[![coverage report](https://forgemia.inra.fr/orfeo-toolbox/pyotb/badges/develop/coverage.svg)](https://forgemia.inra.fr/orfeo-toolbox/pyotb/-/commits/develop)
Vincent Delbar's avatar
Vincent Delbar committed
[![read the docs status](https://readthedocs.org/projects/pyotb/badge/?version=master)](https://pyotb.readthedocs.io/en/master/)
Remi Cresson's avatar
Remi Cresson committed
**pyotb** wraps the [Orfeo Toolbox](https://www.orfeo-toolbox.org/) in a pythonic, developer friendly 
fashion.  
Vincent Delbar's avatar
Vincent Delbar committed
## Key features
Remi Cresson's avatar
Remi Cresson committed
- Easy use of Orfeo ToolBox (OTB) applications from python
Vincent Delbar's avatar
Vincent Delbar committed
- Simplify common sophisticated I/O features of OTB
Remi Cresson's avatar
Remi Cresson committed
- Lazy execution of operations thanks to OTB streaming mechanism
- Interoperable with popular python libraries ([numpy](https://numpy.org/) and 
[rasterio](https://rasterio.readthedocs.io/))
Vincent Delbar's avatar
Vincent Delbar committed
- Extensible
Vincent Delbar's avatar
Vincent Delbar committed
Documentation hosted at [pyotb.readthedocs.io](https://pyotb.readthedocs.io/).
Vincent Delbar's avatar
Vincent Delbar committed
## Example
NARCON Nicolas's avatar
NARCON Nicolas committed

Vincent Delbar's avatar
Vincent Delbar committed
Building a simple pipeline with OTB applications
Vincent Delbar's avatar
Vincent Delbar committed
```py
NARCON Nicolas's avatar
NARCON Nicolas committed
import pyotb

Remi Cresson's avatar
Remi Cresson committed
# RigidTransformResample, with input parameters as dict
Vincent Delbar's avatar
Vincent Delbar committed
resampled = pyotb.RigidTransformResample({
Remi Cresson's avatar
Remi Cresson committed
    "in": "https://myserver.ia/input.tif",  # Note: no /vsicurl/
Vincent Delbar's avatar
Vincent Delbar committed
    "interpolator": "linear", 
    "transform.type.id.scaley": 0.5,
    "transform.type.id.scalex": 0.5
})
NARCON Nicolas's avatar
NARCON Nicolas committed

Remi Cresson's avatar
Remi Cresson committed
# OpticalCalibration, with input parameters as args
Vincent Delbar's avatar
Vincent Delbar committed
calib = pyotb.OpticalCalibration(resampled)
NARCON Nicolas's avatar
NARCON Nicolas committed

Remi Cresson's avatar
Remi Cresson committed
# BandMath, with input parameters as kwargs
Vincent Delbar's avatar
Vincent Delbar committed
ndvi = pyotb.BandMath(calib, exp="ndvi(im1b1, im1b4)")
Remi Cresson's avatar
Remi Cresson committed
# Pythonic slicing
Vincent Delbar's avatar
Vincent Delbar committed
roi = ndvi[20:586, 9:572]
Remi Cresson's avatar
Remi Cresson committed
# Pipeline execution. The actual computation happens here!
roi.write("output.tif", "float")