Skip to main content

stt_optimize/
lib.rs

1//! stt-optimize as a library.
2//!
3//! `stt-build --auto` calls into [`recommend_for`] to pick zoom levels and
4//! a temporal bucket from an input file before building.
5//! The CLI in `main.rs` is a thin wrapper around the same functions.
6
7pub mod analysis;
8pub mod loader;
9pub mod recommend;
10pub mod report;
11
12use anyhow::Result;
13
14pub use loader::DataSource;
15pub use recommend::Recommendations;
16
17/// Analyze a GeoParquet or STT input and produce build recommendations.
18pub fn recommend_for(source: &DataSource) -> Result<Recommendations> {
19    let data = loader::load_data(source)?;
20    let spatial = analysis::spatial::analyze(&data)?;
21    let temporal = analysis::temporal::analyze(&data)?;
22    let geometry = analysis::geometry::analyze(&data)?;
23    let density = analysis::density::analyze(&data, &spatial)?;
24    let result = analysis::AnalysisResult {
25        source: source.display_name(),
26        feature_count: data.features.len(),
27        spatial,
28        temporal,
29        geometry,
30        density,
31    };
32    Ok(recommend::generate_recommendations(&result))
33}