geonative_processing/lib.rs
1//! # geonative-processing
2//!
3//! Higher-level geoprocessing operations on `Layer` / `Feature` streams. Where
4//! [`geonative-utils`](https://docs.rs/geonative-utils) holds *pure
5//! algorithms* (simplify, hilbert, measure — no I/O, no Layer awareness),
6//! this crate holds operations that consume a stream of [`Feature`]s and
7//! produce a report or a new stream:
8//!
9//! - [`profile`] — Schema/Layer → null counts + min/max + top-N + samples
10//! (think `pandas.describe()` but format-agnostic)
11//! - **`reproject`** (Phase 12c, coming next) — Coord-by-coord transform via
12//! `geonative-proj-pure`
13//! - **`clip` / `spatial-join`** — Future. Need R-tree + exact predicates.
14//!
15//! Format crates (`geonative-filegdb`, `geonative-shapefile`, …) produce
16//! `Feature` streams; format writers consume them. This crate sits in the
17//! middle, doing the *operations* on those streams that aren't tied to any
18//! specific format.
19//!
20//! [`Feature`]: geonative_core::Feature
21
22#![forbid(unsafe_code)]
23#![warn(missing_debug_implementations)]
24
25pub mod profile;
26
27pub use profile::{profile, FieldStats, GeometryStats, ProfileOptions, ProfileReport};
28
29pub const VERSION: &str = env!("CARGO_PKG_VERSION");