basemap/layers/railway/create.sql (447 lines of code) (raw):

-- Licensed to the Apache Software Foundation (ASF) under one or more -- contributor license agreements. See the NOTICE file distributed with -- this work for additional information regarding copyright ownership. -- The ASF licenses this file to you under the Apache License, Version 2.0 -- (the "License"); you may not use this file except in compliance with -- the License. You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. CREATE OR REPLACE VIEW osm_railway AS SELECT id, tags, geom FROM osm_way WHERE tags ? 'railway'; CREATE OR REPLACE VIEW osm_railway_z20 AS SELECT id, tags, geom FROM osm_railway; CREATE OR REPLACE VIEW osm_railway_z19 AS SELECT id, tags, geom FROM osm_railway; CREATE OR REPLACE VIEW osm_railway_z18 AS SELECT id, tags, geom FROM osm_railway; CREATE OR REPLACE VIEW osm_railway_z17 AS SELECT id, tags, geom FROM osm_railway; CREATE OR REPLACE VIEW osm_railway_z16 AS SELECT id, tags, geom FROM osm_railway; CREATE OR REPLACE VIEW osm_railway_z15 AS SELECT id, tags, geom FROM osm_railway; CREATE OR REPLACE VIEW osm_railway_z14 AS SELECT id, tags, geom FROM osm_railway; CREATE OR REPLACE VIEW osm_railway_z13 AS SELECT id, tags, geom FROM osm_railway; DROP MATERIALIZED VIEW IF EXISTS osm_railway_filtered CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_filtered AS SELECT tags -> 'railway' AS railway, geom AS geom FROM osm_railway WHERE tags ->> 'railway' IN( 'light_rail', 'monorail', 'rail', 'subway', 'tram' ) AND NOT tags ? 'service'; DROP INDEX IF EXISTS osm_railway_filtered_geom; CREATE INDEX IF NOT EXISTS osm_railway_filtered_geom ON osm_railway_filtered USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_clustered CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_clustered AS SELECT railway AS railway, geom AS geom, ST_ClusterDBSCAN( geom, 0, 1 ) OVER( PARTITION BY railway ) AS cluster FROM osm_railway_filtered; DROP INDEX IF EXISTS osm_railway_clustered_geom; CREATE INDEX IF NOT EXISTS osm_railway_clustered_geom ON osm_railway_clustered USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_simplified CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_simplified AS WITH merged AS( SELECT railway AS railway, ST_LineMerge( ST_Collect(geom) ) AS geom FROM osm_railway_clustered GROUP BY railway, cluster ), exploded AS( SELECT railway AS railway, ( ST_Dump(geom) ).geom AS geom FROM merged ) SELECT ROW_NUMBER() OVER() AS id, jsonb_build_object( 'railway', railway ) AS tags, geom AS geom FROM exploded; DROP INDEX IF EXISTS osm_railway_simplified_geom; CREATE INDEX IF NOT EXISTS osm_railway_simplified_geom ON osm_railway_simplified USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z12 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z12 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 12 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 12 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z12_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z12_geom_idx ON osm_railway_z12 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z11 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z11 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 11 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 11 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z11_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z11_geom_idx ON osm_railway_z11 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z10 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z10 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 10 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 10 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z10_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z10_geom_idx ON osm_railway_z10 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z9 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z9 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 9 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 9 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z9_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z9_geom_idx ON osm_railway_z9 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z8 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z8 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 8 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 8 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z8_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z8_geom_idx ON osm_railway_z8 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z7 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z7 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 7 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 7 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z7_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z7_geom_idx ON osm_railway_z7 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z6 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z6 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 6 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 6 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z6_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z6_geom_idx ON osm_railway_z6 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z5 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z5 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 5 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 5 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z5_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z5_geom_idx ON osm_railway_z5 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z4 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z4 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 4 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 4 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z4_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z4_geom_idx ON osm_railway_z4 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z3 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z3 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 3 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 3 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z3_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z3_geom_idx ON osm_railway_z3 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z2 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z2 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 2 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 2 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z2_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z2_geom_idx ON osm_railway_z2 USING GIST(geom); DROP MATERIALIZED VIEW IF EXISTS osm_railway_z1 CASCADE; CREATE MATERIALIZED VIEW IF NOT EXISTS osm_railway_z1 AS SELECT id, tags, st_simplifypreservetopology( geom, 78270 / POWER( 2, 1 ) ) AS geom FROM osm_railway_simplified WHERE geom IS NOT NULL AND( st_area( st_envelope(geom) )> POWER(( 78270 / POWER( 2, 1 )), 2 ) ); DROP INDEX IF EXISTS osm_railway_z1_geom_idx; CREATE INDEX IF NOT EXISTS osm_railway_z1_geom_idx ON osm_railway_z1 USING GIST(geom);