Mercurial > gemma
view schema/geoserver_views.sql @ 3302:ec6163c6687d
'Historicise' gauges on import
Gauge data sets will be updated or a new version will be inserted
depending on temporal validity and a timestamp marking the last
update in the RIS-Index of a data set. The trigger on date_info is
removed because the value is actually an attribut coming from the
RIS-Index.
Gauge measurements and predictions are associated to the version with
matching temporal validity. Bottlenecks are always associated to the
actual version of the gauge, although this might change as soon as
bottlenecks are 'historicised', too.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 16 May 2019 18:41:43 +0200 |
parents | 831193935739 |
children | b90b17d0b5a9 |
line wrap: on
line source
CREATE OR REPLACE VIEW waterway.gauges_geoserver AS SELECT g.location, isrs_asText(g.location) AS isrs_code, g.objname, g.geom, g.applicability_from_km, g.applicability_to_km, g.validity, g.zero_point, g.geodref, g.date_info, g.source_organization, json_strip_nulls(json_object_agg(coalesce(r.depth_reference,'empty'), r.value)) AS reference_water_levels FROM waterway.gauges g LEFT JOIN waterway.gauges_reference_water_levels r USING (location, validity) WHERE NOT g.erased GROUP BY g.location, g.validity; CREATE OR REPLACE VIEW waterway.distance_marks_geoserver AS SELECT location_code, isrs_asText(location_code) AS location, geom::Geometry(POINT, 4326), related_enc, (location_code).hectometre FROM waterway.distance_marks_virtual; CREATE OR REPLACE VIEW waterway.distance_marks_ashore_geoserver AS SELECT id, country, geom::Geometry(POINT, 4326), related_enc, hectom, catdis, position_code FROM waterway.distance_marks; CREATE OR REPLACE VIEW waterway.bottlenecks_geoserver AS WITH fairway_availability_latest AS ( SELECT DISTINCT ON (bottleneck_id) bottleneck_id, date_info, critical FROM waterway.fairway_availability ORDER BY bottleneck_id, date_info DESC), waterlevel_latest AS ( SELECT DISTINCT ON (location) location, water_level FROM waterway.gauge_measurements ORDER BY location, measure_date DESC) SELECT b.id, b.bottleneck_id, b.objnam, b.nobjnm, b.stretch, b.area, b.rb, b.lb, b.responsible_country, b.revisiting_time, b.limiting, b.date_info, b.source_organization, g.location AS gauge_isrs_code, g.objname AS gauge_objname, json_strip_nulls(json_object_agg(coalesce(r.depth_reference,'empty'), r.value)) AS reference_water_levels, fal.date_info AS fa_date_info, fal.critical AS fa_critical, wl.water_level AS gm_waterlevel FROM waterway.bottlenecks b LEFT JOIN waterway.gauges g ON b.gauge_location = g.location AND b.gauge_validity = g.validity LEFT JOIN waterway.gauges_reference_water_levels r USING (location, validity) LEFT JOIN fairway_availability_latest fal ON b.id = fal.bottleneck_id LEFT JOIN waterlevel_latest wl USING (location) WHERE NOT g.erased GROUP BY b.id, g.location, g.validity, fal.date_info, fal.critical, wl.water_level; CREATE OR REPLACE VIEW waterway.stretches_geoserver AS SELECT id, name, (stretch).lower::varchar as lower, (stretch).upper::varchar as upper, area::Geometry(MULTIPOLYGON, 4326), objnam, nobjnam, date_info, source_organization, (SELECT string_agg(country_code, ', ') FROM waterway.stretch_countries WHERE stretches_id = id) AS countries, staging_done FROM waterway.stretches; CREATE OR REPLACE VIEW waterway.sounding_results_contour_lines_geoserver AS SELECT bottleneck_id, date_info, height, CAST(lines AS geometry(multilinestring, 4326)) AS lines FROM waterway.sounding_results_contour_lines cl JOIN waterway.sounding_results sr ON sr.id = cl.sounding_result_id; CREATE OR REPLACE VIEW waterway.bottleneck_overview AS SELECT objnam AS name, ST_Centroid(area)::Geometry(POINT, 4326) AS point, (lower(stretch)).hectometre AS from, (upper(stretch)).hectometre AS to, sr.current::text, responsible_country FROM waterway.bottlenecks bn LEFT JOIN ( SELECT bottleneck_id, max(date_info) AS current FROM waterway.sounding_results GROUP BY bottleneck_id) sr ON sr.bottleneck_id = bn.id ORDER BY objnam; CREATE OR REPLACE VIEW waterway.sounding_differences AS SELECT sd.id AS id, bn.objnam AS objnam, srm.date_info AS minuend, srs.date_info AS subtrahend, sdcl.height AS height, CAST(sdcl.lines AS geometry(multilinestring, 4326)) AS lines FROM caching.sounding_differences sd JOIN caching.sounding_differences_contour_lines sdcl ON sd.id = sdcl.sounding_differences_id JOIN waterway.sounding_results srm ON sd.minuend = srm.id JOIN waterway.sounding_results srs ON sd.subtrahend = srs.id JOIN waterway.bottlenecks bn ON srm.bottleneck_id = bn.id;