I/O¶
Supported formats¶
Format |
Read |
Write |
GPU-accelerated |
|---|---|---|---|
GeoParquet |
|
|
WKB decode/encode, Arrow codec |
GeoPackage |
|
|
– |
Shapefile |
|
|
Arrow fast path |
GeoJSON |
|
|
GPU byte-classify parser (Point, LineString, Polygon) |
Feather |
|
|
Arrow codec |
PostGIS |
|
|
– |
Reading files¶
import vibespatial
# Auto-detect format
gdf = vibespatial.read_file("data.gpkg")
# GeoParquet (recommended for large datasets)
gdf = vibespatial.read_parquet("data.parquet")
# PostGIS
from sqlalchemy import create_engine
engine = create_engine("postgresql://user:pass@host/db")
gdf = vibespatial.read_postgis("SELECT * FROM my_table", engine)
Writing files¶
gdf.to_file("output.gpkg", driver="GPKG")
gdf.to_parquet("output.parquet")
gdf.to_postgis("my_table", engine)
GeoParquet performance¶
GeoParquet is the recommended format for large datasets. vibeSpatial’s GeoParquet reader:
Plans row group selection based on spatial metadata
Decodes WKB geometry on GPU when available
Produces device-resident
OwnedGeometryArraywithout host round-trips
GeoJSON GPU acceleration¶
For GeoJSON files larger than ~10 MB, vibeSpatial uses a GPU byte-classify parser (ADR-0038) that parses JSON structure, extracts coordinates, and assembles Point, LineString, and Polygon geometries directly on-device. Property extraction stays on CPU via orjson.
When kvikio is installed, file-to-device transfer uses parallel POSIX I/O with pinned bounce buffers for additional throughput.