GeoUtils performance benchmarks
Representative time and memory measurements for raster, vector and point cloud operations.
How GeoUtils operations vary
Each comparison changes one option at a time. GDAL and PDAL CLI are separate external references.
Performance table
Each row shows elapsed time and peak memory for a fixed workload (operation parameters and input size). All options run without parallelism: one computational process using one thread.
GDAL CLI reference. It appears only where a standalone GDAL command performs an equivalent operation. GeoUtils aims for comparable single-worker costs while supporting Python workflows, alternative engines and data larger than memory; it need not be faster for every isolated call. For reprojection, GDAL receives a memory budget based on the GeoUtils chunk size.
PDAL CLI reference. Raster point conversion uses a readers.gdal pipeline, followed by writers.ogr for GeoPackage or writers.las for LAS/LAZ. Subsampling adds filters.randomize with seed 42 and filters.head to match the requested output count. LAS/LAZ output maps the first raster band to native elevation.
Data-size context: a one-band 2,048² raster is 16.8 MB as Float32 (33.6 MB as Float64; 4.2 MB as UInt8), while 17² Float64 XYZ points are about 0.007 MB before object overhead.
| Operation and method | Reference workload | GeoUtils calculation engine | GeoUtils execution mode | External reference | |||||
|---|---|---|---|---|---|---|---|---|---|
| Rasterio/GDAL | SciPy | Numba | NumPy | Eager | Dask | Multiprocessing | GDAL CLI | ||
| Raster ⟶ Raster | |||||||||
| Reprojection — Nearest | 2,048 × 2,048 input/output raster512 × 512 chunks | Time1.05 sMemory443 MB | — | — | — | Time1.05 sMemory443 MB | Time3.67 sMemory797 MB | Time4.75 sMemory798 MB | Time1.06 sMemory431 MB |
| Filtering — Mean | 2,048 × 2,048 raster1,024 × 1,024 chunks5 × 5 filter | — | — | — | — | — | Time2.15 sMemory788 MB | Time1.8 sMemory785 MB | — |
| Raster ⟶ Point | |||||||||
| Point interpolation — Linear | 2,048 × 2,048 source raster16,384 interpolated points512 × 512 chunks | — | Time0.075 sMemory403 MB | — | — | Time0.075 sMemory403 MB | Time2.55 sMemory752 MB | Time3.32 sMemory718 MB | — |
| Subsampling | 2,048 × 2,048 source raster524,288 output points512 × 512 chunks | — | — | — | — | — | Time4.05 sMemory994 MB | Time10.7 sMemory936 MB | — |
| Point cloud conversion | 1,024 × 1,024 source rasterone output point per cell512 × 512 chunks | — | — | — | — | — | Time6.18 sMemory1.29e+03 MB | Time8.61 sMemory992 MB | — |
| Raster ⟶ Vector | |||||||||
| Polygonization — Label stitch | 2,048 × 2,048 raster441 disconnected raster regions512 × 512 chunks | Time0.145 sMemory501 MB | — | — | — | Time0.145 sMemory501 MB | Time2.72 sMemory731 MB | Time3.52 sMemory723 MB | Time0.271 sMemory459 MB |
| Point ⟶ Raster | |||||||||
| Gridding — Nearest | 2,048 × 2,048 output raster17 × 17 source points512 × 512 chunks | — | Time1.18 sMemory401 MB | Time3.63 sMemory433 MB | — | Time1.18 sMemory401 MB | Time5.2 sMemory794 MB | Time4.56 sMemory764 MB | Time1.69 sMemory423 MB |
| Gridding — Linear (Delaunay) | 2,048 × 2,048 output raster17 × 17 source points512 × 512 chunks | — | Time0.214 sMemory390 MB | — | — | Time0.214 sMemory390 MB | Time4.3 sMemory796 MB | Time3.51 sMemory767 MB | Time0.119 sMemory423 MB |
| Gridding — Inverse-distance | 2,048 × 2,048 output raster17 × 17 source points512 × 512 chunks | — | Time1.4 sMemory431 MB | Time0.197 sMemory488 MB | — | Time1.4 sMemory431 MB | Time5.33 sMemory793 MB | Time4.61 sMemory770 MB | Time1.64 sMemory423 MB |
| Gridding — Circular mean | 2,048 × 2,048 output raster17 × 17 source points512 × 512 chunks | — | Time1.39 sMemory418 MB | Time0.191 sMemory488 MB | — | Time1.39 sMemory418 MB | Time5.48 sMemory793 MB | Time4.59 sMemory767 MB | Time0.456 sMemory423 MB |
| Vector ⟶ Raster | |||||||||
| Rasterization | 2,601 source polygon features2,048 × 2,048 output raster512 × 512 chunks | Time0.115 sMemory360 MB | — | — | — | Time0.115 sMemory360 MB | Time2.45 sMemory724 MB | Time3.43 sMemory716 MB | Time0.0483 sMemory355 MB |
| Raster ⟶ Other | |||||||||
| Grouped statistics — Moments — Dense summaries | 2,048 × 2,048 raster256 × 256 chunks64 local groupstwo values | — | — | — | Time0.388 sMemory778 MB | Time0.388 sMemory778 MB | Time3.62 sMemory736 MB | Time12.5 sMemory959 MB | — |
| Grouped statistics — Robust — Complete groups | 2,048 × 2,048 raster256 × 256 chunks64 local groupstwo values | — | — | — | Time0.433 sMemory673 MB | Time0.433 sMemory673 MB | Time6.43 sMemory739 MB | Time11.6 sMemory992 MB | — |