From 211c765c02473e76064f13865c80dad87f70386d Mon Sep 17 00:00:00 2001 From: lukasmartinelli Date: Thu, 6 Oct 2016 07:45:00 +0200 Subject: [PATCH] Add water as first example layer --- .env | 5 ++++ data.yml | 56 +++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 34 +++++++++++++++++++++++++ schema/Dockerfile | 17 +++++++++++++ schema/create_schema.sh | 22 ++++++++++++++++ schema/layers/water.sql | 29 +++++++++++++++++++++ 6 files changed, 163 insertions(+) create mode 100644 .env create mode 100644 data.yml create mode 100644 docker-compose.yml create mode 100644 schema/Dockerfile create mode 100755 schema/create_schema.sh create mode 100644 schema/layers/water.sql diff --git a/.env b/.env new file mode 100644 index 00000000..54cf241d --- /dev/null +++ b/.env @@ -0,0 +1,5 @@ +POSTGRES_DB=osm +POSTGRES_USER=osm +POSTGRES_PASSWORD=osm +POSTGRES_HOST=postgres +POSTGRES_PORT=5432 diff --git a/data.yml b/data.yml new file mode 100644 index 00000000..adab45d6 --- /dev/null +++ b/data.yml @@ -0,0 +1,56 @@ +_prefs: + disabled: [] + inspector: false + mapid: '' + rev: '' + saveCenter: true +attribution: "© OpenStreetMap contributors" +center: + - 8.6627 + - 47.3872 + - 0 +description: "Free global vector tiles from OpenStreetMap. http://osm2vectortiles.org" +Layer: + - id: water + Datasource: + dbname: osm + extent: -20037508.34,-20037508.34,20037508.34,20037508.34 + geometry_field: geom + geometry_table: '' + host: db + key_field: '' + key_field_as_attribute: '' + max_size: 512 + password: osm + port: 5432 + srid: '' + table: |- + ( SELECT * + FROM ( + SELECT * FROM water_z0 + WHERE z(!scale_denominator!) = 0 + UNION ALL + SELECT * FROM water_z1 + WHERE z(!scale_denominator!) = 1 + UNION ALL + SELECT * FROM water_z2 + WHERE z(!scale_denominator!) BETWEEN 2 AND 3 + UNION ALL + SELECT * FROM water_z4 + WHERE z(!scale_denominator!) = 4 + UNION ALL + SELECT * FROM water_z5 + WHERE z(!scale_denominator!) = 5 + ) AS water + WHERE geom && !bbox! + ) AS data + type: postgis + user: osm + description: Ocean and lake polygons + fields: {} + properties: + "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 +maxzoom: 14 +minzoom: 0 +name: OSM2VectorTiles v3.0 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..3d5fb70a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +version: '2' +volumes: + pgdata: +services: + postgres: + image: "osm2vectortiles/postgis:latest" + volumes: + - pgdata:/var/lib/postgresql/data + ports: + - "5432" + env_file: .env + db-schema: + build: "./schema" + env_file: .env + links: + - postgres:postgres + import-natural-earth: + image: "osm2vectortiles/import-natural-earth" + env_file: .env + links: + - postgres + import-water: + image: "osm2vectortiles/import-water" + env_file: .env + links: + - postgres + mapbox-studio: + image: "osm2vectortiles/mapbox-studio" + volumes: + - ./:/projects/osm2vectortiles.tm2source + links: + - postgres:db + ports: + - "3000:3000" diff --git a/schema/Dockerfile b/schema/Dockerfile new file mode 100644 index 00000000..363c4452 --- /dev/null +++ b/schema/Dockerfile @@ -0,0 +1,17 @@ +FROM osm2vectortiles/postgis:latest +MAINTAINER Lukas Martinelli + +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + wget \ + && rm -rf /var/lib/apt/lists/* + +ENV VT_UTIL_DIR=/opt/postgis-vt-util \ + VT_UTIL_URL="https://raw.githubusercontent.com/mapbox/postgis-vt-util/v1.0.0/postgis-vt-util.sql" + +RUN mkdir -p "$VT_UTIL_DIR" \ + && wget -P "$VT_UTIL_DIR" --quiet "$VT_UTIL_URL" + +COPY . /usr/src/app/ +WORKDIR /usr/src/app +CMD ["./create_schema.sh"] diff --git a/schema/create_schema.sh b/schema/create_schema.sh new file mode 100755 index 00000000..47420cfc --- /dev/null +++ b/schema/create_schema.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -o errexit +set -o pipefail +set -o nounset + +function exec_psql_file() { + local file_name="$1" + PGPASSWORD="$POSTGRES_PASSWORD" psql \ + -v ON_ERROR_STOP="1" \ + --host="$POSTGRES_HOST" \ + --port="$POSTGRES_PORT" \ + --dbname="$POSTGRES_DB" \ + --username="$POSTGRES_USER" \ + -f "$file_name" +} + +function main() { + exec_psql_file "$VT_UTIL_DIR/postgis-vt-util.sql" + exec_psql_file "layers/water.sql" +} + +main diff --git a/schema/layers/water.sql b/schema/layers/water.sql new file mode 100644 index 00000000..a25cbfed --- /dev/null +++ b/schema/layers/water.sql @@ -0,0 +1,29 @@ +CREATE OR REPLACE VIEW water_z0 AS ( + SELECT geom FROM ne_110m_ocean + UNION ALL + SELECT geom FROM ne_110m_lakes +); + +CREATE OR REPLACE VIEW water_z1 AS ( + SELECT geom FROM ne_110m_ocean + UNION ALL + SELECT geom FROM ne_110m_lakes +); + +CREATE OR REPLACE VIEW water_z2 AS ( + SELECT geom FROM ne_50m_ocean + UNION ALL + SELECT geom FROM ne_110m_lakes +); + +CREATE OR REPLACE VIEW water_z4 AS ( + SELECT geom FROM ne_10m_ocean + UNION ALL + SELECT geom FROM ne_50m_lakes +); + +CREATE OR REPLACE VIEW water_z5 AS ( + SELECT geom FROM ne_10m_ocean + UNION ALL + SELECT geom FROM ne_10m_lakes +);