carthorse
Version:
A geospatial trail data processing pipeline for building 3D trail databases with elevation data
62 lines • 2.4 kB
TypeScript
import { Pool, Client } from 'pg';
export interface RoutePattern {
pattern_name: string;
target_distance_km: number;
target_elevation_gain: number;
route_shape: string;
route_type: string;
tolerance_percent: number;
}
export interface RouteRecommendation {
route_uuid: string;
route_name: string;
route_type: string;
route_shape: string;
input_length_km: number;
input_elevation_gain: number;
recommended_length_km: number;
recommended_elevation_gain: number;
route_path: any;
route_edges: any[];
trail_count: number;
route_score: number;
similarity_score: number;
region: string;
constituent_trails?: any[];
unique_trail_count?: number;
total_trail_distance_km?: number;
total_trail_elevation_gain_m?: number;
out_and_back_distance_km?: number;
out_and_back_elevation_gain_m?: number;
}
export declare class KspRouteGenerator {
private pgClient;
private stagingSchema;
constructor(pgClient: Pool | Client, stagingSchema: string);
generateRouteRecommendations(): Promise<RouteRecommendation[]>;
private loadRoutePatterns;
private addLengthAndElevationColumns;
private getRegionFromStagingSchema;
storeRecommendationsInDatabase(recommendations: RouteRecommendation[]): Promise<void>;
/**
* Generate out-and-back routes using KSP algorithm
* For out-and-back routes, we target half the distance since we'll double it for the return journey
*/
generateOutAndBackRoutes(pattern: RoutePattern, targetRoutes?: number): Promise<RouteRecommendation[]>;
private fixConnectivityIssues;
/**
* Generate loop routes using pgRouting's native algorithms
* Uses pgr_dijkstra to find paths that return to the start point
*/
generateLoopRoutes(pattern: RoutePattern, targetRoutes?: number): Promise<RouteRecommendation[]>;
/**
* Generate point-to-point routes using pgRouting's pgr_dijkstra
*/
generatePointToPointRoutes(pattern: RoutePattern, targetRoutes?: number): Promise<RouteRecommendation[]>;
/**
* Generate routes using pgr_withPoints for more flexible routing
* This allows starting/ending anywhere on edges, not just at nodes
*/
generateWithPointsRoutes(pattern: RoutePattern, targetRoutes?: number): Promise<RouteRecommendation[]>;
}
//# sourceMappingURL=ksp-route-generator.d.ts.map