Skip to content

Commit d9c1124

Browse files
committed
Simplify materialized views by deriving them from higher-level materialized views
1 parent 97972c2 commit d9c1124

File tree

6 files changed

+35
-169
lines changed

6 files changed

+35
-169
lines changed

images/tiler-imposm/queries/ohm_mviews/admin_boundaries_lines.sql

Lines changed: 23 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -294,186 +294,49 @@ ON mv_admin_boundaries_relations_ways USING GIST (geometry);
294294
-- ============================================================================
295295
SELECT log_notice('STEP 6: Create a materialized view for zoom levels');
296296

297-
-- ==========================================
298-
-- MViews for admin lines zoom 0-2
299-
-- ==========================================
300-
DROP MATERIALIZED VIEW IF EXISTS mv_admin_boundaries_lines_z0_2 CASCADE;
301-
CREATE MATERIALIZED VIEW mv_admin_boundaries_lines_z0_2 AS
302-
SELECT
303-
type,
304-
admin_level,
305-
member,
306-
ST_SimplifyPreserveTopology(geometry, 5000) AS geometry,
307-
group_id,
308-
start_decdate,
309-
end_decdate,
310-
start_date,
311-
end_date
312-
FROM mv_admin_boundaries_relations_ways
313-
WHERE admin_level IN (1,2)
314-
WITH DATA;
315-
316-
CREATE UNIQUE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z0_2_idx
317-
ON mv_admin_boundaries_lines_z0_2 (admin_level, member, group_id);
318-
319-
CREATE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z0_2_geometry_idx
320-
ON mv_admin_boundaries_lines_z0_2 USING GIST (geometry);
321-
322-
-- ==========================================
323-
-- MViews for admin lines zoom 3-5
324-
-- ==========================================
325-
DROP MATERIALIZED VIEW IF EXISTS mv_admin_boundaries_lines_z3_5 CASCADE;
326-
CREATE MATERIALIZED VIEW mv_admin_boundaries_lines_z3_5 AS
327-
SELECT
328-
type,
329-
admin_level,
330-
member,
331-
ST_SimplifyPreserveTopology(geometry, 1000) AS geometry,
332-
group_id,
333-
start_decdate,
334-
end_decdate,
335-
start_date,
336-
end_date
337-
FROM mv_admin_boundaries_relations_ways
338-
WHERE admin_level IN (1,2,3,4)
339-
WITH DATA;
340-
341-
CREATE UNIQUE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z3_5_idx
342-
ON mv_admin_boundaries_lines_z3_5 (admin_level, member, group_id);
343-
344-
CREATE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z3_5_geometry_idx
345-
ON mv_admin_boundaries_lines_z3_5 USING GIST (geometry);
346-
347-
-- ==========================================
348-
-- MViews for admin lines zoom 6-7
349-
-- ==========================================
350-
DROP MATERIALIZED VIEW IF EXISTS mv_admin_boundaries_lines_z6_7 CASCADE;
351-
CREATE MATERIALIZED VIEW mv_admin_boundaries_lines_z6_7 AS
352-
SELECT
353-
type,
354-
admin_level,
355-
member,
356-
ST_SimplifyPreserveTopology(geometry, 200) AS geometry,
357-
group_id,
358-
start_decdate,
359-
end_decdate,
360-
start_date,
361-
end_date
362-
FROM mv_admin_boundaries_relations_ways
363-
WHERE admin_level IN (1,2,3,4,5,6)
364-
WITH DATA;
365-
366-
CREATE UNIQUE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z6_7_idx
367-
ON mv_admin_boundaries_lines_z6_7 (admin_level, member, group_id);
368-
369-
CREATE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z6_7_geometry_idx
370-
ON mv_admin_boundaries_lines_z6_7 USING GIST (geometry);
371-
372-
-- ==========================================
373-
-- MViews for admin lines zoom 8-9
374-
-- ==========================================
375-
DROP MATERIALIZED VIEW IF EXISTS mv_admin_boundaries_lines_z8_9 CASCADE;
376-
CREATE MATERIALIZED VIEW mv_admin_boundaries_lines_z8_9 AS
377-
SELECT
378-
type,
379-
admin_level,
380-
member,
381-
ST_SimplifyPreserveTopology(geometry, 100) AS geometry,
382-
group_id,
383-
start_decdate,
384-
end_decdate,
385-
start_date,
386-
end_date
387-
FROM mv_admin_boundaries_relations_ways
388-
WHERE admin_level IN (1,2,3,4,5,6,7,8,9)
389-
WITH DATA;
390-
391-
CREATE UNIQUE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z8_9_idx
392-
ON mv_admin_boundaries_lines_z8_9 (admin_level, member, group_id);
393-
394-
CREATE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z8_9_geometry_idx
395-
ON mv_admin_boundaries_lines_z8_9 USING GIST (geometry);
396-
397-
-- ==========================================
398-
-- MViews for admin lines zoom 10-12
399-
-- ==========================================
400-
DROP MATERIALIZED VIEW IF EXISTS mv_admin_boundaries_lines_z10_12 CASCADE;
401-
CREATE MATERIALIZED VIEW mv_admin_boundaries_lines_z10_12 AS
402-
SELECT
403-
type,
404-
admin_level,
405-
member,
406-
ST_SimplifyPreserveTopology(geometry, 20) AS geometry,
407-
group_id,
408-
start_decdate,
409-
end_decdate,
410-
start_date,
411-
end_date
412-
FROM mv_admin_boundaries_relations_ways
413-
WHERE admin_level IN (1,2,3,4,5,6,7,8,9,10)
414-
WITH DATA;
415-
416-
CREATE UNIQUE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z10_12_idx
417-
ON mv_admin_boundaries_lines_z10_12 (admin_level, member, group_id);
418-
419-
CREATE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z10_12_geometry_idx
420-
ON mv_admin_boundaries_lines_z10_12 USING GIST (geometry);
421-
422-
-- ==========================================
423-
-- MViews for admin lines zoom 13-15
424-
-- ==========================================
425-
DROP MATERIALIZED VIEW IF EXISTS mv_admin_boundaries_lines_z13_15 CASCADE;
426-
CREATE MATERIALIZED VIEW mv_admin_boundaries_lines_z13_15 AS
427-
SELECT
428-
type,
429-
admin_level,
430-
member,
431-
ST_SimplifyPreserveTopology(geometry, 5) AS geometry,
432-
group_id,
433-
start_decdate,
434-
end_decdate,
435-
start_date,
436-
end_date
437-
FROM mv_admin_boundaries_relations_ways
438-
WHERE admin_level IN (1,2,3,4,5,6,7,8,9,10)
439-
WITH DATA;
440-
441-
CREATE UNIQUE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z13_15_idx
442-
ON mv_admin_boundaries_lines_z13_15 (admin_level, member, group_id);
443-
444-
CREATE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z13_15_geometry_idx
445-
ON mv_admin_boundaries_lines_z13_15 USING GIST (geometry);
446-
447297
-- ==========================================
448298
-- MViews for admin lines zoom 16-20
449299
-- ==========================================
450300
DROP MATERIALIZED VIEW IF EXISTS mv_admin_boundaries_lines_z16_20 CASCADE;
451301
CREATE MATERIALIZED VIEW mv_admin_boundaries_lines_z16_20 AS
452302
SELECT
303+
ROW_NUMBER() OVER (ORDER BY admin_level, member, group_id) AS id,
453304
type,
454305
admin_level,
455-
member,
306+
member as osm_id,
456307
ST_SimplifyPreserveTopology(geometry, 1) AS geometry,
457308
group_id,
458309
start_decdate,
459310
end_decdate,
460311
start_date,
461312
end_date
462313
FROM mv_admin_boundaries_relations_ways
463-
WHERE admin_level IN (1,2,3,4,5,6,7,8,9,10)
314+
WHERE admin_level IN (1,2,3,4,5,6,7,8,9,10,11)
464315
WITH DATA;
465316

