basemap/layers/building/create.sql (107 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_building AS SELECT id, tags || jsonb_build_object( 'extrusion:base', CASE WHEN tags ? 'min_height' THEN convert_to_number( tags ->> 'min_height', 0 ) WHEN tags ? 'building:min_height' THEN convert_to_number( tags ->> 'building:min_height', 0 ) WHEN tags ? 'building:min_level' THEN convert_to_number( tags ->> 'building:min_level', 0 )* 3 ELSE 0 END, 'extrusion:height', CASE WHEN tags ? 'height' THEN convert_to_number( tags ->> 'height', 6 ) WHEN tags ? 'building:height' THEN convert_to_number( tags ->> 'building:height', 6 ) WHEN tags ? 'building:levels' THEN convert_to_number( tags ->> 'building:levels', 2 )* 3 ELSE 6 END ) AS tags, geom FROM osm_way WHERE ( tags ? 'building' OR tags ? 'building:part' ) AND( ( NOT tags ? 'layer' ) OR convert_to_number( tags ->> 'layer', 0 )>= 0 ) UNION SELECT id, tags || jsonb_build_object( 'extrusion:base', CASE WHEN tags ? 'min_height' THEN convert_to_number( tags ->> 'min_height', 0 ) WHEN tags ? 'building:min_height' THEN convert_to_number( tags ->> 'building:min_height', 0 ) WHEN tags ? 'building:min_level' THEN convert_to_number( tags ->> 'building:min_level', 0 )* 3 ELSE 0 END, 'extrusion:height', CASE WHEN tags ? 'height' THEN convert_to_number( tags ->> 'height', 6 ) WHEN tags ? 'building:height' THEN convert_to_number( tags ->> 'building:height', 6 ) WHEN tags ? 'building:levels' THEN convert_to_number( tags ->> 'building:levels', 2 )* 3 ELSE 6 END ) AS tags, geom FROM osm_relation WHERE ( tags ? 'building' OR tags ? 'building:part' ) AND( ( NOT tags ? 'layer' ) OR convert_to_number( tags ->> 'layer', 0 )>= 0 )