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