obs-portal/tile-generator/layers/obs_events/layer.sql

26 lines
1.3 KiB
MySQL
Raw Normal View History

2024-01-25 23:19:59 +00:00
DROP FUNCTION IF EXISTS layer_obs_events(bbox geometry, zoom_level int, user_id integer, min_time timestamp, max_time timestamp);
2022-04-30 18:31:32 +00:00
CREATE OR REPLACE FUNCTION layer_obs_events(bbox geometry, zoom_level int, user_id integer, min_time timestamp, max_time timestamp)
RETURNS TABLE(event_id bigint, geometry geometry, distance_overtaker float, distance_stationary float, direction int, course float, speed float, time_stamp timestamp, zone zone_type, way_id bigint) AS $$
SELECT
2022-04-30 18:31:32 +00:00
overtaking_event.id::bigint as event_id,
2023-04-01 14:44:47 +00:00
overtaking_event.geometry as geometry,
distance_overtaker,
distance_stationary,
(case when direction_reversed then -1 else 1 end)::int as direction,
course,
speed,
time as time_stamp,
CASE WHEN road.zone IS NULL THEN 'urban' else road.zone END as zone,
overtaking_event.way_id::bigint as way_id
FROM overtaking_event
2022-04-30 18:31:32 +00:00
FULL OUTER JOIN road ON road.way_id = overtaking_event.way_id
JOIN track on track.id = overtaking_event.track_id
2023-04-01 14:44:47 +00:00
WHERE overtaking_event.geometry && bbox
2023-03-31 19:06:59 +00:00
AND zoom_level >= 8
2022-04-30 18:31:32 +00:00
AND (user_id is NULL OR user_id = track.author_id)
AND time BETWEEN COALESCE(min_time, '1900-01-01'::timestamp) AND COALESCE(max_time, '2100-01-01'::timestamp);
$$ LANGUAGE SQL IMMUTABLE;