466-
CREATE UNIQUE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z16_20_idx
467-
ON mv_admin_boundaries_lines_z16_20 (admin_level, member, group_id);
317+
CREATE UNIQUE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z16_20_id_idx
318+
ON mv_admin_boundaries_lines_z16_20 (id);
319+
320+
CREATE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z16_20_admin_level_idx
321+
ON mv_admin_boundaries_lines_z16_20 (admin_level);
468322

469323
CREATE INDEX IF NOT EXISTS mv_admin_boundaries_lines_z16_20_geometry_idx
470324
ON mv_admin_boundaries_lines_z16_20 USING GIST (geometry);
471325

326+
SELECT create_mview_line_from_mview('mv_admin_boundaries_lines_z16_20', 'mv_admin_boundaries_lines_z13_15', 5, 'admin_level IN (1,2,3,4,5,6,7,8,9,10)');
327+
SELECT create_mview_line_from_mview('mv_admin_boundaries_lines_z13_15', 'mv_admin_boundaries_lines_z10_12', 20, NULL);
328+
SELECT create_mview_line_from_mview('mv_admin_boundaries_lines_z10_12', 'mv_admin_boundaries_lines_z8_9', 100, 'admin_level IN (1,2,3,4,5,6,7,8,9)');
329+
SELECT create_mview_line_from_mview('mv_admin_boundaries_lines_z8_9', 'mv_admin_boundaries_lines_z6_7', 200, 'admin_level IN (1,2,3,4,5,6)');
330+
SELECT create_mview_line_from_mview('mv_admin_boundaries_lines_z6_7', 'mv_admin_boundaries_lines_z3_5', 1000, 'admin_level IN (1,2,3,4)');
331+
SELECT create_mview_line_from_mview('mv_admin_boundaries_lines_z3_5', 'mv_admin_boundaries_lines_z0_2', 5000, 'admin_level IN (1,2)');
332+
472333
-- Refresh lines views
473-
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z0_2;
474-
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z3_5;
475-
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z6_7;
476-
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z8_9;
477-
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z10_12;
478-
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z13_15;
334+
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_relation_members_boundaries;
335+
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_relations_ways;
479336
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z16_20;
337+
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z13_15;
338+
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z10_12;
339+
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z8_9;
340+
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z6_7;
341+
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z3_5;
342+
-- REFRESH MATERIALIZED VIEW CONCURRENTLY mv_admin_boundaries_lines_z0_2;

