Skip to main content

Crate oxigdal_postgis

Crate oxigdal_postgis 

Source
Expand description

OxiGDAL PostGIS - PostgreSQL/PostGIS Integration

This crate provides PostgreSQL/PostGIS integration for the OxiGDAL ecosystem, enabling spatial database workflows with connection pooling and async operations.

§Features

  • Connection Pooling: Efficient connection management with deadpool-postgres
  • Spatial Queries: Fluent API for building spatial queries
  • Streaming: Stream large result sets efficiently
  • Batch Operations: Batch inserts for high performance
  • Transaction Support: Full transaction management with savepoints
  • Type Safety: Strong type conversions between OxiGDAL and PostGIS
  • WKB Support: Efficient Well-Known Binary encoding/decoding

§Example

use oxigdal_postgis::*;
use oxigdal_core::types::BoundingBox;

// Create connection pool
let config = ConnectionConfig::new("gis_database")
    .host("localhost")
    .user("postgres")
    .password("password");

let pool = ConnectionPool::new(config)?;

// Check PostGIS is available
let health = pool.health_check().await?;
if !health.postgis_installed {
    eprintln!("PostGIS is not installed!");
    return Ok(());
}

// Query features within bounding box
let bbox = BoundingBox::new(-180.0, -90.0, 180.0, 90.0)?;
let features = SpatialQuery::new("buildings")?
    .where_bbox(&bbox)?
    .limit(1000)
    .execute(&pool)
    .await?;

println!("Found {} features", features.len());

// Write features to database
let mut writer = PostGisWriter::new(pool.clone(), "results")
    .srid(4326)
    .create_table(true);

for feature in features {
    writer.add_to_batch(feature);
}
writer.flush().await?;

§SQL Injection Prevention

All SQL generation is protected against SQL injection attacks through:

  • Parameterized queries
  • Identifier validation and quoting
  • Safe SQL builders

§Performance

  • Connection pooling reduces connection overhead
  • Batch operations improve write performance
  • Streaming API supports large datasets
  • Spatial indexes are automatically used

§Requirements

  • PostgreSQL 12 or later
  • PostGIS 3.0 or later

Re-exports§

pub use connection::ConnectionConfig;
pub use connection::ConnectionPool;
pub use connection::HealthCheckResult;
pub use connection::PoolConfig;
pub use connection::SslMode;
pub use error::PostGisError;
pub use error::Result;
pub use query::JoinType;
pub use query::SpatialJoin;
pub use query::SpatialQuery;
pub use reader::PostGisReader;
pub use sql::functions;
pub use transaction::Transaction;
pub use types::FeatureBuilder;
pub use types::PostGisGeometry;
pub use types::srid;
pub use wkb::ByteOrder;
pub use wkb::WkbDecoder;
pub use wkb::WkbEncoder;
pub use wkb::WkbGeometryType;
pub use writer::PostGisWriter;

Modules§

connection
Database connection management for PostGIS
error
Error types for OxiGDAL PostGIS operations
query
Spatial query builder for PostGIS
reader
PostGIS reader for streaming features from database
sql
SQL generation helpers for PostGIS queries
transaction
Transaction management for PostGIS operations
types
Type conversions between PostgreSQL/PostGIS and OxiGDAL types
wkb
Well-Known Binary (WKB) encoding and decoding for PostGIS geometries
writer
PostGIS writer for inserting features into database

Constants§

NAME
Crate name
VERSION
Crate version