diff --git a/gen_etl_graph_highway_name.sh b/gen_etl_graph_highway_name.sh new file mode 100755 index 00000000..39afd79f --- /dev/null +++ b/gen_etl_graph_highway_name.sh @@ -0,0 +1,19 @@ + + +DOT=highway_name.dot + +echo "digraph G +{ +rankdir=LR; +" > $DOT + +cat ./layers/highway_name/layer.sql | grep "\-\- etldoc:" | sed 's/-- etldoc://g' >>$DOT +cat ./layers/highway_name/merge_highways.sql | grep "\-\- etldoc:" | sed 's/-- etldoc://g' >>$DOT + +echo " +} +" >> $DOT + +cat $DOT + +dot -Tpng $DOT > layer_highway_names_etl.png diff --git a/layers/highway_name/layer.sql b/layers/highway_name/layer.sql index c9c27a86..100b1fc7 100644 --- a/layers/highway_name/layer.sql +++ b/layers/highway_name/layer.sql @@ -1,31 +1,49 @@ + +-- etldoc: layer_highway_name[shape=record fillcolor=lightpink, style="rounded,filled", +-- etldoc: label="layer_highway_name | z8 | z9 | z10 | z11 | z12| z13| z14_" ] ; + CREATE OR REPLACE FUNCTION layer_highway_name(bbox geometry, zoom_level integer) RETURNS TABLE(osm_id bigint, geometry geometry, name text, ref text, ref_length int, class highway_class, subclass text) AS $$ SELECT osm_id, geometry, name, NULLIF(ref, ''), NULLIF(LENGTH(ref), 0) AS ref_length, to_highway_class(highway) AS class, highway AS subclass FROM ( + + -- etldoc: osm_highway_name_linestring_gen3 -> layer_highway_name:z8 SELECT * FROM osm_highway_name_linestring_gen3 WHERE zoom_level = 8 UNION ALL + + -- etldoc: osm_highway_name_linestring_gen2 -> layer_highway_name:z9 SELECT * FROM osm_highway_name_linestring_gen2 WHERE zoom_level = 9 UNION ALL + + -- etldoc: osm_highway_name_linestring_gen1 -> layer_highway_name:z10 + -- etldoc: osm_highway_name_linestring_gen1 -> layer_highway_name:z11 SELECT * FROM osm_highway_name_linestring_gen1 WHERE zoom_level BETWEEN 10 AND 11 UNION ALL + + -- etldoc: osm_highway_name_linestring -> layer_highway_name:z12 SELECT * FROM osm_highway_name_linestring WHERE zoom_level = 12 AND LineLabel(zoom_level, COALESCE(NULLIF(name, ''), ref), geometry) AND to_highway_class(highway) < 'minor_road'::highway_class AND NOT highway_is_link(highway) UNION ALL + + -- etldoc: osm_highway_name_linestring -> layer_highway_name:z13 SELECT * FROM osm_highway_name_linestring WHERE zoom_level = 13 AND LineLabel(zoom_level, COALESCE(NULLIF(name, ''), ref), geometry) AND to_highway_class(highway) < 'path'::highway_class UNION ALL + + -- etldoc: osm_highway_name_linestring -> layer_highway_name:z14_ SELECT * FROM osm_highway_name_linestring WHERE zoom_level >= 14 + ) AS zoom_levels WHERE geometry && bbox ORDER BY z_order ASC; diff --git a/layers/highway_name/merge_highways.sql b/layers/highway_name/merge_highways.sql index 0f03c298..a96f6d14 100644 --- a/layers/highway_name/merge_highways.sql +++ b/layers/highway_name/merge_highways.sql @@ -2,6 +2,8 @@ -- stitch together the touching ways with the same name -- to allow for nice label rendering -- Because this works well for roads that do not have relations as well + +-- etldoc: osm_highway_linestring -> osm_highway_name_linestring CREATE TABLE IF NOT EXISTS osm_highway_name_linestring AS ( SELECT (ST_Dump(geometry)).geom AS geometry, @@ -30,6 +32,7 @@ CREATE TABLE IF NOT EXISTS osm_highway_name_linestring AS ( CREATE INDEX IF NOT EXISTS osm_highway_name_linestring_geometry_idx ON osm_highway_name_linestring USING gist(geometry); +-- etldoc: osm_highway_name_linestring -> osm_highway_name_linestring_gen1 CREATE TABLE IF NOT EXISTS osm_highway_name_linestring_gen1 AS ( SELECT ST_Simplify(geometry, 50) AS geometry, osm_id, member_osm_ids, name, ref, highway, z_order FROM osm_highway_name_linestring @@ -37,6 +40,7 @@ CREATE TABLE IF NOT EXISTS osm_highway_name_linestring_gen1 AS ( ); CREATE INDEX IF NOT EXISTS osm_highway_name_linestring_gen1_geometry_idx ON osm_highway_name_linestring_gen1 USING gist(geometry); +-- etldoc: osm_highway_name_linestring_gen1 -> osm_highway_name_linestring_gen2 CREATE TABLE IF NOT EXISTS osm_highway_name_linestring_gen2 AS ( SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, member_osm_ids, name, ref, highway, z_order FROM osm_highway_name_linestring_gen1 @@ -44,6 +48,7 @@ CREATE TABLE IF NOT EXISTS osm_highway_name_linestring_gen2 AS ( ); CREATE INDEX IF NOT EXISTS osm_highway_name_linestring_gen2_geometry_idx ON osm_highway_name_linestring_gen2 USING gist(geometry); +-- etldoc: osm_highway_name_linestring_gen2 -> osm_highway_name_linestring_gen3 CREATE TABLE IF NOT EXISTS osm_highway_name_linestring_gen3 AS ( SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, member_osm_ids, name, ref, highway, z_order FROM osm_highway_name_linestring_gen2