Skip to main content

Crate oxigdal_geoparquet

Crate oxigdal_geoparquet 

Source
Expand description

GeoParquet Driver for OxiGDAL

This crate provides a pure Rust implementation of the GeoParquet 1.1 specification, enabling efficient reading and writing of geospatial vector data in Apache Parquet format.

Files written by older OxiGDAL versions declaring GeoParquet 1.0.0 are still accepted on read — see metadata::GeoParquetMetadata::validate for the version compatibility policy.

§Features

  • Full GeoParquet 1.1 specification support
  • WKB geometry encoding/decoding for all geometry types (default writer path)
  • GeoArrow native encodings: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon (opt-in via writer::GeoParquetWriterBuilder::encoding)
  • GeoParquet 1.1 covering.bbox column detection + row-group pruning + ArrowPredicate fast-path (skip WKB decode entirely when bbox cols exist)
  • Per-column / per-row-group statistics exposure via statistics::ColumnStatistics
  • Spatial partitioning and indexing for efficient queries
  • Zero-copy operations using Apache Arrow
  • Compression support (Snappy, Gzip, Zstd, LZ4, Brotli)
  • Spatial statistics and bounding box metadata
  • Row group-level spatial filtering

§Example

use oxigdal_geoparquet::{GeoParquetReader, GeoParquetWriter};
use oxigdal_geoparquet::metadata::{Crs, GeometryColumnMetadata};
use oxigdal_geoparquet::geometry::{Point, Geometry};

// Create a writer with WGS84 CRS
let metadata = GeometryColumnMetadata::new_wkb()
    .with_crs(Crs::wgs84());

let mut writer = GeoParquetWriter::new("output.parquet", "geometry", metadata)?;

// Add geometries
let point = Geometry::Point(Point::new_2d(-122.4, 37.8));
writer.add_geometry(&point)?;

// Finalize the file
writer.finish()?;

// Read the file
let reader = GeoParquetReader::open("output.parquet")?;
let metadata = reader.metadata();
println!("CRS: {:?}", metadata.primary_column_metadata()?.crs);

Re-exports§

pub use covering::BboxColumns;
pub use error::GeoParquetError;
pub use error::Result;
pub use filter::AttributePredicates;
pub use filter::ColumnCondition;
pub use filter::CompareOp;
pub use filter::LogicOp;
pub use metadata::CoordDim;
pub use metadata::Crs;
pub use metadata::EncodingType;
pub use metadata::GeoParquetMetadata;
pub use metadata::GeometryColumnMetadata;
pub use predicate::AttributeFilter;
pub use predicate::ScalarValue;
pub use statistics::ColumnStatistics;

Modules§

arrow_ext
Arrow schema extensions for GeoParquet
covering
GeoParquet 1.1 covering.bbox column detection and row-group statistics extraction.
error
Error types for GeoParquet operations
filter
Row-level spatial and attribute filtering for GeoParquet.
geometry
Geometry encoding and decoding
metadata
GeoParquet metadata structures
partitioning
Partitioned GeoParquet dataset support
predicate
Attribute predicate pushdown for GeoParquet readers.
spatial
Spatial partitioning and indexing for GeoParquet
statistics
Public API for exposing per-column / per-row-group Parquet statistics.

Structs§

GeoParquetReader
GeoParquet file reader
GeoParquetWriter
GeoParquet file writer
GeoParquetWriterBuilder
Builder for creating a GeoParquet writer with advanced options

Enums§

CompressionType
Compression type for GeoParquet files

Constants§

GEOPARQUET_VERSION
GeoParquet specification version emitted by writers in this crate.
VERSION
Crate version