pub mod advisors;
pub mod analysis;
pub mod diff;
pub mod doctor;
pub mod loader;
pub mod measure;
pub mod packed;
pub mod recommend;
pub mod report;
use anyhow::Result;
pub use analysis::inspect::InspectReport;
pub use diff::DiffReport;
pub use doctor::DoctorReport;
pub use loader::DataSource;
pub use packed::PackedTileset;
pub use recommend::Recommendations;
pub fn recommend_for(source: &DataSource) -> Result<Recommendations> {
let data = loader::load_data(source)?;
let spatial = analysis::spatial::analyze(&data)?;
let temporal = analysis::temporal::analyze(&data)?;
let geometry = analysis::geometry::analyze(&data)?;
let measured = measure::measure_sample(&data.sample, &measure::MeasureSettings::default())?;
let density = analysis::density::analyze(&data, &spatial, &temporal, measured.as_ref())?;
let result = analysis::AnalysisResult {
source: source.display_name(),
feature_count: data.features.len(),
bounds: data.bounds,
spatial,
temporal,
geometry,
density,
measured,
};
let advice = advisors::run_all(&result, &data)?;
Ok(recommend::generate_recommendations(&result, advice))
}