geometry-io-ewkt 0.0.11

PostGIS Extended Well-Known Text (EWKT) reader and writer for the geometry model.
Documentation
//! Checked XY Extended Well-Known Text (EWKT) reader and writer.
//!
//! The geometry body uses [`geometry_io_wkt`]'s `PostGIS` 3.4.3-compatible
//! XY profile. Z, M, ZM, and extra ordinates are rejected, including on
//! empty geometries. No coordinate is silently discarded.
//!
//! [`from_ewkt_2d`] retains empty points and empty multipoint members using
//! [`geometry_model::GeometryValue`]. [`from_ewkt`] returns the legacy
//! [`geometry_model::DynGeometry`] and rejects unrepresentable empty points.
//!
//! The optional `SRID=` prefix accepts checked signed 32-bit integers.
//! Nonpositive values normalize to zero; values above 999999 normalize to
//! `999000 + (value % 999)`, matching the pinned `PostGIS` parser. Only space,
//! tab, CR and LF are accepted as whitespace. Whitespace is allowed before
//! the prefix and before its semicolon, but not inside `SRID=` or before digits.
//! Output SRIDs must be at most 999999; writers return an error otherwise.
//! `None` omits the prefix, while `Some(Srid::UNKNOWN)` writes `SRID=0;`.
//!
//! # Migration
//!
//! Owned and streaming writers return typed errors. Use [`to_ewkt`] instead
//! of formatting [`Ewkt`] with `Display`; formatting cannot convey geometry
//! validation errors. Negative input SRIDs now normalize to unknown, and
//! positive input SRIDs outside the `PostGIS` range normalize as described above.
//! The binary codecs and [`Srid`] itself retain their existing behavior.
//!
//! ```
//! use geometry_io_ewkt::{Srid, from_ewkt_2d, to_ewkt};
//!
//! let e = from_ewkt_2d("SRID=4326;POINT EMPTY").unwrap();
//! assert_eq!(e.srid, Some(Srid::new(4326)));
//! assert_eq!(to_ewkt(&e.geometry, e.srid).unwrap(), "SRID=4326;POINT EMPTY");
//! ```

#![cfg_attr(not(feature = "std"), no_std)]
#![forbid(unsafe_code)]

extern crate alloc;

mod ewkt;
mod ewkt_error;
mod ewkt_write_error;
mod srid_prefix;

pub use ewkt_error::EwktError;
pub use ewkt_write_error::EwktWriteError;
pub use geometry_io_wkt::WktError;
#[doc(hidden)]
pub use geometry_io_wkt::WriteWkt;
pub use geometry_srid::Srid;
// feature-group: I/O — Extended Well-Known Text
// feature-desc: Parse and write PostGIS EWKT (WKT with an SRID prefix)
pub use ewkt::{
    Ewkt, from_ewkt, from_ewkt_2d, parse_linestring, parse_multi_linestring, parse_multi_point,
    parse_multi_polygon, parse_point, parse_polygon,
};
// feature-group: I/O — Extended Well-Known Text
pub use ewkt::{to_ewkt, to_ewkt_polygon, write_ewkt, write_ewkt_polygon};