diff --git a/layers/housenumber/housenumber.yaml b/layers/housenumber/housenumber.yaml new file mode 100644 index 00000000..39cf28e7 --- /dev/null +++ b/layers/housenumber/housenumber.yaml @@ -0,0 +1,18 @@ +layer: + id: "housenumber" + description: | + [OpenStreetMap housenumbers] + buffer_size: 8 + 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 + fields: + class: String + datasource: + geometry_field: geometry + srid: 900913 + query: (SELECT geometry, housenumber FROM layer_housenumber(!bbox!, z(!scale_denominator!))) AS t +schema: + - ./housenumber_centroid.sql + - ./layer.sql +datasources: + - type: imposm3 + mapping_file: ./mapping.yaml diff --git a/layers/housenumber/housenumber_centroid.sql b/layers/housenumber/housenumber_centroid.sql new file mode 100644 index 00000000..c490a243 --- /dev/null +++ b/layers/housenumber/housenumber_centroid.sql @@ -0,0 +1,2 @@ +UPDATE osm_housenumber_point SET geometry=topoint(geometry) +WHERE ST_GeometryType(geometry) <> 'ST_Point'; diff --git a/layers/housenumber/layer.sql b/layers/housenumber/layer.sql new file mode 100644 index 00000000..518f8919 --- /dev/null +++ b/layers/housenumber/layer.sql @@ -0,0 +1,5 @@ +CREATE OR REPLACE FUNCTION layer_housenumber(bbox geometry, zoom_level integer) +RETURNS TABLE(osm_id bigint, geometry geometry, housenumber text) AS $$ + SELECT osm_id, geometry, housenumber FROM osm_housenumber_point + WHERE zoom_level >= 14 AND geometry && bbox; +$$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/housenumber/mapping.yaml b/layers/housenumber/mapping.yaml new file mode 100644 index 00000000..939c9532 --- /dev/null +++ b/layers/housenumber/mapping.yaml @@ -0,0 +1,18 @@ +tables: + housenumber_point: + type: geometry + fields: + - name: osm_id + type: id + - name: geometry + type: geometry + - name: housenumber + key: addr:housenumber + type: string + type_mappings: + points: + addr:housenumber: + - __any__ + polygons: + addr:housenumber: + - __any__