Skip to main content

Tools for merging Geospatial Analysis and AI.

Project description

Buteo - Geospatial Analysis Meets AI

Buteo is a toolbox designed to simplify the process of working with geospatial data in machine learning. It includes tools for reading, writing, and processing geospatial data, as well as tools for creating labels from vector data and generating patches from geospatial data. Buteo makes it easy to ingest data, create training data, and perform inference on geospatial data.

Please note that Buteo is under active development, and its API may not be entirely stable. Feel free to report any bugs or suggest improvements.

For documentation, visit: https://casperfibaek.github.io/buteo/

Dependencies
numba (https://numba.pydata.org/)
gdal (https://gdal.org/)

Installation
Using pip:

pip install buteo

Using conda:

conda install buteo --channel casperfibaek

Quickstart

import buteo as beo

OUTDIR = "path/to/output/dir"

# Reproject (and other functions) to references. (Vector and raster)
vector_file_correct_projection = "path/to/vector/file.gpkg"
raster_files_wrong_projection = "path/to/raster/files/*.tif:glob"

paths_to_reprojected_rasters = beo.reproject_raster(
    raster_files_with_wrong_projection,
    vector_file_with_correct_projection,
    out_path=outdir
)

paths_to_reprojected_rasters
>>> [path/to/output/dir/file1.tif, path/to/output/dir/file2.tif, ...]
import buteo as beo

# Align, stack, and make patches from rasters

SRCDIR = "path/to/src/dir/"

paths_to_aligned_rasters_in_memory = beo.align_rasters(
    SRCDIR + "*.tif:glob",
)

stacked_numpy_arrays = beo.raster_to_array(
    paths_to_aligned_rasters_in_memory,
)

patches = beo.array_to_patches(
    path_to_stacked_numpy_arrays,
    256,
    offsets_y=3,
    offsets_x=3,
)

# patches_nr, height, width, channels
patches
>>> np.ndarray([10000, 256, 256, 9])
import buteo as beo

# Predict a raster using a model

RASTER_PATH = "path/to/raster/raster.tif"
RASTER_OUT_PATH = "path/to/raster/raster_pred.tif"

array = beo.raster_to_array(RASTER_PATH)

callback = model.predict # from pytorch, keras, etc..

# Predict the raster using overlaps, and borders.
# Merge using different methods. (median, mad, mean, mode, ...)
predicted = predict_array(
    array,
    callback,
    tile_size=256,
)

# Write the predicted raster to disk
beo.array_to_raster(
    predicted,
    reference=RASTER_PATH,
    out_path=RASTER_OUT_PATH,
)

Example Colabs
Create labels from OpenStreetMap data Open All Collab
Scheduled cleaning of geospatial data Open All Collab
Clip and remove noise from rasters Open All Collab
Sharpen nightlights data Open All Collab
Filters and morphological operations Open All Collab

The toolbox is being developed by ESA-Philab, NIRAS, and Aalborg University.

Dependencies

gdal numba

optional: orfeo-toolbox esa-snap

Build steps

python -m run_tests; python -m build_documentation; python -m build; python -m twine upload dist/*;

python -m run_tests && python -m build_documentation python -m build && python -m twine upload dist/*

python -m build_anaconda -forge -clean;

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

buteo-0.8.15.tar.gz (108.4 kB view hashes)

Uploaded Source

Built Distribution

buteo-0.8.15-py3-none-any.whl (135.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page