Skip to main content

Geospatial Raster datatype library for Python.

Project description


rastr

PyPI Version PyPI Supported Versions PyPI License

A lightweight geospatial raster datatype library for Python focused on simplicity.

For more details, read the documentation: https://rastr.readthedocs.io/en/stable/.

Overview

rastr provides an intuitive interface for creating, reading, manipulating, and exporting geospatial raster data in Python.

Features

  • 🧮 Complete raster arithmetic: Full support for mathematical operations (+, -, *, /) between rasters and scalars.
  • 📊 Flexible visualization: Built-in plotting with matplotlib and interactive mapping with folium.
  • 🗺️ Geospatial analysis tools: Contour generation, Gaussian blurring, and spatial sampling.
  • 🛠️ Data manipulation: Fill NaN values, extrapolate missing data, and resample to different resolutions.
  • 🔗 Seamless integration: Works with GeoPandas, rasterio, and the broader Python geospatial ecosystem.
  • ↔️ Vector-to-raster workflows: Convert GeoDataFrame polygons, points, and lines to raster format.

Installation

# With uv
uv add rastr

# With pip
pip install rastr

Quick Start

from pyproj.crs.crs import CRS
from rasterio.transform import from_origin
from rastr import Raster, RasterMeta
from rastr.create import full_raster


# Create an example raster
raster = Raster.example()

# Write to and read from a file
raster.to_file("raster.tif")
raster = Raster.read_file("raster.tif")

# Basic arithmetic operations
doubled = raster * 2
summed = raster + 10
combined = raster + doubled

# Visualize the data
ax = raster.plot(cbar_label="Values")

# Interactive web mapping (requires folium)
m = raster.explore(opacity=0.8, colormap="plasma")

# Sample values at specific coordinates
xy_points = [(100.0, 200.0), (150.0, 250.0)]
values = raster.sample(xy_points)

# Generate contour lines
contours = raster.contour(levels=[0.1, 0.5, 0.9], smoothing=True)

# Apply spatial operations
blurred = raster.blur(sigma=2.0)  # Gaussian blur
filled = raster.extrapolate(method="nearest")  # Fill NaN values via nearest-neighbours
resampled = raster.resample(cell_size=0.5)  # Change resolution

# Export to file
raster.to_file("output.tif")

# Convert to GeoDataFrame for vector analysis
gdf = raster.as_geodataframe(name="elevation")

Quick Reference

from rastr import Raster

Data access

I/O

Geometric Operations

NaN Management and value replacements

Image Processing

Visualization

Cell-wise Operations

Limitations

Current version limitations:

  • Only Single-band rasters are supported.
  • In-memory processing only (streaming support planned).
  • Square cells only (rectangular cell support planned).
  • Only float dtypes (integer support planned).

Similar Projects

  • rasters is a project with similar goals of providing a dedicated raster datatype in Python with higher-level interfaces for GIS operations. Unlike rastr, it has support for multi-band rasters, and has some more advanced functionality for Earth Science applications. Both projects are relatively new and under active development.
  • rasterio is a core dependency of rastr and provides low-level raster I/O and processing capabilities.
  • rioxarray extends xarray for raster data with geospatial support via rasterio.

Contributing

Commits since latest release

See the CONTRIBUTING.md file.

Project details


Download files

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

Source Distribution

rastr-0.12.0.tar.gz (404.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rastr-0.12.0-py3-none-any.whl (45.0 kB view details)

Uploaded Python 3

File details

Details for the file rastr-0.12.0.tar.gz.

File metadata

  • Download URL: rastr-0.12.0.tar.gz
  • Upload date:
  • Size: 404.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.13

File hashes

Hashes for rastr-0.12.0.tar.gz
Algorithm Hash digest
SHA256 bc49dc9c4d228f2fff558aeaffbfb5974f5df6ae83f6fddd7627c70474c66aa5
MD5 7038e513ebb94b28c43f42167a510c6c
BLAKE2b-256 0f6fc84764573cd8b1e36ed95ab5a2d4799bedeea5b095b19316eee35986df89

See more details on using hashes here.

File details

Details for the file rastr-0.12.0-py3-none-any.whl.

File metadata

  • Download URL: rastr-0.12.0-py3-none-any.whl
  • Upload date:
  • Size: 45.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.13

File hashes

Hashes for rastr-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb9f1bef8f760262ac45d01cc7635de51dd9f78931f99127f930d451e91cb83d
MD5 113d3239a430004939b3b395f317a40d
BLAKE2b-256 d689fa87de9a38a07bfca00281b3460e34a0c0687a79432a7d6a2df03f9ee8b5

See more details on using hashes here.

Supported by

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