oxigdal_qc/lib.rs
1//! OxiGDAL Quality Control and Validation Suite
2//!
3//! This crate provides comprehensive quality control and validation for geospatial data,
4//! including raster and vector data integrity checks, metadata validation, and automatic fixes.
5//!
6//! # Features
7//!
8//! - **Raster Quality Control**: Completeness, consistency, and accuracy checks
9//! - **Vector Quality Control**: Topology validation and attribution checks
10//! - **Metadata Validation**: ISO 19115 and STAC completeness
11//! - **Rules Engine**: Configurable quality rules via TOML
12//! - **Automatic Fixes**: Safe automatic repairs for common issues
13//! - **Reporting**: HTML and JSON report generation
14//!
15//! # Example Usage
16//!
17//! ```rust
18//! use oxigdal_qc::prelude::*;
19//! use oxigdal_core::buffer::RasterBuffer;
20//! use oxigdal_core::types::RasterDataType;
21//!
22//! // Check raster completeness
23//! let buffer = RasterBuffer::zeros(1000, 1000, RasterDataType::Float32);
24//! let checker = CompletenessChecker::new();
25//! let result = checker.check_buffer(&buffer)?;
26//!
27//! println!("Valid pixels: {}/{}", result.valid_pixels, result.total_pixels);
28//! # Ok::<(), oxigdal_qc::error::QcError>(())
29//! ```
30//!
31//! # Module Organization
32//!
33//! - [`error`] - Error types and severity levels
34//! - [`raster`] - Raster quality control checks
35//! - [`vector`] - Vector quality control checks
36//! - [`metadata`] - Metadata validation
37//! - [`report`] - Report generation
38//! - [`rules`] - Quality rules engine
39//! - [`fix`] - Automatic fixes
40
41#![warn(missing_docs)]
42#![warn(clippy::all)]
43// Pedantic disabled to reduce noise - default clippy::all is sufficient
44// #![warn(clippy::pedantic)]
45#![deny(clippy::unwrap_used)]
46#![deny(clippy::panic)]
47#![allow(clippy::module_name_repetitions)]
48#![allow(clippy::missing_errors_doc)]
49#![allow(clippy::missing_panics_doc)]
50
51pub mod error;
52pub mod fix;
53pub mod metadata;
54pub mod raster;
55pub mod report;
56pub mod rules;
57pub mod vector;
58
59/// Prelude module for convenient imports.
60pub mod prelude {
61 /// Convenient re-exports of commonly used types and traits.
62 pub use crate::error::{QcError, QcIssue, QcResult, Severity};
63 pub use crate::fix::{FixResult, FixStrategy, TopologyFixer};
64 pub use crate::metadata::{MetadataChecker, MetadataConfig, MetadataResult, MetadataStandard};
65 pub use crate::raster::{
66 AccuracyChecker, AccuracyConfig, AccuracyResult, CompletenessChecker, CompletenessConfig,
67 CompletenessResult, ConsistencyChecker, ConsistencyConfig, ConsistencyResult,
68 };
69 pub use crate::report::{QualityAssessment, QualityReport, ReportSection};
70 pub use crate::rules::{
71 ComparisonOperator, QualityRule, RuleBuilder, RuleCategory, RuleSet, RulesEngine,
72 };
73 pub use crate::vector::{
74 AttributionChecker, AttributionConfig, AttributionResult, TopologyChecker, TopologyConfig,
75 TopologyResult,
76 };
77}
78
79/// Crate version
80pub const VERSION: &str = env!("CARGO_PKG_VERSION");
81
82/// Crate name
83pub const NAME: &str = env!("CARGO_PKG_NAME");
84
85#[cfg(test)]
86mod tests {
87 use super::*;
88
89 #[test]
90 fn test_version() {
91 assert!(!VERSION.is_empty());
92 assert_eq!(NAME, "oxigdal-qc");
93 }
94
95 #[test]
96 fn test_prelude_imports() {
97 use prelude::*;
98
99 // Test that common types are accessible
100 let _severity = Severity::Major;
101 let _assessment = QualityAssessment::Good;
102 let _strategy = FixStrategy::Conservative;
103 }
104}