carthorse
Version:
A geospatial trail data processing pipeline for building 3D trail databases with elevation data
118 lines • 4.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExportQueries = void 0;
// Export SQL queries
exports.ExportQueries = {
// Get trails for export
getTrailsForExport: (schemaName) => `
SELECT
*,
surface as surface_type,
CASE
WHEN difficulty = 'unknown' THEN 'moderate'
ELSE difficulty
END as difficulty,
ST_AsGeoJSON(geometry, 6, 0) AS geojson
FROM ${schemaName}.trails
`,
// Get routing nodes for export
exportRoutingNodesForGeoJSON: (schemaName) => `
SELECT
id, id as node_uuid, ST_Y(the_geom) as lat, ST_X(the_geom) as lng, 0 as elevation, node_type, '' as connected_trails, ARRAY[]::text[] as trail_ids, ST_AsGeoJSON(the_geom) as geojson
FROM ${schemaName}.ways_noded_vertices_pgr
WHERE the_geom IS NOT NULL
ORDER BY id
`,
// Get routing nodes for export
exportRoutingNodesForSQLite: (schemaName) => `
SELECT
id, id as node_uuid, ST_Y(the_geom) as lat, ST_X(the_geom) as lng, 0 as elevation, node_type, '' as connected_trails, ARRAY[]::text[] as trail_ids, NOW() as created_at
FROM ${schemaName}.ways_noded_vertices_pgr
WHERE the_geom IS NOT NULL
ORDER BY id
`,
// Get routing edges for export
getRoutingEdgesForExport: (schemaName) => `
SELECT
id,
source, -- ✅ Use correct column name
target, -- ✅ Use correct column name
app_uuid as trail_id, -- ✅ Use ways_noded column mapping
name as trail_name, -- ✅ Use ways_noded column mapping
length_km,
elevation_gain,
elevation_loss,
true as is_bidirectional, -- ✅ Default to bidirectional
NOW() as created_at,
ST_AsGeoJSON(the_geom, 6, 0) AS geojson -- ✅ Use ways_noded geometry
FROM ${schemaName}.ways_noded
WHERE source IS NOT NULL AND target IS NOT NULL -- ✅ Use correct column names
`,
// Get route recommendations for export
getRouteRecommendationsForExport: (schemaName) => `
SELECT
route_uuid,
region,
input_length_km,
input_elevation_gain,
recommended_length_km,
recommended_elevation_gain,
route_type,
route_shape,
trail_count,
route_score,
route_path,
route_edges,
route_name,
created_at
FROM ${schemaName}.route_recommendations
`,
// Get routing nodes with fallback values
getRoutingNodesForExportWithFallbacks: (schemaName) => `
SELECT
id,
COALESCE(node_uuid, gen_random_uuid()::text) as node_uuid,
lat,
lng,
elevation,
COALESCE(node_type, 'intersection') as node_type,
COALESCE(connected_trails, '') as connected_trails,
NOW() as created_at
FROM ${schemaName}.routing_nodes
`,
// Get routing edges with distance column
getRoutingEdgesForExportWithDistance: (schemaName) => `
SELECT
id,
source,
target,
app_uuid as trail_id, -- ✅ Use ways_noded column mapping
name as trail_name, -- ✅ Use ways_noded column mapping
length_km,
ST_AsGeoJSON(the_geom, 6, 0) AS geojson, -- ✅ Use ways_noded geometry
NOW() as created_at
FROM ${schemaName}.ways_noded
WHERE source IS NOT NULL AND target IS NOT NULL
`,
// Check if route recommendations exist
checkRouteRecommendationsExist: (schemaName) => `
SELECT COUNT(*) as count FROM ${schemaName}.route_recommendations
`,
// Get export statistics
getExportStats: (schemaName) => `
SELECT
(SELECT COUNT(*) FROM ${schemaName}.trails) as trail_count,
(SELECT COUNT(*) FROM ${schemaName}.ways_noded_vertices_pgr) as node_count,
(SELECT COUNT(*) FROM ${schemaName}.ways_noded) as edge_count,
(SELECT COUNT(*) FROM ${schemaName}.route_recommendations) as recommendation_count
`,
// Get network statistics
getNetworkStatistics: (schemaName) => `
SELECT
(SELECT COUNT(*) FROM ${schemaName}.trails) as trail_count,
(SELECT COUNT(*) FROM ${schemaName}.ways_noded_vertices_pgr) as node_count,
(SELECT COUNT(*) FROM ${schemaName}.ways_noded) as edge_count,
(SELECT COUNT(*) FROM ${schemaName}.route_recommendations) as route_count
`
};
//# sourceMappingURL=export-queries.js.map