Usage#
GeoRacoon provides high-level functions that allow you to do many things in just a few lines of code:
from riogrande.io import Source
from convster import parallel as cvpara
from convster.filters import bpgaussian # border-preserving Gaussian
source = Source("landcover.tif")
# Kernel: 30 km sigma, 1 km resolution → 30 pixels
params_filter = dict(sigma=30, truncate=3, preserve_range=True)
cvpara.apply_filter(
source=source,
output_file="landcover_blurred.tif",
block_size=(200, 200),
img_filter=bpgaussian,
filter_params=params_filter,
data_as_dtype="float32",
nbrcpu=4,
)
Minimal Examples#
RioGrande — open a GeoTIFF and work with Sources and Bands
from riogrande.io import Source, Band
# Open a GeoTIFF as a Source
source = Source("elevation.tif")
# Import the file's profile (size, CRS, dtype, …)
profile = source.import_profile()
# Tag a band and retrieve it by tag later
source.set_tags(bidx=1, tags={"category": "elevation_mean"})
band = source.get_band(category="elevation_mean")
# Or just grab a band by index
band = source.get_band(bidx=1)
print(band.tags)
Convster — apply a spatial filter to a raster
from riogrande.io import Source
from convster import parallel as cvpara
from convster.filters import bpgaussian # border-preserving Gaussian
source = Source("landcover.tif")
# Kernel: 30 km sigma, 1 km resolution → 30 pixels
params_filter = dict(sigma=30, truncate=3, preserve_range=True)
cvpara.apply_filter(
source=source,
output_file="landcover_blurred.tif",
block_size=(200, 200),
img_filter=bpgaussian,
filter_params=params_filter,
data_as_dtype="float32",
nbrcpu=4,
)
CoonFit — fit a linear model and generate a prediction raster
import numpy as np
from riogrande.io import Source, Band
from coonfit import parallel as lfpara
# Set up response and predictor bands
response_band = Band(Source("lst.tif"), bidx=1)
pred_source = Source("elevation.tif")
pred_source.set_tags(bidx=1, tags={"category": "elevation"})
predictor_band = pred_source.get_band(category="elevation")
# Fit the model — returns a dict of {band: weight}
weights = lfpara.compute_weights(
response=response_band,
predictors=[predictor_band],
block_size=(200, 200),
include_intercept=True,
no_data=np.nan,
nbrcpu=4,
)
print(weights)
# Apply the fitted weights to produce a prediction raster
lfpara.compute_model(
predictors=[predictor_band],
optimal_weights=weights,
output_file="lst_predicted.tif",
block_size=(200, 200),
nbrcpu=4,
)