images/tiler-imposm/queries/ohm_mviews/landuse.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ SELECT create_points_mview('osm_landuse_points','mv_landuse_points' );
2323
-- Create points centroids materialized views, add points only for higher zoom levels
2424
SELECT create_points_centroids_mview('mv_landuse_areas_z16_20','mv_landuse_points_centroids_z16_20','mv_landuse_points');
2525
SELECT create_points_centroids_mview( 'mv_landuse_areas_z13_15', 'mv_landuse_points_centroids_z13_15', 'mv_landuse_points');
26+
SELECT create_points_centroids_mview( 'mv_landuse_areas_z10_12', 'mv_landuse_points_centroids_z10_12', NULL);
2627
SELECT create_points_centroids_mview( 'mv_landuse_areas_z8_9', 'mv_landuse_points_centroids_z8_9', NULL);
2728
SELECT create_points_centroids_mview( 'mv_landuse_areas_z6_7', 'mv_landuse_points_centroids_z6_7', NULL);
2829

images/tiler-imposm/queries/utils/create_mview_area_mview.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ DECLARE
2828
tmp_mview text;
2929
BEGIN
3030

31-
RAISE NOTICE '==> [MVIEW AREA] Creating % ===> % (simplification: %m, min_area: %s, custom_filter: %s)', source_mview, target_mview, tolerance_meters, min_area, custom_filter;
31+
RAISE NOTICE '==> [MVIEW AREA] Creating % from % (simplification: %m, min_area: %s, custom_filter: %s)', target_mview, source_mview, tolerance_meters, min_area, custom_filter;
3232
-- Generate temporary view name to avoid conflicts during creation
3333
tmp_mview := target_mview || '_tmp';
3434

images/tiler-imposm/queries/utils/create_mview_centroid_mview.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ DECLARE
2929
tmp_mview text;
3030
BEGIN
3131

32-
RAISE NOTICE '==> [MVIEW CENTROID] Creating % ===> % (custom_filter: %s)', source_mview, target_mview, custom_filter;
32+
RAISE NOTICE '==> [MVIEW CENTROID] Creating % from % (custom_filter: %s)',target_mview, source_mview, custom_filter;
3333
-- Generate temporary view name to avoid conflicts during creation
3434
tmp_mview := target_mview || '_tmp';
3535

images/tiler-imposm/queries/utils/create_mview_line_mview.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ DECLARE
2828
sql text;
2929
tmp_mview text;
3030
BEGIN
31-
RAISE NOTICE '==> [MVIEW LINE] Creating % ===> % (simplification: %m, custom_filter: %s)', source_mview, target_mview, tolerance_meters, custom_filter;
31+
RAISE NOTICE '==> [MVIEW LINE] Creating % from % (simplification: %m, custom_filter: %s)', target_mview, source_mview, tolerance_meters, custom_filter;
3232
-- Generate temporary view name to avoid conflicts during creation
3333
tmp_mview := target_mview || '_tmp';
3434

images/tiler-imposm/scripts/refresh_mviews.sh

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,17 @@ function refresh_mviews_group() {
4747
done
4848
}
4949

50+
5051
admin_boundaries_lines_views=(
5152
mv_relation_members_boundaries
5253
mv_admin_boundaries_relations_ways
53-
mv_admin_boundaries_lines_z0_2
54-
mv_admin_boundaries_lines_z3_5
55-
mv_admin_boundaries_lines_z6_7
56-
mv_admin_boundaries_lines_z8_9
57-
mv_admin_boundaries_lines_z10_12
58-
mv_admin_boundaries_lines_z13_15
5954
mv_admin_boundaries_lines_z16_20
55+
mv_admin_boundaries_lines_z13_15
56+
mv_admin_boundaries_lines_z10_12
57+
mv_admin_boundaries_lines_z8_9
58+
mv_admin_boundaries_lines_z6_7
59+
mv_admin_boundaries_lines_z3_5
60+
mv_admin_boundaries_lines_z0_2
6061
)
6162

6263
admin_boundaries_areas_centroids_views=(
@@ -141,6 +142,7 @@ places_views=(
141142
mv_place_areas_z14_20
142143
)
143144

145+
144146
transport_views=(
145147
# lines
146148
mv_transport_lines_z16_20

0 commit comments

Comments
 (0)