Feature and scalability overview#
GeoUtils provides a unified API for manipulating raster, vector, and point-cloud data, and provides scalable CPU execution for most raster operations through Dask and Multiprocessing.
As many of our numerical operations rely on NumPy, SciPy or Numba, those are planned to be linked to their GPU counterparts (CuPy and Numba CUDA) in the future.
The summary tables directly below lists the core features of GeoUtils, their scalability and available backends.
See also
If you are interested in porting from GDAL/OGR, see our Cheatsheet: From GDAL/OGR page. While tables below provide a scalability summary, the detailed input/output behaviour of all operations is available on the Supported operations page. For measured backend comparisons and guidance on interpreting performance, see Performance.
Summary#
GeoUtils exposes a consistent API across raster, vector and point-cloud objects where possible (similar in spirit to the recent GDAL CLI overhaul). Many operations also support convenient match-reference arguments (e.g., matching a grid for reprojection or rasterization, bounds for cropping, or point coordinates for interpolation). See the Match-reference functionality page for details.
At its core, GeoUtils provides two interchangeable ways to work with geospatial data, exposing identical APIs:
Accessors that extend existing data structures (
rstfor rasters with Xarray,pcandvctfor point clouds and vectors with GeoPandas),GeoUtils objects
Raster,PointCloud,Vector.
Nearly all raster operations support scalable execution using Dask or Multiprocessing, allowing large datasets to be processed chunk-by-chunk without loading the full array into memory. Some vector and point-cloud accessor operations are also lazy with Dask-GeoPandas, with support still partial and ongoing.
Additionally, some numerical routines of GeoUtils provide multiple computational backends (e.g., SciPy or Numba implementations).
All methods are tested to ensure they produce identical results whether executed in-memory, chunked, or with different computational backends.
Data operations#
We first describe GeoUtils’ core data operations, which operate on underlying arrays or geometries and can therefore benefit from scalable execution.
Legend
/denotes methods shared across object types.⟷denotes methods interfacing between two object types.
Method |
Notes |
Scalable |
Backend |
|---|---|---|---|
Raster / Vector / Point |
|||
Reproject to other CRS. Also resamples to new grid for rasters, with default parameters ensuring chunk-invariance. |
✅ |
Rasterio / PyProj |
|
Crop to bounds, either intersecting (untouched) allowing efficient I/O, or clipped (data modified). |
✅ |
Rasterio / GeoPandas |
|
Apply a grid shift to object. |
✅ |
NumPy / GeoPandas |
|
Visualization helper. |
❌ |
Matplotlib |
|
Raster / Point |
|||
Create boolean mask of a vector geometries over raster or point. |
✅ |
Rasterio / GeoPandas |
|
Compute statistics of valid values over a valid mask. |
❌ |
NumPy / SciPy |
|
Randomly sample valid values. Chunk-invariant seed ensures reproducibility. |
✅ |
NumPy |
|
Filter over window. Fast vectorized logic with NaN support. |
✅ |
SciPy |
|
Estimate proximity distance to target values. |
❌ |
SciPy |
|
Raster ⟷ Vector |
|||
Convert raster regions to vector polygons. Multiple chunked strategies for performance. |
✅ |
Rasterio / GeoPandas |
|
Burn vector geometries onto a raster grid. |
✅ |
Rasterio |
|
Raster ⟷ Point |
|||
Interpolate raster at point locations. Fast regular-grid logic with added NaN propagation. |
✅ |
SciPy |
|
Aggregate raster values around points. |
❌ |
NumPy |
|
Grid irregular points onto a raster grid. Multiple approaches with added NaN propagation. |
❌ |
SciPy |
|
Direct conversion when points lie on a regular grid. |
❌ |
NumPy |
|
Conversion to point cloud. |
❌ |
NumPy |
Metadata properties and operations#
In addition to data operations, GeoUtils exposes metadata properties and methods consistently across geospatial objects. These rely only on metadata and therefore do not load or modify underlying data arrays.
Attribute / Method |
Description |
|---|---|
Raster / Vector / Point |
|
Coordinate reference system (CRS) of object. |
|
Bounding box of object. |
|
Footprint polygon geometry of object. |
|
Whether geospatial object is loaded in-memory. |
|
Filename of object on disk, if it exists. |
|
Bounds projected in other CRS. |
|
Footprint polygon geometry in other CRS. |
|
Get metric CRS suitable for this object. |
|
Summary of attributes for geospatial object. |
|
Raster / Point |
|
Data array (2D or 3D for raster, 1D for point cloud). |
|
Shape of data array. |
|
Whether object is a mask. Clarifies ambiguity of raster/point file types often not supporting boolean types. |
|
Raster |
|
Geotransform to map raster cells to spatial coordinates. |
|
Nodata value used to represent missing data on disk. |
|
Interpretation of raster cell values, either an area-average or point-center. |
|
Point |
|
Number of points in the point cloud. |