Skip to main content

oxigdal_algorithms/vector/network/
mod.rs

1//! Network analysis for geospatial routing and accessibility
2//!
3//! This module provides comprehensive network analysis capabilities:
4//!
5//! - **Graph structures**: Build network graphs from vector data with directed/undirected support
6//! - **Edge weights**: Multi-criteria weights (distance, time, monetary cost)
7//! - **Graph validation**: Structural integrity checks, self-loop/parallel edge detection
8//! - **Topology cleaning**: Snap nodes, remove duplicates, contract degree-2 chains
9//! - **Shortest path**: Dijkstra, A*, bidirectional search, Floyd-Warshall
10//! - **Turn restrictions**: Edge-based pathfinding with turn penalties and prohibitions
11//! - **Time-dependent routing**: Variable edge costs based on time of day
12//! - **Service areas**: Calculate isochrones and accessibility zones
13//! - **Multi-facility**: Service areas from multiple origins with overlap detection
14//! - **Routing**: Advanced routing with turn penalties, alternatives, waypoint optimization
15//!
16//! All algorithms are optimized for large-scale geospatial networks.
17
18mod graph;
19mod graph_ops;
20mod routing;
21mod service_area;
22mod shortest_path;
23
24pub use graph::{
25    Edge, EdgeId, EdgeWeight, Graph, GraphBuilder, GraphMetrics, GraphType, Node, NodeId, RoadClass,
26};
27pub use graph_ops::{
28    ConnectedComponent, NetworkEdge, NetworkNode, TimeDependentWeight, TopologyCleanResult,
29    TurnPenalties, TurnPenalty, ValidationIssue, ValidationResult, ValidationSeverity,
30    haversine_distance,
31};
32pub use routing::{
33    Route, RouteOptions, RouteResult, RouteSegment, RoutingAlgorithm, RoutingCriteria,
34    TurnRestriction, WaypointOptimizationResult, calculate_route,
35    calculate_route_with_alternatives, calculate_routes_batch, od_matrix, optimize_waypoint_order,
36};
37pub use service_area::{
38    AccessibilityResult, Isochrone, IsochroneOptions, IsochronePolygonMethod, MultiFacilityResult,
39    OverlapZone, ServiceArea, ServiceAreaCostType, ServiceAreaInterval, ServiceAreaOptions,
40    accessibility_score, calculate_drive_time_polygons, calculate_isochrones,
41    calculate_multi_facility_service_area, calculate_multi_isochrones, calculate_service_area,
42};
43pub use shortest_path::{
44    AllPairsResult, PathFindingAlgorithm, ShortestPath, ShortestPathOptions, astar_search,
45    astar_turn_restricted, bidirectional_search, dijkstra_search, dijkstra_single_source,
46    dijkstra_turn_restricted, floyd_warshall, time_dependent_dijkstra,
47};