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
//! Library facade for the stt-build crate.
//!
//! The CLI binary lives at `src/main.rs`; this lib target exposes the
//! same modules so integration tests under `tests/` and external probes
//! can drive the pipeline programmatically.
/// Shared flag → config parsing (`--temporal-bucket`, `--vector-group`,
/// `--quantize-*`, per-tile budgets, attribute filters) used by both the
/// `stt-build` CLI and the `stt-serve` dynamic server, so a live-served tile is
/// configured byte-identically to one built offline.
/// Decode logic shared by the PostGIS and DuckDB input adaptors (row outcome,
/// per-vertex coercion tally, dropped-column warning, integer `--time-format`
/// scaling, NaN→JSON-null) — one definition so the readers can't drift.
pub
/// DuckDB input source — read features from a DuckDB database (or anything
/// DuckDB can scan: Parquet/CSV/… via `read_*`) instead of a GeoParquet file.
/// Gated behind the `duckdb` cargo feature so default builds don't pull the
/// (statically bundled) database engine.
/// PostGIS input source — read features from a live PostgreSQL/PostGIS query
/// instead of a GeoParquet file. Gated behind the `postgres` cargo feature so
/// default builds don't pull the database driver.
/// Encode a single tile's features into an **uncompressed** STT layer-frame
/// tile payload (Arrow IPC + GeoArrow geometry) for an arbitrary
/// `(z, x, y, time-bucket)` — without running the full whole-dataset build (no
/// pack/directory writer, no cross-tile state). These bytes are the frame the
/// offline build feeds INTO the pack writer *before* per-blob zstd, so a
/// dynamic per-request tile server (`stt-serve`) can serve them directly. See
/// [`tiler::encode_single_tile`].
pub use ;