Merge branch 'feature/no-subclass'

pull/96/head
Lukas Martinelli 2016-12-02 13:23:21 +00:00
commit e7665db266
8 zmienionych plików z 39 dodań i 135 usunięć

Wyświetl plik

@ -0,0 +1,8 @@
CREATE OR REPLACE FUNCTION normalize_capital_level(capital TEXT)
RETURNS INT AS $$
SELECT CASE
WHEN capital IN ('yes', '2') THEN 2
WHEN capital = '4' THEN 4
ELSE NULL
END;
$$ LANGUAGE SQL IMMUTABLE STRICT;

Wyświetl plik

@ -1,18 +0,0 @@
CREATE OR REPLACE FUNCTION place_class(place TEXT)
RETURNS TEXT AS $$
SELECT CASE
WHEN place IN ('city', 'town', 'village', 'hamlet', 'isolated_dwelling') THEN 'settlement'
WHEN place IN ('suburb', 'neighbourhood') THEN 'subregion'
WHEN place IN ('locality', 'farm') THEN 'other'
ELSE NULL
END;
$$ LANGUAGE SQL IMMUTABLE STRICT;
CREATE OR REPLACE FUNCTION normalize_capital_level(capital TEXT)
RETURNS INT AS $$
SELECT CASE
WHEN capital IN ('yes', '2') THEN 2
WHEN capital = '4' THEN 4
ELSE NULL
END;
$$ LANGUAGE SQL IMMUTABLE STRICT;

Wyświetl plik

@ -8,22 +8,22 @@
-- etldoc: layer_city -> layer_place -- etldoc: layer_city -> layer_place
CREATE OR REPLACE FUNCTION layer_place(bbox geometry, zoom_level int, pixel_width numeric) CREATE OR REPLACE FUNCTION layer_place(bbox geometry, zoom_level int, pixel_width numeric)
RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class text, subclass text, "rank" int, capital INT) AS $$ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class text, "rank" int, capital INT) AS $$
SELECT SELECT
osm_id, geometry, name, name_en, osm_id, geometry, name, name_en,
'continent' AS class, 'continent' AS subclass, 1 AS "rank", NULL::int AS capital 'continent' AS class, 1 AS "rank", NULL::int AS capital
FROM osm_continent_point FROM osm_continent_point
WHERE geometry && bbox AND zoom_level < 4 WHERE geometry && bbox AND zoom_level < 4
UNION ALL UNION ALL
SELECT SELECT
osm_id, geometry, name, COALESCE(NULLIF(name_en, ''), name) AS name_en, osm_id, geometry, name, COALESCE(NULLIF(name_en, ''), name) AS name_en,
'country' AS class, 'country' AS subclass,"rank", NULL::int AS capital 'country' AS class,"rank", NULL::int AS capital
FROM osm_country_point FROM osm_country_point
WHERE geometry && bbox AND "rank" <= zoom_level AND name <> '' WHERE geometry && bbox AND "rank" <= zoom_level AND name <> ''
UNION ALL UNION ALL
SELECT SELECT
osm_id, geometry, name, COALESCE(NULLIF(name_en, ''), name) AS name_en, osm_id, geometry, name, COALESCE(NULLIF(name_en, ''), name) AS name_en,
'state' AS class, 'state' AS subclass, "rank", NULL::int AS capital 'state' AS class, "rank", NULL::int AS capital
FROM osm_state_point FROM osm_state_point
WHERE geometry && bbox AND WHERE geometry && bbox AND
name <> '' AND name <> '' AND
@ -34,7 +34,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class t
UNION ALL UNION ALL
SELECT SELECT
osm_id, geometry, name, name_en, osm_id, geometry, name, name_en,
place_class(place::text) AS class, place::text AS subclass, "rank", capital place::text AS class, "rank", capital
FROM layer_city(bbox, zoom_level, pixel_width) FROM layer_city(bbox, zoom_level, pixel_width)
ORDER BY "rank" ASC ORDER BY "rank" ASC
$$ LANGUAGE SQL IMMUTABLE; $$ LANGUAGE SQL IMMUTABLE;

Wyświetl plik

