Chris Sng 2017-10-16 02:48:14 +00:00 zatwierdzone przez GitHub
commit 7ca3331abc
3 zmienionych plików z 123 dodań i 83 usunięć

Wyświetl plik

@ -264,13 +264,13 @@ Layer:
srid: ''
table: |-
(
SELECT osm_ids2mbid(osm_id, true) AS osm_id, geometry, building_is_underground(underground) AS underground
SELECT osm_ids2mbid(osm_id, true) AS osm_id, geometry, infer_height(height, levels) as height, infer_min_height(min_height, min_level) as min_height, building_is_underground(underground) AS underground
FROM (
SELECT osm_id, geometry, underground
SELECT osm_id, geometry, underground, height, min_height, levels, min_level
FROM building_z13
WHERE z(!scale_denominator!) = 13
UNION ALL
SELECT osm_id, geometry, underground
SELECT osm_id, geometry, underground, height, min_height, levels, min_level
FROM building_z14
WHERE z(!scale_denominator!) = 14
) AS building
@ -282,6 +282,8 @@ Layer:
description: ''
fields:
underground: "Text. Whether building is underground. One of: 'true', 'false'"
height: "Integer. Height of building from its base."
min_height: "Integer. Height of building's base."
properties:
"buffer-size": 2
srs: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over

Wyświetl plik

@ -296,6 +296,18 @@ tables:
- name: underground
key: building:levels:underground
type: integer
- name: height
key: height
type: integer
- name: min_height
key: min_height
type: integer
- name: levels
key: building:levels
type: integer
- name: min_level
key: building:min_level
type: integer
- name: timestamp
type: pbf_timestamp
mapping:

Wyświetl plik

@ -1,9 +1,9 @@
CREATE OR REPLACE VIEW building_z13 AS
SELECT id AS osm_id, underground, geometry
SELECT id AS osm_id, underground, height, min_height, levels, min_level, geometry
FROM osm_building_polygon_gen0;
CREATE OR REPLACE VIEW building_z14 AS
SELECT id AS osm_id, underground, geometry
SELECT id AS osm_id, underground, height, min_height, levels, min_level, geometry
FROM osm_building_polygon;
CREATE OR REPLACE VIEW building_layer AS (
@ -12,6 +12,32 @@ CREATE OR REPLACE VIEW building_layer AS (
SELECT osm_id FROM building_z14
);
CREATE OR REPLACE FUNCTION infer_height(height INTEGER, levels INTEGER) RETURNS VARCHAR
AS $$
BEGIN
IF height IS NOT NULL THEN
RETURN height;
ELSIF levels IS NOT NULL THEN
RETURN (levels + 1) * 3;
ELSE
RETURN 6;
END IF;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE OR REPLACE FUNCTION infer_min_height(min_height INTEGER, min_level INTEGER) RETURNS VARCHAR
AS $$
BEGIN
IF min_height IS NOT NULL THEN
RETURN min_height;
ELSIF min_level IS NOT NULL THEN
RETURN min_level * 3;
ELSE
RETURN 0;
END IF;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE OR REPLACE FUNCTION building_is_underground(level INTEGER) RETURNS VARCHAR
AS $$
BEGIN