Use buildings from imposm3 mapping.

pull/24/head
lukasmartinelli 2016-10-10 19:35:07 +02:00
rodzic 28fedcc021
commit 908e6dc68c
3 zmienionych plików z 39 dodań i 12 usunięć

Wyświetl plik

@ -1,22 +1,22 @@
CREATE OR REPLACE VIEW building_z13 AS (
SELECT osm_id, way, height, levels FROM buildings WHERE way_area > 1400
SELECT osm_id, geometry, height, levels FROM osm_building_polygon_gen1 WHERE area > 1400
);
CREATE OR REPLACE VIEW building_z14 AS (
SELECT osm_id, way, height, levels FROM buildings
SELECT osm_id, geometry, height, levels FROM osm_building_polygon
);
CREATE OR REPLACE FUNCTION layer_building(bbox geometry, zoom_level int)
RETURNS TABLE(geom geometry, osm_id bigint, render_height float) AS $$
SELECT way, osm_id,
RETURNS TABLE(geom geometry, osm_id bigint, render_height numeric) AS $$
SELECT geometry, osm_id,
least(greatest(3, COALESCE(height, levels*3.66,5)),400)^.7 AS render_height
FROM (
SELECT osm_id, ST_Simplify(way, 10) AS way, height, levels FROM building_z13
WHERE zoom_level = 13 AND way && bbox
SELECT osm_id, ST_Simplify(geometry, 10) AS geometry, height, levels FROM building_z13
WHERE zoom_level = 13 AND geometry && bbox
UNION ALL
SELECT * FROM building_z14
WHERE zoom_level >= 14 AND way && bbox
WHERE zoom_level >= 14 AND geometry && bbox
) AS zoom_levels
ORDER BY render_height, ST_YMin(way) DESC;
ORDER BY render_height, ST_YMin(geometry) DESC;
$$ LANGUAGE SQL IMMUTABLE;

Wyświetl plik

@ -1,12 +1,15 @@
layer:
id: "building"
description: Roads
description: |
All [OSM Buildings](http://wiki.openstreetmap.org/wiki/Buildings).
buffer_size: 4
datasource:
query: (SELECT * FROM layer_building(!bbox!, z(!scale_denominator!))) AS t
fields:
admin_level: Number
class: String
scalerank: Number
render_height: |
An approximated height from levels and height of building after the method of Paul Norman in [OSM Clear](https://github.com/ClearTables/osm-clear)
schema:
- ./building.sql
datasources:
- type: imposm3
mapping_file: ./mapping.yaml

Wyświetl plik

@ -0,0 +1,24 @@
generalized_tables:
building_polygon_gen1:
source: building_polygon
sql_filter: area>1400.0
tolerance: 10.0
tables:
building_polygon:
fields:
- name: osm_id
type: id
- name: geometry
type: validated_geometry
- name: area
type: pseudoarea
- name: height
key: height
type: integer
- name: levels
key: levels
type: integer
mapping:
building:
- __any__
type: polygon