Expand description
PostGIS geometry type encoding/decoding for rust-postgres. Requires the with-postgis-postgres
feature.
§PostGIS usage example with rust-postgres
Select and insert geo-types geometries:
use geozero::wkb;
use postgres::{Client, NoTls};
let mut client = Client::connect(&std::env::var("DATABASE_URL").unwrap(), NoTls)?;
let row = client.query_one(
"SELECT 'SRID=4326;POLYGON ((0 0, 2 0, 2 2, 0 2, 0 0))'::geometry",
&[],
)?;
let value: wkb::Decode<geo_types::Geometry<f64>> = row.get(0);
if let Some(geo_types::Geometry::Polygon(poly)) = value.geometry {
assert_eq!(
*poly.exterior(),
vec![(0.0, 0.0), (2.0, 0.0), (2.0, 2.0), (0.0, 2.0), (0.0, 0.0)].into()
);
}
// Insert geometry
let geom: geo_types::Geometry<f64> = geo::Point::new(1.0, 3.0).into();
let _ = client.execute(
"INSERT INTO point2d (datetimefield,geom) VALUES(now(),ST_SetSRID($1,4326))",
&[&wkb::Encode(geom)],
);