@ -16,23 +16,12 @@ layer:
values: [2, 4] values: [2, 4]
class: | class: |
description: | description: |
Distinguish between continents, countries, states and
places like settlements or smaller entities.
Use this to separately style the different places and build
a text hierarchy according to their importance.
than cities).
values:
- continent
- country
- state
- settlement
- subregion
- other
subclass:
description: |
Use **subclass** to do more precise styling.
Original value of the Original value of the
[`place`](http://wiki.openstreetmap.org/wiki/Key:place) tag. [`place`](http://wiki.openstreetmap.org/wiki/Key:place) tag.
Distinguish between continents, countries, states and
places like settlements or smaller entities.
Use **class** to separately style the different places and build
a text hierarchy according to their importance.
values: values:
- continent - continent
- country - country
@ -63,10 +52,10 @@ layer:
buffer_size: 128 buffer_size: 128
datasource: datasource:
geometry_field: geometry geometry_field: geometry
query: (SELECT geometry, name, name_en, class, subclass, rank, capital FROM layer_place(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t query: (SELECT geometry, name, name_en, class, rank, capital FROM layer_place(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t
schema: schema:
- ./types.sql - ./types.sql
- ./class.sql - ./capital.sql
- ./city.sql - ./city.sql
- ./merge_country_rank.sql - ./merge_country_rank.sql
- ./merge_city_rank.sql - ./merge_city_rank.sql

Wyświetl plik

@ -6,14 +6,13 @@ $$ LANGUAGE SQL IMMUTABLE STRICT;
-- etldoc: layer_transportation[shape=record fillcolor=lightpink, style="rounded,filled", -- etldoc: layer_transportation[shape=record fillcolor=lightpink, style="rounded,filled",
-- etldoc: label="<sql> layer_transportation |<z4z6> z4-z6 |<z7z8> z7-z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14+" ] ; -- etldoc: label="<sql> layer_transportation |<z4z6> z4-z6 |<z7z8> z7-z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14+" ] ;
CREATE OR REPLACE FUNCTION layer_transportation(bbox geometry, zoom_level int) CREATE OR REPLACE FUNCTION layer_transportation(bbox geometry, zoom_level int)
RETURNS TABLE(osm_id bigint, geometry geometry, class text, subclass text, ramp int, oneway int, brunnel TEXT, service TEXT) AS $$ RETURNS TABLE(osm_id bigint, geometry geometry, class text, ramp int, oneway int, brunnel TEXT, service TEXT) AS $$
SELECT SELECT
osm_id, geometry, osm_id, geometry,
CASE CASE
WHEN highway IS NOT NULL THEN highway_class(highway) WHEN highway IS NOT NULL THEN highway_class(highway)
WHEN railway IS NOT NULL THEN railway_class(railway) WHEN railway IS NOT NULL THEN railway_class(railway)
END AS class, END AS class,
COALESCE(NULLIF(highway,''), NULLIF(railway, '')) AS subclass,
-- All links are considered as ramps as well -- All links are considered as ramps as well
CASE WHEN highway_is_link(highway) OR highway = 'steps' CASE WHEN highway_is_link(highway) OR highway = 'steps'
THEN 1 ELSE is_ramp::int END AS ramp, THEN 1 ELSE is_ramp::int END AS ramp,

Wyświetl plik

@ -1,23 +1,23 @@
layer: layer:
id: "transportation" id: "transportation"
description: | description: |
**transportation** containsrRoads and railways. **transportation** contains roads and railways.
This layer is directly derived from the OSM road hierarchy which is why it is called `highway`. Only This layer is directly derived from the OSM road hierarchy.
at zoom level 4 to 7 some major highways from Natural Earth are used otherwise it is only OSM data. Only at zoom level 4 to 6 some major highways from Natural Earth
It contains all roads from motorways to primary, secondary and tertiary roads to residential roads and are used.
foot paths. Styling the roads is the most essential part of the map. If you can put enough effort into it It contains all roads from motorways to primary, secondary and
makes sense to carefully style each `subclass`. For more comfortable styling you can also just style the roads tertiary roads to residential roads and
by `class`. Roads can have different properties, a road can have `oneway=yes` and `bridge=yes` at the same time. foot paths. Styling the roads is the most essential part of the map.
These properties are reflected in the field `properties`.
This layer is not meant for labelling the roads (the purpose of the layer `highway_name`).
The `highway` layer also contains polygons for things like plazas. The `highway` layer also contains polygons for things like plazas.
buffer_size: 4 buffer_size: 4
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 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: fields:
class: class:
description: | description: |
Distinguish between more and less important roads. Distinguish between more and less important roads or railways.
Class is derived from the value of the
[`highway`](http://wiki.openstreetmap.org/wiki/Key:highway) or
[`railway`](http://wiki.openstreetmap.org/wiki/Key:railway) tag.
values: values:
- motorway - motorway
- trunk - trunk
@ -25,49 +25,12 @@ layer:
- secondary - secondary
- tertiary - tertiary
- minor - minor
- track
- service - service
- track
- path - path
subclass:
description: |
Use **subclass** to do more precise styling.
Original value of the
[`highway`](http://wiki.openstreetmap.org/wiki/Key:highway) or
[`railway`](http://wiki.openstreetmap.org/wiki/Key:railway) tag.
values:
- motorway
- motorway_link
- trunk
- trunk_link
- primary
- primary_link
- secondary
- secondary_link
- tertiary
- tertiary_link
- unclassified
- residential
- road
- living_street
- raceway - raceway
- construction
- track
- service
- path
- cycleway
- bridleway
- footway
- corridor
- crossing
- pedestrian
- rail - rail
- narrow_gauge - transit
- preserved
- funicular
- subway
- light_rail
- monorail
- tram
brunnel: brunnel:
description: | description: |
Mark whether way is a tunnel or bridge. Mark whether way is a tunnel or bridge.
@ -99,7 +62,7 @@ layer:
datasource: datasource:
geometry_field: geometry geometry_field: geometry
srid: 900913 srid: 900913
query: (SELECT geometry, class, subclass, oneway, ramp, brunnel, service FROM layer_transportation(!bbox!, z(!scale_denominator!))) AS t query: (SELECT geometry, class, oneway, ramp, brunnel, service FROM layer_transportation(!bbox!, z(!scale_denominator!))) AS t
schema: schema:
- ./class.sql - ./class.sql
- ./layer.sql - ./layer.sql

Wyświetl plik

@ -3,12 +3,12 @@
-- etldoc: label="layer_transportation_name | <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14_" ] ; -- etldoc: label="layer_transportation_name | <z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14_> z14_" ] ;
CREATE OR REPLACE FUNCTION layer_transportation_name(bbox geometry, zoom_level integer) CREATE OR REPLACE FUNCTION layer_transportation_name(bbox geometry, zoom_level integer)
RETURNS TABLE(osm_id bigint, geometry geometry, name text, ref text, ref_length int, network text, class text, subclass text) AS $$ RETURNS TABLE(osm_id bigint, geometry geometry, name text, ref text, ref_length int, network text, class text) AS $$
SELECT osm_id, geometry, name, SELECT osm_id, geometry, name,
NULLIF(ref, ''), NULLIF(LENGTH(ref), 0) AS ref_length, NULLIF(ref, ''), NULLIF(LENGTH(ref), 0) AS ref_length,
--TODO: The road network of the road is not yet implemented --TODO: The road network of the road is not yet implemented
NULL::text AS network, NULL::text AS network,
highway_class(highway) AS class, highway AS subclass highway_class(highway) AS class
FROM ( FROM (
-- etldoc: osm_transportation_name_linestring_gen3 -> layer_transportation_name:z8 -- etldoc: osm_transportation_name_linestring_gen3 -> layer_transportation_name:z8

Wyświetl plik

@ -22,53 +22,16 @@ layer:
- secondary - secondary
- tertiary - tertiary
- minor - minor
- track
- service - service
- track
- path - path
subclass:
description: |
Use **subclass** to do more precise styling.
Original value of the
[`highway`](http://wiki.openstreetmap.org/wiki/Key:highway) or
[`railway`](http://wiki.openstreetmap.org/wiki/Key:railway) tag.
values:
- motorway
- motorway_link
- trunk
- trunk_link
- primary
- primary_link
- secondary
- secondary_link
- tertiary
- tertiary_link
- unclassified
- residential
- road
- living_street
- raceway - raceway
- construction
- track
- service
- path
- cycleway
- bridleway
- footway
- corridor
- crossing
- pedestrian
- rail - rail
- narrow_gauge - transit
- preserved
- funicular
- subway
- light_rail
- monorail
- tram
datasource: datasource:
geometry_field: geometry geometry_field: geometry
srid: 900913 srid: 900913
query: (SELECT geometry, name, ref, ref_length, class::text, subclass FROM layer_transportation_name(!bbox!, z(!scale_denominator!))) AS t query: (SELECT geometry, name, ref, ref_length, class::text FROM layer_transportation_name(!bbox!, z(!scale_denominator!))) AS t
schema: schema:
- ./merge_highways.sql - ./merge_highways.sql
- ./layer.sql - ./layer.sql