Files
ukmesh/viewshed-worker/tests/coverage_dry_run_input.sql
T

34 lines
1.3 KiB
SQL

-- Read-only input stream for dry_run_coverage.py. Run psql with -At so each
-- returned value is passed through as one tab-separated protocol line.
WITH eligible AS (
SELECT n.node_id, n.lat, n.lon
FROM nodes n
WHERE n.lat BETWEEN 49.5 AND 61.5
AND n.lon BETWEEN -8.5 AND 2.5
AND n.lat IS NOT NULL
AND n.lon IS NOT NULL
AND NOT (ABS(n.lat) < 1e-9 AND ABS(n.lon) < 1e-9)
AND (n.role IS NULL OR n.role = 2)
AND (n.name IS NULL OR n.name NOT LIKE '%🚫%')
), input_lines AS (
SELECT 0 AS section, e.lat AS sort_lat, e.node_id AS sort_id,
concat_ws(E'\t', 'N', e.node_id, e.lat::text, e.lon::text) AS line
FROM eligible e
UNION ALL
SELECT 1 AS section, 0::double precision AS sort_lat,
nl.node_a_id || ':' || nl.node_b_id AS sort_id,
concat_ws(
E'\t', 'L', nl.node_a_id, nl.node_b_id,
na.lat::text, na.lon::text, nb.lat::text, nb.lon::text
) AS line
FROM node_links nl
JOIN nodes na ON na.node_id = nl.node_a_id
JOIN nodes nb ON nb.node_id = nl.node_b_id
WHERE na.lat IS NOT NULL
AND na.lon IS NOT NULL
AND nb.lat IS NOT NULL
AND nb.lon IS NOT NULL
AND (nl.itm_viable = true OR nl.force_viable = true)
)
SELECT line FROM input_lines ORDER BY section, sort_lat, sort_id;