Skip to main content

spatialrust_io/
lib.rs

1//! Point cloud and spatial data IO for SpatialRust.
2//!
3//! Format support is feature-gated. Core reader/writer traits live here.
4
5#![deny(unsafe_code)]
6#![warn(missing_docs)]
7
8mod error;
9mod format;
10#[cfg(feature = "io-manifest")]
11mod manifest;
12mod options;
13#[cfg(feature = "streaming")]
14mod spool;
15mod storage;
16#[cfg(all(
17    feature = "streaming",
18    any(feature = "io-pcd", feature = "io-ply", feature = "io-las", feature = "io-copc")
19))]
20mod streaming;
21mod traits;
22
23#[cfg(feature = "io-pcd")]
24/// PCD (Point Cloud Data) readers and writers.
25pub mod pcd;
26
27#[cfg(feature = "io-ply")]
28/// PLY (Polygon File Format) readers and writers.
29pub mod ply;
30
31#[cfg(feature = "io-las")]
32/// LAS/LAZ (ASPRS LiDAR) readers and writers.
33pub mod las;
34
35#[cfg(feature = "io-e57")]
36/// E57 (ASTM E2807) readers and writers.
37pub mod e57;
38
39#[cfg(feature = "io-copc")]
40/// COPC (Cloud Optimized Point Cloud) readers and writers.
41pub mod copc;
42
43pub use error::IoError;
44pub use format::{
45    detect_point_cloud_format, read_point_cloud_file, read_point_cloud_file_with_format,
46    write_point_cloud_file, write_point_cloud_file_with_format, PointCloudFileFormat,
47};
48#[cfg(feature = "io-manifest")]
49pub use manifest::{
50    DatasetManifest, FileReceipt, ManifestValidation, ReceiptRole, DATASET_MANIFEST_VERSION,
51};
52pub use options::{ReadOptions, WriteOptions};
53#[cfg(feature = "streaming")]
54pub use spool::{BoundedSpool, SpoolOptions};
55pub use storage::StorageRoots;
56#[cfg(feature = "storage-preflight")]
57pub use storage::{StoragePreflight, DEFAULT_MIN_OUTPUT_FREE_BYTES};
58pub use traits::{PointReader, PointSink, PointStream, PointWriter};
59
60#[cfg(feature = "io-pcd")]
61pub use pcd::{
62    infer_field_semantic, read_pcd, read_pcd_file, schema_from_pcd_fields, write_pcd,
63    write_pcd_file, PcdDataKind, PcdFieldSpec, PcdHeader, PcdReader, PcdType, PcdWriteFormat,
64    PcdWriter,
65};
66#[cfg(all(feature = "io-pcd", feature = "streaming"))]
67pub use pcd::{PcdChunkSink, PcdChunkSource};
68
69#[cfg(feature = "io-ply")]
70pub use ply::{
71    infer_property_semantic, ply_property_from_field, read_ply, read_ply_file,
72    schema_from_ply_properties, write_ply, write_ply_file, PlyFormat, PlyHeader, PlyProperty,
73    PlyPropertyKind, PlyReader, PlyWriteFormat, PlyWriter,
74};
75#[cfg(all(feature = "io-ply", feature = "streaming"))]
76pub use ply::{PlyChunkSink, PlyChunkSource};
77
78#[cfg(feature = "io-las")]
79pub use las::{
80    infer_las_field_semantic, read_las, read_las_file, schema_for_las_header,
81    schema_from_point_cloud, write_las, write_las_file, LasReader, LasWriteFormat, LasWriter,
82};
83#[cfg(all(feature = "io-las", feature = "streaming"))]
84pub use las::{LasChunkSink, LasChunkSource};
85
86#[cfg(feature = "io-e57")]
87pub use e57::{
88    e57_prototype_from_schema, read_e57, read_e57_file, schema_for_e57_pointcloud,
89    schema_from_point_cloud as e57_schema_from_point_cloud, write_e57, write_e57_file, E57Reader,
90    E57Writer,
91};
92
93#[cfg(feature = "io-copc")]
94pub use copc::{
95    copc_level_for_resolution, read_copc, read_copc_file, read_copc_file_in_bounds,
96    read_copc_file_info, read_copc_file_with_query, write_copc, write_copc_file,
97    write_copc_file_with_params, CopcBounds, CopcFileInfo, CopcNode, CopcNodeReader, CopcQuery,
98    CopcReader, CopcWriter, CopcWriterParams,
99};
100#[cfg(all(feature = "io-copc", feature = "streaming"))]
101pub use copc::{write_copc_stream, CopcChunkSource, CopcStreamingWriteReceipt};
102
103#[cfg(feature = "io-copc-http")]
104pub use copc::{read_copc_url, read_copc_url_info, read_copc_url_with_query, HttpByteSource};