From 8918e1ff003eb0cc929f469ea48cf7c5420bfdc3 Mon Sep 17 00:00:00 2001 From: lukasmartinelli Date: Fri, 28 Oct 2016 19:40:41 +0200 Subject: [PATCH] Refactor and document railway --- Makefile | 7 +++++-- layers/railway/README.md | 19 +++++++++++++++++++ layers/railway/mapping | 14 ++++++++++++++ layers/railway/mapping.png | Bin 0 -> 13139 bytes layers/railway/railway.sql | 18 +++++------------- layers/railway/railway.yaml | 17 +++++++++++++++-- layers/railway/types.sql | 15 +++++++++++++++ 7 files changed, 73 insertions(+), 17 deletions(-) create mode 100644 layers/railway/README.md create mode 100644 layers/railway/mapping create mode 100644 layers/railway/mapping.png create mode 100644 layers/railway/types.sql diff --git a/Makefile b/Makefile index 8ff02da..eeebeb9 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -all: build/openmaptiles.tm2source/data.yml build/mapping.yaml build/tileset.sql +all: build/openmaptiles.tm2source/data.yml build/mapping.yaml build/tileset.sql layers/railway/README.md build/openmaptiles.tm2source/data.yml: mkdir -p build/openmaptiles.tm2source && generate-tm2source openmaptiles.yaml --host="postgres" --port=5432 --database="openmaptiles" --user="openmaptiles" --password="openmaptiles" > build/openmaptiles.tm2source/data.yml @@ -9,5 +9,8 @@ build/mapping.yaml: build/tileset.sql: mkdir -p build && generate-sql openmaptiles.yaml > build/tileset.sql +layers/railway/README.md: + generate-doc layers/railway/railway.yaml --diagram layers/railway/mapping > layers/railway/README.md + clean: - rm -f build/openmaptiles.tm2source/data.yml && rm -f build/mapping.yaml && rm -f build/tileset.sql + rm -f build/openmaptiles.tm2source/data.yml && rm -f build/mapping.yaml && rm -f build/tileset.sql && rm -f layers/**/README.md&& rm -f layers/**/*.png diff --git a/layers/railway/README.md b/layers/railway/README.md new file mode 100644 index 0000000..8a1bc51 --- /dev/null +++ b/layers/railway/README.md @@ -0,0 +1,19 @@ +# railway + +The `railway` layer contains linestrings marking tracks from [OSM Railways](http://wiki.openstreetmap.org/wiki/Railways). +It contains tracks for [passenger and freight trains]() and smaller tracks for [Trams](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dtram) or [similar](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dlight_rail) vehicles. But also tracks for [subways](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dsubway), [narrow-gauge trains](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dnarrow_gauge) or [historic trains](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dpreserved). +Non mainline tracks (marked with class `minor_rail`) used for [storage of trains](http://wiki.openstreetmap.org/wiki/Tag:service%3Dyard) and [maintenance](http://wiki.openstreetmap.org/wiki/Tag:service%3Dsiding) are contained in the highest zoom levels and should be styled more subtle than the mainline tracks with class `rail`. + +## Fields + +- **class**: Divides the track into mainline tracks (class `rail`) and less important tracks +used for maintenance (class `minor_rail`). +- **subclass**: Original value of the [`railway`](http://wiki.openstreetmap.org/wiki/Key:railway) can be one of +`rail`, `light_rail`, `subway`, `narrow_gauge`, `preserved`, `tram`. +- **properties**: Additional properties describing the nature of tracks. Can be either `bridge` or `tunnel`. + +## Mapping + +![](mapping.png) + + diff --git a/layers/railway/mapping b/layers/railway/mapping new file mode 100644 index 0000000..d068987 --- /dev/null +++ b/layers/railway/mapping @@ -0,0 +1,14 @@ +digraph "Imposm Mapping" { + graph [rankdir=LR ranksep=3] + subgraph railway_linestring { + node [fixed_size=shape "width:"=20] + railway_linestring [shape=box] + key_railway [label=railway shape=box] + key_railway -> railway_linestring [label="rail +light_rail +subway +narrow_gauge +preserved +tram"] + } +} \ No newline at end of file diff --git a/layers/railway/mapping.png b/layers/railway/mapping.png new file mode 100644 index 0000000000000000000000000000000000000000..52a472337b77d0c4713abdb97eec597e6ff00d8a GIT binary patch literal 13139 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 l4h8s$|M!_pYQr_MQHuO;qVJ~l;9D{f*{6z= 14 + SELECT * FROM osm_railway_linestring WHERE zoom_level >= 14 ) AS zoom_levels WHERE geometry && bbox ORDER BY z_order ASC; diff --git a/layers/railway/railway.yaml b/layers/railway/railway.yaml index 6290e22..913f4d6 100644 --- a/layers/railway/railway.yaml +++ b/layers/railway/railway.yaml @@ -1,11 +1,24 @@ layer: id: "railway" - description: Rail + description: | + The `railway` layer contains linestrings marking tracks from [OSM Railways](http://wiki.openstreetmap.org/wiki/Railways). + It contains tracks for [passenger and freight trains]() and smaller tracks for [Trams](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dtram) or [similar](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dlight_rail) vehicles. But also tracks for [subways](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dsubway), [narrow-gauge trains](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dnarrow_gauge) or [historic trains](http://wiki.openstreetmap.org/wiki/Tag:railway%3Dpreserved). + Non mainline tracks (marked with class `minor_rail`) used for [storage of trains](http://wiki.openstreetmap.org/wiki/Tag:service%3Dyard) and [maintenance](http://wiki.openstreetmap.org/wiki/Tag:service%3Dsiding) are contained in the highest zoom levels and should be styled more subtle than the mainline tracks with class `rail`. + fields: + class: | + Divides the track into mainline tracks (class `rail`) and less important tracks + used for maintenance (class `minor_rail`). + subclass: | + Original value of the [`railway`](http://wiki.openstreetmap.org/wiki/Key:railway) can be one of + `rail`, `light_rail`, `subway`, `narrow_gauge`, `preserved`, `tram`. + properties: | + Additional properties describing the nature of tracks. Can be either `bridge` or `tunnel`. buffer_size: 4 datasource: geometry_field: geometry - query: (SELECT geometry, class, subclass, brunnel FROM layer_railway(!bbox!, z(!scale_denominator!))) AS t + query: (SELECT geometry, class, subclass, properties::text FROM layer_railway(!bbox!, z(!scale_denominator!))) AS t schema: + - ./types.sql - ./railway.sql datasources: - type: imposm3 diff --git a/layers/railway/types.sql b/layers/railway/types.sql new file mode 100644 index 0000000..e323edd --- /dev/null +++ b/layers/railway/types.sql @@ -0,0 +1,15 @@ +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'railway_properties') THEN + CREATE TYPE railway_properties AS ENUM ('bridge', 'tunnel'); + END IF; +END +$$; + +CREATE OR REPLACE FUNCTION to_railway_properties(is_bridge boolean, is_tunnel boolean) RETURNS railway_properties AS $$ + SELECT CASE + WHEN is_bridge THEN 'bridge'::railway_properties + WHEN is_tunnel THEN 'tunnel'::railway_properties + ELSE NULL + END; +$$ LANGUAGE SQL IMMUTABLE;