Geospatial Raster datatype library for Python.
Project description
rastr
A lightweight geospatial raster datatype library for Python focused on simplicity.
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.create import full_raster
from rastr.meta import RasterMeta
from rastr.raster import Raster
# Read a raster from a file
raster = Raster.read_file("path/to/raster.tif")
# Basic arithmetic operations
doubled = raster * 2
summed = raster + 10
combined = raster + doubled
# Create full rasters with specified values
cell_size = 1.0
empty_raster = full_raster(
RasterMeta(
cell_size=cell_size,
crs=CRS.from_epsg(2193),
transform=from_origin(0, 100, cell_size, cell_size),
),
bounds=(0, 0, 100, 100),
fill_value=0.0,
)
# 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(new_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")
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
rastrand provides low-level raster I/O and processing capabilities. - rioxarray extends
xarrayfor raster data with geospatial support viarasterio.
Contributing
See the CONTRIBUTING.md file.
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
rastr-0.7.1.tar.gz
(327.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
rastr-0.7.1-py3-none-any.whl
(32.2 kB
view details)
File details
Details for the file rastr-0.7.1.tar.gz.
File metadata
- Download URL: rastr-0.7.1.tar.gz
- Upload date:
- Size: 327.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e0c7da77d566360eb87c7fab45f25139e17546eb5b120b2b67e466ee6a517a6
|
|
| MD5 |
c17d5292d7c1893a80d102e2e7d4c5c6
|
|
| BLAKE2b-256 |
3c090579529d3fabcac562c018dba4c3220d7e67e63b925e8fe02331e852404d
|
File details
Details for the file rastr-0.7.1-py3-none-any.whl.
File metadata
- Download URL: rastr-0.7.1-py3-none-any.whl
- Upload date:
- Size: 32.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8aa5a3cea713b80032cf8e30ef23eff4f30b8893bb012b010252a1014174f83a
|
|
| MD5 |
9739cfe8f1258673e38d9737f8e0eabd
|
|
| BLAKE2b-256 |
21078118e93564a345fb7681d821cd06cba3ccc36bb91d0b24d401523ecf7811
|