Expand description
Β§SciRS2 Spatial - Spatial Algorithms and Data Structures
scirs2-spatial provides comprehensive spatial algorithms modeled after SciPyβs spatial module,
offering distance metrics, KD-trees, ball trees, Delaunay triangulation, convex hulls, Voronoi diagrams,
and path planning with SIMD acceleration and parallel processing.
Β§π― Key Features
- SciPy Compatibility: Drop-in replacement for
scipy.spatialfunctions - Distance Metrics: 20+ metrics (Euclidean, Manhattan, Minkowski, cosine, etc.)
- Spatial Trees: KD-tree and ball tree for efficient nearest neighbor queries
- Computational Geometry: Delaunay triangulation, Voronoi diagrams, convex hulls
- Set Distances: Hausdorff, Wasserstein (Earth Moverβs Distance)
- Path Planning: A*, RRT, visibility graphs for robotics/navigation
- Performance: SIMD-accelerated distance computations, parallel queries
Β§π¦ Module Overview
| SciRS2 Module | SciPy Equivalent | Description |
|---|---|---|
distance | scipy.spatial.distance | Distance metrics and matrices |
KDTree | scipy.spatial.KDTree | K-dimensional tree for nearest neighbors |
cKDTree | scipy.spatial.cKDTree | Optimized KD-tree (C-accelerated) |
ConvexHull | scipy.spatial.ConvexHull | Convex hull computation |
Delaunay | scipy.spatial.Delaunay | Delaunay triangulation |
Voronoi | scipy.spatial.Voronoi | Voronoi diagram |
transform | scipy.spatial.transform | Rotation and transformation utilities |
Β§π Quick Start
[dependencies]
scirs2-spatial = "0.1.0-rc.2"use scirs2_spatial::{KDTree, distance};
use scirs2_core::ndarray::array;
// KD-Tree for nearest neighbor search
let points = array![[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 1.0]];
let tree = KDTree::new(&points).unwrap();
let (indices, dists) = tree.query(&[0.5, 0.5], 2).unwrap();
// Distance computation
let d = distance::euclidean(&[1.0, 2.0], &[4.0, 6.0]);Β§π Version: 0.1.0-rc.2 (October 03, 2025)
Re-exportsΒ§
pub use error::SpatialError;pub use error::SpatialResult;pub use distance::braycurtis;pub use distance::canberra;pub use distance::cdist;pub use distance::chebyshev;pub use distance::correlation;pub use distance::cosine;pub use distance::dice;pub use distance::euclidean;pub use distance::is_valid_condensed_distance_matrix;pub use distance::jaccard;pub use distance::kulsinski;pub use distance::mahalanobis;pub use distance::manhattan;pub use distance::minkowski;pub use distance::pdist;pub use distance::rogerstanimoto;pub use distance::russellrao;pub use distance::seuclidean;pub use distance::sokalmichener;pub use distance::sokalsneath;pub use distance::sqeuclidean;pub use distance::squareform;pub use distance::squareform_to_condensed;pub use distance::yule;pub use distance::ChebyshevDistance;pub use distance::Distance;pub use distance::EuclideanDistance;pub use distance::ManhattanDistance;pub use distance::MinkowskiDistance;pub use kdtree::KDTree;pub use kdtree::Rectangle;pub use kdtree_optimized::KDTreeOptimized;pub use kdtree_advanced::AdvancedKDTree;pub use kdtree_advanced::BoundingBox as KDTreeBoundingBox;pub use kdtree_advanced::KDTreeConfig;pub use kdtree_advanced::TreeStatistics;pub use balltree::BallTree;pub use delaunay::Delaunay;pub use voronoi::voronoi;pub use voronoi::Voronoi;pub use spherical_voronoi::SphericalVoronoi;pub use procrustes::procrustes;pub use procrustes::procrustes_extended;pub use procrustes::ProcrustesParams;pub use convex_hull::convex_hull;pub use convex_hull::ConvexHull;pub use alphashapes::AlphaShape;pub use halfspace::Halfspace;pub use halfspace::HalfspaceIntersection;pub use boolean_ops::compute_polygon_area;pub use boolean_ops::is_convex_polygon;pub use boolean_ops::is_self_intersecting;pub use boolean_ops::polygon_difference;pub use boolean_ops::polygon_intersection;pub use boolean_ops::polygon_symmetric_difference;pub use boolean_ops::polygon_union;pub use kriging::KrigingPrediction;pub use kriging::OrdinaryKriging;pub use kriging::SimpleKriging;pub use kriging::VariogramModel;pub use geospatial::cross_track_distance;pub use geospatial::destination_point;pub use geospatial::final_bearing;pub use geospatial::geographic_to_utm;pub use geospatial::geographic_to_web_mercator;pub use geospatial::haversine_distance;pub use geospatial::initial_bearing;pub use geospatial::midpoint;pub use geospatial::normalize_bearing;pub use geospatial::point_in_spherical_polygon;pub use geospatial::spherical_polygon_area;pub use geospatial::vincenty_distance;pub use geospatial::web_mercator_to_geographic;pub use geospatial::EARTH_RADIUS_KM;pub use geospatial::EARTH_RADIUS_M;pub use set_distance::directed_hausdorff;pub use set_distance::gromov_hausdorff_distance;pub use set_distance::hausdorff_distance;pub use set_distance::wasserstein_distance;pub use polygon::convex_hull_graham;pub use polygon::douglas_peucker_simplify;pub use polygon::is_simple_polygon;pub use polygon::point_in_polygon;pub use polygon::point_on_boundary;pub use polygon::polygon_area;pub use polygon::polygon_centroid;pub use polygon::polygon_contains_polygon;pub use polygon::visvalingam_whyatt_simplify;pub use rtree::RTree;pub use rtree::Rectangle as RTreeRectangle;pub use octree::BoundingBox as OctreeBoundingBox;pub use octree::Octree;pub use quadtree::BoundingBox2D;pub use quadtree::Quadtree;pub use interpolate::IDWInterpolator;pub use interpolate::NaturalNeighborInterpolator;pub use interpolate::RBFInterpolator;pub use interpolate::RBFKernel;pub use pathplanning::astar::AStarPlanner;pub use pathplanning::astar::ContinuousAStarPlanner;pub use pathplanning::astar::GridAStarPlanner;pub use pathplanning::astar::Node;pub use pathplanning::astar::Path;pub use pathplanning::rrt::RRT2DPlanner;pub use pathplanning::rrt::RRTConfig;pub use pathplanning::rrt::RRTPlanner;pub use collision::shapes::Box2D;pub use collision::shapes::Box3D;pub use collision::shapes::Circle;pub use collision::shapes::LineSegment2D;pub use collision::shapes::LineSegment3D;pub use collision::shapes::Sphere;pub use collision::shapes::Triangle2D;pub use collision::shapes::Triangle3D;pub use collision::narrowphase::box2d_box2d_collision;pub use collision::narrowphase::box3d_box3d_collision;pub use collision::narrowphase::circle_box2d_collision;pub use collision::narrowphase::circle_circle_collision;pub use collision::narrowphase::gjk_box_box_collision;pub use collision::narrowphase::gjk_collision_detection;pub use collision::narrowphase::gjk_sphere_box_collision;pub use collision::narrowphase::gjk_sphere_sphere_collision;pub use collision::narrowphase::point_box2d_collision;pub use collision::narrowphase::point_box3d_collision;pub use collision::narrowphase::point_circle_collision;pub use collision::narrowphase::point_sphere_collision;pub use collision::narrowphase::point_triangle2d_collision;pub use collision::narrowphase::ray_box3d_collision;pub use collision::narrowphase::ray_sphere_collision;pub use collision::narrowphase::ray_triangle3d_collision;pub use collision::narrowphase::sphere_box3d_collision;pub use collision::narrowphase::sphere_sphere_collision;pub use collision::narrowphase::GJKShape;pub use collision::continuous::continuous_sphere_sphere_collision;pub use spatial_stats::clark_evans_index;pub use spatial_stats::distance_weights_matrix;pub use spatial_stats::gearys_c;pub use spatial_stats::getis_ord_gi;pub use spatial_stats::local_morans_i;pub use spatial_stats::morans_i;pub use simd_distance::parallel_cdist;pub use simd_distance::parallel_pdist;pub use simd_distance::simd_euclidean_distance;pub use simd_distance::simd_euclidean_distance_batch;pub use simd_distance::simd_knn_search;pub use simd_distance::simd_manhattan_distance;pub use simd_distance::SimdMetric;pub use simd_distance::advanced_simd_clustering::AdvancedSimdKMeans;pub use simd_distance::advanced_simd_clustering::AdvancedSimdNearestNeighbors;pub use simd_distance::bench::benchmark_distance_computation;pub use simd_distance::bench::report_simd_features;pub use simd_distance::bench::BenchmarkResults;pub use simd_distance::mixed_precision_simd::simd_euclidean_distance_batch_f32;pub use simd_distance::mixed_precision_simd::simd_euclidean_distance_f32;pub use memory_pool::global_clustering_arena;pub use memory_pool::global_distance_pool;pub use memory_pool::ArenaStatistics;pub use memory_pool::ClusteringArena;pub use memory_pool::DistanceBuffer;pub use memory_pool::DistancePool;pub use memory_pool::IndexBuffer;pub use memory_pool::MatrixBuffer;pub use memory_pool::MemoryPoolConfig;pub use memory_pool::PoolStatistics;pub use gpu_accel::get_gpu_capabilities;pub use gpu_accel::global_gpu_device;pub use gpu_accel::is_gpu_acceleration_available;pub use gpu_accel::report_gpu_status;pub use gpu_accel::GpuCapabilities;pub use gpu_accel::GpuDevice;pub use gpu_accel::GpuDistanceMatrix;pub use gpu_accel::GpuKMeans;pub use gpu_accel::GpuNearestNeighbors;pub use gpu_accel::HybridProcessor;pub use gpu_accel::ProcessingStrategy;pub use advanced_parallel::get_numa_topology;pub use advanced_parallel::initialize_global_pool;pub use advanced_parallel::report_advanced_parallel_capabilities;pub use advanced_parallel::AdvancedParallelDistanceMatrix;pub use advanced_parallel::AdvancedParallelKMeans;pub use advanced_parallel::MemoryStrategy;pub use advanced_parallel::NumaTopology;pub use advanced_parallel::PoolStatistics as AdvancedPoolStatistics;pub use advanced_parallel::ThreadAffinityStrategy;pub use advanced_parallel::WorkStealingConfig;pub use advanced_parallel::WorkStealingPool;pub use quantum_inspired::algorithms::QuantumSpatialOptimizer;pub use quantum_inspired::ErrorCorrectionConfig;pub use quantum_inspired::ErrorCorrectionType;pub use quantum_inspired::OptimizationConfig;pub use quantum_inspired::OptimizerType;pub use quantum_inspired::PerformanceMetrics;pub use quantum_inspired::QuantumAmplitude;pub use quantum_inspired::QuantumClusterer;pub use quantum_inspired::QuantumConfig;pub use quantum_inspired::QuantumNearestNeighbor;pub use quantum_inspired::QuantumSpatialFramework;pub use quantum_inspired::QuantumState;pub use neuromorphic::AdaptiveSpikingNeuron;pub use neuromorphic::CompetitiveNeuralClusterer;pub use neuromorphic::HomeostaticNeuralClusterer;pub use neuromorphic::HomeostaticSynapse;pub use neuromorphic::MetaplasticSynapse;pub use neuromorphic::NetworkStats;pub use neuromorphic::NeuromorphicCapability;pub use neuromorphic::NeuromorphicConfig;pub use neuromorphic::NeuromorphicFactory;pub use neuromorphic::NeuromorphicProcessor;pub use neuromorphic::SpikeEvent;pub use neuromorphic::SpikeSequence;pub use neuromorphic::SpikingNeuralClusterer;pub use neuromorphic::SpikingNeuron;pub use neuromorphic::Synapse;pub use tensor_cores::detect_tensor_core_capabilities;pub use tensor_cores::GpuArchitecture;pub use tensor_cores::PrecisionMode;pub use tensor_cores::TensorCoreCapabilities;pub use tensor_cores::TensorCoreClustering;pub use tensor_cores::TensorCoreDistanceMatrix;pub use tensor_cores::TensorCoreType;pub use tensor_cores::TensorLayout;pub use ml_optimization::ActivationFunction;pub use ml_optimization::ClusteringParameters;pub use ml_optimization::ClusteringResult;pub use ml_optimization::DataState;pub use ml_optimization::DistanceMetric;pub use ml_optimization::Experience;pub use ml_optimization::NeuralSpatialOptimizer;pub use ml_optimization::ReinforcementLearningSelector;pub use ml_optimization::SpatialAlgorithm;pub use distributed::ClusterStatistics;pub use distributed::DataPartition;pub use distributed::DistributedMessage;pub use distributed::DistributedSpatialCluster;pub use distributed::LoadBalancer;pub use distributed::LoadMetrics;pub use distributed::NodeConfig;pub use distributed::NodeStatus;pub use distributed::QueryResults;pub use distributed::QueryType;pub use distributed::SpatialBounds;pub use adaptive_selection::ActualPerformance;pub use adaptive_selection::AdaptiveAlgorithmSelector;pub use adaptive_selection::AlgorithmParameters;pub use adaptive_selection::AlgorithmSelection;pub use adaptive_selection::DataCharacteristics;pub use adaptive_selection::ExecutionResult;pub use adaptive_selection::PerformancePrediction;pub use adaptive_selection::SelectedAlgorithm;pub use adaptive_selection::SelectionContext;pub use quantum_classical_hybrid::HybridClusterer;pub use quantum_classical_hybrid::HybridClusteringMetrics;pub use quantum_classical_hybrid::HybridOptimizationResult;pub use quantum_classical_hybrid::HybridPerformanceMetrics;pub use quantum_classical_hybrid::HybridSpatialOptimizer;pub use quantum_classical_hybrid::OptimizationStepResult;pub use neuromorphic_quantum_fusion::FusionMetrics;pub use neuromorphic_quantum_fusion::NeuralQuantumOptimizationResult;pub use neuromorphic_quantum_fusion::NeuralQuantumOptimizer;pub use neuromorphic_quantum_fusion::QuantumSpikeEvent;pub use neuromorphic_quantum_fusion::QuantumSpikePattern;pub use neuromorphic_quantum_fusion::QuantumSpikingClusterer;pub use neuromorphic_quantum_fusion::QuantumSpikingNeuron;pub use next_gen_gpu_architecture::NextGenGpuArchitecture;pub use next_gen_gpu_architecture::NextGenPerformanceMetrics;pub use next_gen_gpu_architecture::PhotonicAccelerator;pub use next_gen_gpu_architecture::PhotonicProcessingUnit;pub use next_gen_gpu_architecture::QuantumGpuProcessor;pub use next_gen_gpu_architecture::QuantumProcessingUnit;pub use generic_traits::ChebyshevMetric;pub use generic_traits::EuclideanMetric;pub use generic_traits::ManhattanMetric;pub use generic_traits::Point;pub use generic_traits::SpatialArray;pub use generic_traits::SpatialPoint;pub use generic_traits::SpatialScalar;pub use generic_algorithms::DBSCANResult;pub use generic_algorithms::GMMResult;pub use generic_algorithms::GenericConvexHull;pub use generic_algorithms::GenericDBSCAN;pub use generic_algorithms::GenericDistanceMatrix;pub use generic_algorithms::GenericGMM;pub use generic_algorithms::GenericKDTree;pub use generic_algorithms::GenericKMeans;pub use generic_algorithms::KMeansResult;pub use ai_driven_optimization::AIAlgorithmSelector;pub use ai_driven_optimization::AdaptationRecord;pub use ai_driven_optimization::AlgorithmCandidate;pub use ai_driven_optimization::AlgorithmKnowledgeBase;pub use ai_driven_optimization::AlgorithmMetadata;pub use ai_driven_optimization::ComplexityModel;pub use ai_driven_optimization::MetaLearningModel;pub use ai_driven_optimization::MetaLearningOptimizer;pub use ai_driven_optimization::MetaOptimizationResult;pub use ai_driven_optimization::PerformanceModel;pub use ai_driven_optimization::PerformanceRecord;pub use ai_driven_optimization::PredictionNetworks;pub use ai_driven_optimization::ReinforcementLearningAgent;pub use ai_driven_optimization::TaskMetadata;pub use extreme_performance_optimization::benchmark_extreme_optimizations;pub use extreme_performance_optimization::create_ultimate_optimizer;pub use extreme_performance_optimization::AdvancedfastDistanceMatrix;pub use extreme_performance_optimization::CacheHierarchyInfo;pub use extreme_performance_optimization::CacheObliviousSpatialAlgorithms;pub use extreme_performance_optimization::ExtremeMemoryAllocator;pub use extreme_performance_optimization::ExtremeOptimizer;pub use extreme_performance_optimization::ExtremePerformanceMetrics;pub use extreme_performance_optimization::HardwarePerformanceCounters;pub use extreme_performance_optimization::JitCompiler;pub use extreme_performance_optimization::LockFreeSpatialStructures;pub use extreme_performance_optimization::NumaTopologyInfo;pub use extreme_performance_optimization::OptimizationRecord;pub use extreme_performance_optimization::SelfOptimizingAlgorithm;
ModulesΒ§
- adaptive_
selection - Real-time adaptive algorithm selection system
- advanced_
parallel - Advanced-parallel algorithms with work-stealing and NUMA-aware optimizations
- ai_
driven_ optimization - AI-Driven Algorithm Selection and Optimization (Advanced Mode)
- alphashapes
- Alpha shapes implementation for spatial analysis
- balltree
- Ball tree for efficient nearest neighbor searches
- boolean_
ops - Boolean operations for polygons and polyhedra
- collision
- Collision detection algorithms for various geometric primitives
- convex_
hull - Convex hull algorithms and utilities
- delaunay
- Delaunay triangulation algorithms
- distance
- Distance metrics for spatial data
- distributed
- Distributed spatial computing framework
- error
- Error types for the SciRS2 spatial module
- extreme_
performance_ optimization - Extreme Performance Optimization (Advanced Mode)
- generic_
algorithms - Generic implementations of spatial algorithms
- generic_
traits - Generic traits and type parameters for spatial algorithms
- geospatial
- Geospatial functionality for working with geographic coordinates
- gpu_
accel - GPU acceleration for spatial algorithms
- halfspace
- Halfspace intersection and convex polytope construction
- interpolate
- Spatial interpolation methods
- kdtree
- KD-Tree for efficient nearest neighbor searches
- kdtree_
advanced - Advanced-optimized KD-Tree implementations with advanced performance features
- kdtree_
optimized - KD-Tree optimizations for common spatial operations
- kriging
- Kriging interpolation methods
- memory_
pool - Advanced-optimized memory pool system for spatial algorithms
- ml_
optimization - Machine learning-based spatial optimization
- neuromorphic
- Neuromorphic Computing for Spatial Data Processing
- neuromorphic_
quantum_ fusion - Neuromorphic-Quantum Fusion Algorithms (Advanced Mode)
- next_
gen_ gpu_ architecture - Next-Generation GPU Architecture Support (Advanced Mode)
- octree
- Octree data structure for 3D space
- pathplanning
- Path planning algorithms
- polygon
- Polygon operations module
- procrustes
- Procrustes analysis
- quadtree
- Quadtree data structure for 2D space
- quantum_
classical_ hybrid - Quantum-Classical Hybrid Spatial Algorithms (Advanced Mode)
- quantum_
inspired - Quantum-Inspired Spatial Algorithms
- rtree
- R-tree implementation for efficient spatial indexing
- set_
distance - Set-based distance metrics
- simd_
distance - SIMD-accelerated distance calculations for spatial operations
- spatial_
stats - Spatial statistics module for analyzing spatial patterns and relationships
- spherical_
voronoi - SphericalVoronoi Implementation
- tensor_
cores - Advanced GPU Tensor Core utilization for spatial algorithms
- transform
- voronoi
- Voronoi diagrams