1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//! # geonative-core
//!
//! The data model + WKB codec + object-safe `Dataset`/`Layer` traits that
//! every other geonative crate builds on. Zero-dep (apart from `thiserror`)
//! and the optional `geo-types` feature for ecosystem interop.
//!
//! ## What's in it
//!
//! Pick one of these as your starting point depending on what you're doing:
//!
//! | Module | What it gives you |
//! | --- | --- |
//! | [`geometry`] | `Coord`, `Geometry` (Simple Features tree), `LineString`, `Polygon`, `GeometryType` |
//! | [`value`] | `Value` (attribute payload) + `ValueType` (schema discriminant) |
//! | [`schema`] | `Schema` + `FieldDef` + `GeomField` — table-of-contents for one layer |
//! | [`feature`] | `Feature` — fid + geometry + attributes |
//! | [`crs`] | `Crs` enum (Unknown / Epsg / Wkt / Projjson) + EPSG resolution |
//! | [`wkb`] | OGC SF WKB encoder + decoder + alloc-free bbox walker |
//! | [`dataset`] | Object-safe `Dataset` / `Layer` traits for format-polymorphic code |
//! | [`error`] | Crate-wide `Error` + `Result` |
//! | [`geo_types_interop`] *(feature-gated)* | Conversions to/from the `geo-types` crate |
//! | [`raster`] *(feature-gated)* | Raster IR — `RasterTile`, `Band`, `PixelType`, `GeoTransform`, `RasterProfile`, `RasterLayer` trait |
//!
//! ## Why this crate exists
//!
//! Every format crate (filegdb, shapefile, geoparquet, mvt) reads/writes
//! its bytes into the same `Feature` / `Geometry` / `Schema` types defined
//! here. That sharing is what makes the workspace a coherent library
//! instead of seven independent format codecs.
//!
//! ## Stability
//!
//! See `STABILITY.md` at the repo root. The growable IR enums
//! (`Geometry`, `GeometryType`, `Value`, `ValueType`, `Crs`) are
//! `#[non_exhaustive]` — adding variants in a SemVer-minor release does
//! not count as a break.
//!
//! ## What's in here
//!
//! - [`Geometry`] — the geometry tree (Point/Multi*/Polygon/Collection)
//! - [`Coord`] — a single coordinate, with optional `z` and `m`
//! - [`Value`] / [`ValueType`] — attribute values and their type tags
//! - [`Feature`] — `fid` + optional geometry + indexed attribute vector
//! - [`Schema`] / [`FieldDef`] / [`GeomField`] — layer schema description
//! - [`Crs`] — coordinate reference system (EPSG / WKT / PROJJSON)
//! - [`Error`] — common error type
//!
//! ## Cargo features
//!
//! - `geo-types` *(off by default)* — `From`/`Into` conversions between this
//! crate's [`Geometry`] and [`geo_types::Geometry`], plus `Coord`. Z/M is
//! silently dropped because `geo-types` is 2D.
//! - `raster` *(off by default)* — adds the [`raster`] module with the
//! raster IR (`RasterTile`, `Band`, `PixelType`, `GeoTransform`,
//! `RasterProfile`, `RasterLayer` trait). Required by `geonative-geotiff`
//! and any raster format / processing crate. Vector-only consumers
//! don't need this feature.
pub use Crs;
pub use ;
pub use ;
pub use Feature;
pub use ;
pub use ;
pub use ;
pub use bbox_from_bytes;
/// Crate version, for diagnostic use.
pub const VERSION: &str = env!;