diff --git a/api/tools/prepare_sql_tiles.py b/api/tools/prepare_sql_tiles.py index fdb4b6f..833b32c 100755 --- a/api/tools/prepare_sql_tiles.py +++ b/api/tools/prepare_sql_tiles.py @@ -19,7 +19,7 @@ log = logging.getLogger(__name__) TILE_GENERATOR = normpath( abspath(join(app.config.API_ROOT_DIR, "..", "tile-generator")) ) -TILESET_FILE = join(TILE_GENERATOR, "openmaptiles.yaml") +TILESET_FILE = join(TILE_GENERATOR, "openbikesensor.yaml") def parse_pg_url(url=app.config.POSTGRES_URL): @@ -78,7 +78,7 @@ async def generate_data_yml(build_dir): ] ) - tm2source = join(build_dir, "openmaptiles.tm2source") + tm2source = join(build_dir, "openbikesensor.tm2source") os.makedirs(tm2source, exist_ok=True) with open(join(tm2source, "data.yml"), "wt") as f: diff --git a/frontend/src/mapstyles/bright.json-LICENSE b/frontend/src/mapstyles/bright.json-LICENSE new file mode 100644 index 0000000..d0ae6f9 --- /dev/null +++ b/frontend/src/mapstyles/bright.json-LICENSE @@ -0,0 +1,62 @@ +Copyright (c) 2016, KlokanTech.com & OpenMapTiles contributors. +Copyright (c) 2015, CartoDB Inc. +All rights reserved. + +Derived from "CartoDB Basemaps" (https://github.com/CartoDB/CartoDB-basemaps) +designed by Stamen and Paul Norman for CartoDB Inc., licensed under CC-BY 3.0. + +# Code license: BSD 3-Clause License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Design license: CC-BY 4.0 + +The visual design features of the style (also known as the "look and feel" of +the map) are licensed under the Creative Commons Attribution 4.0 license. + +To view a copy of the license, visit http://creativecommons.org/licenses/by/4.0/. + +Attribution for the design defined in this repository needs not to be provided +on map images, but should be reasonably accessible from maps based on this style +(for example, in a webpage linked from copyright notice on the map). + +Products or services using maps derived from OpenMapTiles schema need to visibly +credit "OpenMapTiles.org" or reference "OpenMapTiles" with a link to +http://openmaptiles.org/. + +For a browsable electronic map based on OpenMapTiles and OpenStreetMap data, the +credit should appear in the corner of the map. For example: + +[© OpenMapTiles](http://openmaptiles.org/) +[© OpenStreetMap contributors](http://www.openstreetmap.org/copyright) + +For printed and static maps a similar attribution should be made in a textual +description near the image, in the same fashion as if you cite a photograph. + +Exceptions to OpenMapTiles attribution requirement can be in a written form granted +by Klokan Technologies GmbH (info@klokantech.com). +The project contributors grant Klokan Technologies GmbH the license to give such +exceptions on a commercial basis. diff --git a/tile-generator/LICENSE.md b/frontend/src/mapstyles/positron.json-LICENSE similarity index 73% rename from tile-generator/LICENSE.md rename to frontend/src/mapstyles/positron.json-LICENSE index 245afac..f41fefd 100644 --- a/tile-generator/LICENSE.md +++ b/frontend/src/mapstyles/positron.json-LICENSE @@ -1,12 +1,9 @@ -Copyright (c) 2016, KlokanTech.com & OpenMapTiles contributors. -All rights reserved. +Copyright (c) 2016, KlokanTech.com & OpenMapTiles contributors. +Copyright (c) 2014, Mapbox. +All rights reserved. -The vector tile schema has been developed by Klokan Technologies GmbH and -was initially modelled after the cartography of the CARTO's Positron basemap -with permission from CartoDB Inc. -The vector tile schema has been refined and improved in cooperation with -the Wikimedia Foundation and is heavily influenced by years of -Paul Norman's experience of creating maps from OpenStreetMap data. +Modifications by KlokanTech.com & OpenMapTiles contributors. +Derived from "Mapbox Open Styles" https://github.com/mapbox/mapbox-gl-styles # Code license: BSD 3-Clause License @@ -37,11 +34,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Design license: CC-BY 4.0 -The cartography and visual design features of the map tile schema (also known as -the "look and feel" of the map) are licensed under the Creative Commons -Attribution 4.0 license. +The visual design features of the style (also known as the "look and feel" of +the map) are licensed under the Creative Commons Attribution 4.0 license. + To view a copy of the license, visit http://creativecommons.org/licenses/by/4.0/. +Attribution for the design defined in this repository needs not to be provided +on map images, but should be reasonably accessible from maps based on this style +(for example, in a webpage linked from copyright notice on the map). + Products or services using maps derived from OpenMapTiles schema need to visibly credit "OpenMapTiles.org" or reference "OpenMapTiles" with a link to http://openmaptiles.org/. @@ -49,12 +50,13 @@ http://openmaptiles.org/. For a browsable electronic map based on OpenMapTiles and OpenStreetMap data, the credit should appear in the corner of the map. For example: -[© OpenMapTiles](http://openmaptiles.org/) [© OpenStreetMap contributors](http://www.openstreetmap.org/copyright) +[© OpenMapTiles](http://openmaptiles.org/) +[© OpenStreetMap contributors](http://www.openstreetmap.org/copyright) For printed and static maps a similar attribution should be made in a textual description near the image, in the same fashion as if you cite a photograph. Exceptions to OpenMapTiles attribution requirement can be in a written form granted -by Klokan Technologies GmbH (info@klokantech.com). +by Klokan Technologies GmbH (info@klokantech.com). The project contributors grant Klokan Technologies GmbH the license to give such exceptions on a commercial basis. diff --git a/tile-generator/Makefile b/tile-generator/Makefile deleted file mode 100644 index baf0442..0000000 --- a/tile-generator/Makefile +++ /dev/null @@ -1,591 +0,0 @@ -# -# First section - common variable initialization -# - -# Ensure that errors don't hide inside pipes -SHELL = /bin/bash -.SHELLFLAGS = -o pipefail -c - -# Make all .env variables available for make targets -include ../.env - -# Layers definition and meta data -TILESET_FILE ?= openmaptiles.yaml - -# Options to run with docker and docker-compose - ensure the container is destroyed on exit -# Containers run as the current user rather than root (so that created files are not root-owned) -DC_OPTS ?= --rm --user=$(shell id -u):$(shell id -g) - -# If set to a non-empty value, will use postgis-preloaded instead of postgis docker image -USE_PRELOADED_IMAGE ?= - -# Local port to use with postserve -PPORT ?= 8090 -export PPORT -# Local port to use with tileserver -TPORT ?= 8080 -export TPORT - -# Allow a custom docker-compose project name -ifeq ($(strip $(DC_PROJECT)),) - DC_PROJECT := $(notdir $(shell pwd)) - DOCKER_COMPOSE := docker-compose -else - DOCKER_COMPOSE := docker-compose --project-name $(DC_PROJECT) -endif - -# Make some operations quieter (e.g. inside the test script) -ifeq ($(strip $(QUIET)),) - QUIET_FLAG := -else - QUIET_FLAG := --quiet -endif - -# Use `xargs --no-run-if-empty` flag, if supported -XARGS := xargs $(shell xargs --no-run-if-empty /dev/null && echo --no-run-if-empty) - -# If running in the test mode, compare files rather than copy them -TEST_MODE?=no -ifeq ($(TEST_MODE),yes) - # create images in ./build/devdoc and compare them to ./layers - GRAPH_PARAMS=./build/devdoc ./layers -else - # update graphs in the ./layers dir - GRAPH_PARAMS=./layers -endif - -# Set OpenMapTiles host -OMT_HOST := http://$(firstword $(subst :, ,$(subst tcp://,,$(DOCKER_HOST))) localhost) -export OMT_HOST - -# This defines an easy $(newline) value to act as a "\n". Make sure to keep exactly two empty lines after newline. -define newline - - -endef - -# use the old postgres connection values if they are existing -PGHOST := $(or $(POSTGRES_HOST),$(PGHOST)) -PGPORT := $(or $(POSTGRES_PORT),$(PGPORT)) -PGDATABASE := $(or $(POSTGRES_DB),$(PGDATABASE)) -PGUSER := $(or $(POSTGRES_USER),$(PGUSER)) -PGPASSWORD := $(or $(POSTGRES_PASSWORD),$(PGPASSWORD)) - -# -# Determine area to work on -# If $(area) parameter is not set, and only one *.osm.pbf file is found in ./data, use it as $(area). -# Otherwise, all make targets requiring an area will show an error. -# Note: If no *.osm.pbf files are found, once the users call "make download area=..." -# they will not need to use an "area=" parameter again because there will be just a single file. -# - -# historically we have been using $(area) rather than $(AREA), so make both work -area ?= $(AREA) -# Ensure the $(area) param is set, or try to automatically determine it based on available data files -ifeq ($(strip $(area)),) - # An $(area) parameter is not set. If only one *.osm.pbf file is found in ./data, use it as $(area). - data_files := $(shell find data -name '*.osm.pbf' 2>/dev/null) - ifneq ($(word 2,$(data_files)),) - define assert_area_is_given - @echo "" - @echo "ERROR: The 'area' parameter or environment variable have not been set, and there several 'area' options:" - @$(patsubst data/%.osm.pbf,echo " '%'";,$(data_files)) - @echo "" - @echo "To specify an area use:" - @echo " make $@ area=" - @echo "" - @exit 1 - endef - else - ifeq ($(word 1,$(data_files)),) - define assert_area_is_given - @echo "" - @echo "ERROR: The 'area' parameter (or env var) has not been set, and there are no data/*.osm.pbf files" - @echo "" - @echo "To specify an area use" - @echo " make $@ area=" - @echo "" - @echo "To download an area, use make download area=" - @echo "To list downloadable areas, use make list-geofabrik and/or make list-bbbike" - @exit 1 - @echo "" - endef - else - # Keep just the name of the data file, without the .osm.pbf extension - area := $(patsubst data/%.osm.pbf,%,$(data_files)) - # Rename area-latest.osm.pbf to area.osm.pbf - # TODO: This if statement could be removed in a few months once everyone is using the file without the `-latest`? - ifneq ($(area),$(area:-latest=)) - $(shell mv "data/$(area).osm.pbf" "data/$(area:-latest=).osm.pbf") - area := $(area:-latest=) - $(warning ATTENTION: File data/$(area)-latest.osm.pbf was renamed to $(area).osm.pbf.) - AREA_INFO := Detected area=$(area) based on finding a 'data/$(area)-latest.osm.pbf' file - renamed to '$(area).osm.pbf'. Use 'area' parameter or environment variable to override. - else - AREA_INFO := Detected area=$(area) based on finding a 'data/$(area).osm.pbf' file. Use 'area' parameter or environment variable to override. - endif - endif - endif -endif - -ifneq ($(strip $(AREA_INFO)),) - define assert_area_is_given - @echo "$(AREA_INFO)" - endef -endif - -# If set, this file will be downloaded in download-osm and imported in the import-osm targets -PBF_FILE ?= data/$(area).osm.pbf - -# For download-osm, allow URL parameter to download file from a given URL. Area param must still be provided. -ifneq ($(strip $(url)),) - DOWNLOAD_AREA := $(url) -else - DOWNLOAD_AREA := $(area) -endif - -# The file is placed into the $EXPORT_DIR=/export (mapped to ./data) -export MBTILES_FILE ?= $(area).mbtiles -MBTILES_LOCAL_FILE = data/$(MBTILES_FILE) - -ifeq ($(strip $(DIFF_MODE)),true) - # import-osm implementation requires IMPOSM_CONFIG_FILE to be set to a valid file - # For static (no-updates) import, we don't need to override the default value - # For the update mode, set location of the dynamically-generated area-based config file - export IMPOSM_CONFIG_FILE = data/$(area).repl.json -endif - -# Load area-specific bbox file that gets generated by the download-osm --bbox -AREA_BBOX_FILE ?= data/$(area).bbox -ifneq (,$(wildcard $(AREA_BBOX_FILE))) - cat := $(if $(filter $(OS),Windows_NT),type,cat) - BBOX := $(shell $(cat) ${AREA_BBOX_FILE}) - export BBOX -endif - -define HELP_MESSAGE -============================================================================== - OpenMapTiles https://github.com/openmaptiles/openmaptiles - -Hints for testing areas - make list-geofabrik # list actual geofabrik OSM extracts for download -> <> - ./quickstart.sh <> # example: ./quickstart.sh madagascar - -Hints for designers: - make start-maputnik # start Maputnik Editor + dynamic tile server [ see $(OMT_HOST):8088 ] - make start-postserve # start dynamic tile server [ see $(OMT_HOST):$(PPORT) ] - make stop-postserve # stop dynamic tile server - make start-tileserver # start maptiler/tileserver-gl [ see $(OMT_HOST):$(TPORT) ] - -Hints for developers: - make # build source code - make bash # start openmaptiles-tools /bin/bash terminal - make generate-bbox-file # compute bounding box of a data file and store it in a file - make generate-devdoc # generate devdoc including graphs for all layers [./layers/...] - make generate-qa # statistics for a given layer's field - make generate-tiles-pg # generate vector tiles based on .env settings using PostGIS ST_MVT() - make generate-tiles # generate vector tiles based on .env settings using Mapnik (obsolete) - cat .env # list PG database and MIN_ZOOM and MAX_ZOOM information - cat quickstart.log # transcript of the last ./quickstart.sh run - make help # help about available commands - -Hints for downloading & importing data: - make list-geofabrik # list actual geofabrik OSM extracts for download - make list-bbbike # list actual BBBike OSM extracts for download - make download area=albania # download OSM data from any source and create config file - make download-geofabrik area=albania # download OSM data from geofabrik.de and create config file - make download-osmfr area=asia/qatar # download OSM data from openstreetmap.fr and create config file - make download-bbbike area=Amsterdam # download OSM data from bbbike.org and create config file - make import-data # Import data from OpenStreetMapData, Natural Earth and OSM Lake Labels. - make import-osm # Import OSM data with the mapping rules from build/mapping.yaml - make import-wikidata # Import labels from Wikidata - make import-sql # Import layers (run this after modifying layer SQL) - -Hints for database management: - make psql # start PostgreSQL console - make psql-list-tables # list all PostgreSQL tables - make list-views # list PostgreSQL public schema views - make list-tables # list PostgreSQL public schema tables - make vacuum-db # PostgreSQL: VACUUM ANALYZE - make analyze-db # PostgreSQL: ANALYZE - make destroy-db # remove docker containers and PostgreSQL data volume - make start-db # start PostgreSQL, creating it if it doesn't exist - make start-db-preloaded # start PostgreSQL, creating data-prepopulated one if it doesn't exist - make stop-db # stop PostgreSQL database without destroying the data - -Hints for Docker management: - make clean-unnecessary-docker # clean unnecessary docker image(s) and container(s) - make refresh-docker-images # refresh openmaptiles docker images from Docker HUB - make remove-docker-images # remove openmaptiles docker images - make list-docker-images # show a list of available docker images -============================================================================== -endef -export HELP_MESSAGE - -# -# TARGETS -# - -.PHONY: all -all: init-dirs build/openmaptiles.tm2source/data.yml build/mapping.yaml build-sql - -.PHONY: help -help: - @echo "$$HELP_MESSAGE" | less - -define win_fs_error - ( \ - echo "" ;\ - echo "ERROR: Windows native filesystem" ;\ - echo "" ;\ - echo "Please avoid running OpenMapTiles in a Windows filesystem." ;\ - echo "See https://github.com/openmaptiles/openmaptiles/issues/1095#issuecomment-817095465" ;\ - echo "" ;\ - exit 1 ;\ - ) -endef - -.PHONY: init-dirs -init-dirs: - @mkdir -p build/sql/parallel - @mkdir -p build/openmaptiles.tm2source - @mkdir -p data - @mkdir -p cache - @ ! ($(DOCKER_COMPOSE) 2>/dev/null run $(DC_OPTS) openmaptiles-tools df --output=fstype /tileset| grep -q 9p) < /dev/null || ($(win_fs_error)) - -build/openmaptiles.tm2source/data.yml: init-dirs -ifeq (,$(wildcard build/openmaptiles.tm2source/data.yml)) - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools bash -c \ - 'generate-tm2source $(TILESET_FILE) --host="$(PGHOST)" --port=$(PGPORT) --database="$(PGDATABASE)" --user="$(PGUSER)" --password="$(PGPASSWORD)" > $@' -endif - -build/mapping.yaml: init-dirs -ifeq (,$(wildcard build/mapping.yaml)) - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools bash -c \ - 'generate-imposm3 $(TILESET_FILE) > $@' -endif - -.PHONY: build-sql -build-sql: init-dirs -ifeq (,$(wildcard build/sql/run_last.sql)) - @mkdir -p build/sql/parallel - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools bash -c \ - 'generate-sql $(TILESET_FILE) --dir ./build/sql \ - && generate-sqltomvt $(TILESET_FILE) \ - --key --gzip --postgis-ver 3.0.1 \ - --function --fname=getmvt >> ./build/sql/run_last.sql' -endif - -.PHONY: clean -clean: - rm -rf build - -.PHONY: destroy-db -# TODO: Use https://stackoverflow.com/a/27852388/177275 -destroy-db: DC_PROJECT := $(shell echo $(DC_PROJECT) | tr A-Z a-z) -destroy-db: - $(DOCKER_COMPOSE) down -v --remove-orphans - $(DOCKER_COMPOSE) rm -fv - docker volume ls -q -f "name=^$(DC_PROJECT)_" | $(XARGS) docker volume rm - rm -rf cache - mkdir cache - -.PHONY: start-db-nowait -start-db-nowait: init-dirs - @echo "Starting postgres docker compose target using $${POSTGIS_IMAGE:-default} image (no recreate if exists)" && \ - $(DOCKER_COMPOSE) up --no-recreate -d postgres - -.PHONY: start-db -start-db: start-db-nowait - @echo "Wait for PostgreSQL to start..." - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools pgwait - -# Wrap start-db target but use the preloaded image -.PHONY: start-db-preloaded -start-db-preloaded: export POSTGIS_IMAGE=openmaptiles/postgis-preloaded -start-db-preloaded: export COMPOSE_HTTP_TIMEOUT=180 -start-db-preloaded: start-db - -.PHONY: stop-db -stop-db: - @echo "Stopping PostgreSQL..." - $(DOCKER_COMPOSE) stop postgres - -.PHONY: list-geofabrik -list-geofabrik: init-dirs - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools download-osm list geofabrik - -.PHONY: list-bbbike -list-bbbike: init-dirs - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools download-osm list bbbike - -# -# download, download-geofabrik, download-osmfr, and download-bbbike are handled here -# The --imposm-cfg will fail for some of the sources, but we ignore that error -- only needed for diff mode -# -OSM_SERVERS := geofabrik osmfr bbbike -ALL_DOWNLOADS := $(addprefix download-,$(OSM_SERVERS)) download -OSM_SERVER=$(patsubst download,,$(patsubst download-%,%,$@)) -.PHONY: $(ALL_DOWNLOADS) -$(ALL_DOWNLOADS): init-dirs - @$(assert_area_is_given) -ifneq ($(strip $(url)),) - $(if $(OSM_SERVER),$(error url parameter can only be used with non-specific download target:$(newline) make download area=$(area) url="$(url)"$(newline))) -endif -ifeq (,$(wildcard $(PBF_FILE))) - ifeq ($(strip $(DIFF_MODE)),true) - @echo "Downloading $(DOWNLOAD_AREA) with replication support into $(PBF_FILE) and $(IMPOSM_CONFIG_FILE) from $(if $(OSM_SERVER),$(OSM_SERVER),any source)" - @$(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools download-osm $(OSM_SERVER) "$(DOWNLOAD_AREA)" \ - --imposm-cfg "$(IMPOSM_CONFIG_FILE)" \ - --bbox "$(AREA_BBOX_FILE)" \ - --output "$(PBF_FILE)" - else - @echo "Downloading $(DOWNLOAD_AREA) into $(PBF_FILE) from $(if $(OSM_SERVER),$(OSM_SERVER),any source)" - @$(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools download-osm $(OSM_SERVER) "$(DOWNLOAD_AREA)" \ - --bbox "$(AREA_BBOX_FILE)" \ - --output "$(PBF_FILE)" - endif - @echo "" -else - ifeq ($(strip $(DIFF_MODE)),true) - ifeq (,$(wildcard $(IMPOSM_CONFIG_FILE))) - $(error \ - $(newline) Data files $(PBF_FILE) already exists, but $(IMPOSM_CONFIG_FILE) does not. \ - $(newline) You probably downloaded the data file before setting DIFF_MODE=true. \ - $(newline) You can delete the data file $(PBF_FILE) and re-run make download \ - $(newline) to re-download and generate config, or manually create $(IMPOSM_CONFIG_FILE) \ - $(newline) See example https://github.com/openmaptiles/openmaptiles-tools/blob/v5.2/bin/config/repl_config.json \ - $(newline)) - else - @echo "Data files $(PBF_FILE) and replication config $(IMPOSM_CONFIG_FILE) already exists, skipping the download." - endif - else - @echo "Data files $(PBF_FILE) already exists, skipping the download." - endif -endif - -.PHONY: generate-bbox-file -generate-bbox-file: - @$(assert_area_is_given) -ifeq (,$(wildcard $(AREA_BBOX_FILE))) - @$(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools download-osm bbox "$(PBF_FILE)" "$(AREA_BBOX_FILE)" -else - @echo "Configuration file $(AREA_BBOX_FILE) already exists, no need to regenerate. BBOX=$(BBOX)" -endif - -.PHONY: psql -psql: start-db-nowait - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools sh -c 'pgwait && psql.sh' - -# Special cache handling for Docker Toolbox on Windows -ifeq ($(MSYSTEM),MINGW64) - DC_CONFIG_CACHE := -f docker-compose.yml -f docker-compose-$(MSYSTEM).yml - DC_OPTS_CACHE := $(strip $(filter-out --user=%,$(DC_OPTS))) -else - DC_OPTS_CACHE := $(DC_OPTS) -endif - -.PHONY: import-osm -import-osm: all start-db-nowait - @$(assert_area_is_given) - $(DOCKER_COMPOSE) $(DC_CONFIG_CACHE) run $(DC_OPTS_CACHE) openmaptiles-tools sh -c 'pgwait && import-osm $(PBF_FILE)' - -.PHONY: update-osm -update-osm: all start-db-nowait - @$(assert_area_is_given) - $(DOCKER_COMPOSE) $(DC_CONFIG_CACHE) run $(DC_OPTS_CACHE) openmaptiles-tools sh -c 'pgwait && import-update' - -.PHONY: import-diff -import-diff: all start-db-nowait - @$(assert_area_is_given) - $(DOCKER_COMPOSE) $(DC_CONFIG_CACHE) run $(DC_OPTS_CACHE) openmaptiles-tools sh -c 'pgwait && import-diff' - -.PHONY: import-data -import-data: start-db - $(DOCKER_COMPOSE) $(DC_CONFIG_CACHE) run $(DC_OPTS_CACHE) import-data - -.PHONY: import-sql -import-sql: all start-db-nowait - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools sh -c 'pgwait && import-sql' | \ - awk -v s=": WARNING:" '1{print; fflush()} $$0~s{print "\n*** WARNING detected, aborting"; exit(1)}' | \ - awk '1{print; fflush()} $$0~".*ERROR" {txt=$$0} END{ if(txt){print "\n*** ERROR detected, aborting:"; print txt; exit(1)} }' - -.PHONY: generate-tiles -generate-tiles: all start-db - @echo "WARNING: This Mapnik-based method of tile generation is obsolete. Use generate-tiles-pg instead." - @echo "Generating tiles into $(MBTILES_LOCAL_FILE) (will delete if already exists)..." - @rm -rf "$(MBTILES_LOCAL_FILE)" - $(DOCKER_COMPOSE) run $(DC_OPTS) generate-vectortiles - @echo "Updating generated tile metadata ..." - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools \ - mbtiles-tools meta-generate "$(MBTILES_LOCAL_FILE)" $(TILESET_FILE) --auto-minmax --show-ranges - -.PHONY: generate-tiles-pg -generate-tiles-pg: all start-db - @echo "Generating tiles into $(MBTILES_LOCAL_FILE) (will delete if already exists) using PostGIS ST_MVT()..." - @rm -rf "$(MBTILES_LOCAL_FILE)" -# For some reason Ctrl+C doesn't work here without the -T. Must be pressed twice to stop. - $(DOCKER_COMPOSE) run -T $(DC_OPTS) openmaptiles-tools generate-tiles - @echo "Updating generated tile metadata ..." - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools \ - mbtiles-tools meta-generate "$(MBTILES_LOCAL_FILE)" $(TILESET_FILE) --auto-minmax --show-ranges - -.PHONY: start-tileserver -start-tileserver: init-dirs - @echo " " - @echo "***********************************************************" - @echo "* " - @echo "* Download/refresh maptiler/tileserver-gl docker image" - @echo "* see documentation: https://github.com/maptiler/tileserver-gl" - @echo "* " - @echo "***********************************************************" - @echo " " - docker pull maptiler/tileserver-gl - @echo " " - @echo "***********************************************************" - @echo "* " - @echo "* Start maptiler/tileserver-gl " - @echo "* ----------------------------> check $(OMT_HOST):$(TPORT) " - @echo "* " - @echo "***********************************************************" - @echo " " - docker run $(DC_OPTS) -it --name tileserver-gl -v $$(pwd)/data:/data -p $(TPORT):$(TPORT) maptiler/tileserver-gl --port $(TPORT) - -.PHONY: start-postserve -start-postserve: start-db - @echo " " - @echo "***********************************************************" - @echo "* " - @echo "* Bring up postserve at $(OMT_HOST):$(PPORT)" - @echo "* --> can view it locally (use make start-maputnik)" - @echo "* --> or can use https://maputnik.github.io/editor" - @echo "* " - @echo "* set data source / TileJSON URL to $(OMT_HOST):$(PPORT)" - @echo "* " - @echo "***********************************************************" - @echo " " - $(DOCKER_COMPOSE) up -d postserve - -.PHONY: stop-postserve -stop-postserve: - $(DOCKER_COMPOSE) stop postserve - -.PHONY: start-maputnik -start-maputnik: stop-maputnik start-postserve - @echo " " - @echo "***********************************************************" - @echo "* " - @echo "* Start maputnik/editor " - @echo "* ---> go to $(OMT_HOST):8088 " - @echo "* ---> set data source / TileJSON URL to $(OMT_HOST):$(PPORT)" - @echo "* " - @echo "***********************************************************" - @echo " " - docker run $(DC_OPTS) --name maputnik_editor -d -p 8088:8888 maputnik/editor - -.PHONY: stop-maputnik -stop-maputnik: - -docker rm -f maputnik_editor - -# STAT_FUNCTION=frequency|toplength|variance -.PHONY: generate-qa -generate-qa: all start-db-nowait - @echo " " - @echo "e.g. make generate-qa STAT_FUNCTION=frequency LAYER=transportation ATTRIBUTE=class" - @echo " " - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools \ - layer-stats $(STAT_FUNCTION) $(TILESET_FILE) $(LAYER) $(ATTRIBUTE) -m 0 -n 14 -v - -# generate all etl and mapping graphs -.PHONY: generate-devdoc -generate-devdoc: init-dirs - mkdir -p ./build/devdoc && \ - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools sh -c \ - 'generate-etlgraph $(TILESET_FILE) $(GRAPH_PARAMS) && \ - generate-mapping-graph $(TILESET_FILE) $(GRAPH_PARAMS)' - -.PHONY: bash -bash: init-dirs - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools bash - -.PHONY: import-wikidata -import-wikidata: init-dirs - $(DOCKER_COMPOSE) $(DC_CONFIG_CACHE) run $(DC_OPTS_CACHE) openmaptiles-tools import-wikidata --cache /cache/wikidata-cache.json $(TILESET_FILE) - -.PHONY: reset-db-stats -reset-db-stats: init-dirs - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools psql.sh -v ON_ERROR_STOP=1 -P pager=off -c 'SELECT pg_stat_statements_reset();' - -.PHONY: list-views -list-views: init-dirs - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools psql.sh -v ON_ERROR_STOP=1 -A -F"," -P pager=off -P footer=off \ - -c "select viewname from pg_views where schemaname='public' order by viewname;" - -.PHONY: list-tables -list-tables: init-dirs - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools psql.sh -v ON_ERROR_STOP=1 -A -F"," -P pager=off -P footer=off \ - -c "select tablename from pg_tables where schemaname='public' order by tablename;" - -.PHONY: psql-list-tables -psql-list-tables: init-dirs - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools psql.sh -v ON_ERROR_STOP=1 -P pager=off -c "\d+" - -.PHONY: vacuum-db -vacuum-db: init-dirs - @echo "Start - postgresql: VACUUM ANALYZE VERBOSE;" - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools psql.sh -v ON_ERROR_STOP=1 -P pager=off -c 'VACUUM ANALYZE VERBOSE;' - -.PHONY: analyze-db -analyze-db: init-dirs - @echo "Start - postgresql: ANALYZE VERBOSE;" - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools psql.sh -v ON_ERROR_STOP=1 -P pager=off -c 'ANALYZE VERBOSE;' - -.PHONY: list-docker-images -list-docker-images: - docker images | grep openmaptiles - -.PHONY: refresh-docker-images -refresh-docker-images: init-dirs -ifneq ($(strip $(NO_REFRESH)),) - @echo "Skipping docker image refresh" -else - @echo "" - @echo "Refreshing docker images... Use NO_REFRESH=1 to skip." -ifneq ($(strip $(USE_PRELOADED_IMAGE)),) - POSTGIS_IMAGE=openmaptiles/postgis-preloaded \ - docker-compose pull --ignore-pull-failures $(QUIET_FLAG) openmaptiles-tools generate-vectortiles postgres -else - docker-compose pull --ignore-pull-failures $(QUIET_FLAG) openmaptiles-tools generate-vectortiles postgres import-data -endif -endif - -.PHONY: remove-docker-images -remove-docker-images: - @echo "Deleting all openmaptiles related docker image(s)..." - @$(DOCKER_COMPOSE) down - @docker images "openmaptiles/*" -q | $(XARGS) docker rmi -f - @docker images "maputnik/editor" -q | $(XARGS) docker rmi -f - @docker images "maptiler/tileserver-gl" -q | $(XARGS) docker rmi -f - -.PHONY: clean-unnecessary-docker -clean-unnecessary-docker: - @echo "Deleting unnecessary container(s)..." - @docker ps -a -q --filter "status=exited" | $(XARGS) docker rm - @echo "Deleting unnecessary image(s)..." - @docker images | awk -F" " '//{print $$3}' | $(XARGS) docker rmi - -.PHONY: test-perf-null -test-perf-null: init-dirs - $(DOCKER_COMPOSE) run $(DC_OPTS) openmaptiles-tools test-perf $(TILESET_FILE) --test null --no-color - -.PHONY: build-test-pbf -build-test-pbf: init-dirs - docker-compose run $(DC_OPTS) openmaptiles-tools /tileset/.github/workflows/build-test-data.sh - -.PHONY: debug -debug: ## Use this target when developing Makefile itself to verify loaded environment variables - @$(assert_area_is_given) - @echo file_exists = $(wildcard $(AREA_BBOX_FILE)) - @echo AREA_BBOX_FILE = $(AREA_BBOX_FILE) , $$AREA_ENV_FILE - @echo BBOX = $(BBOX) , $$BBOX - @echo MIN_ZOOM = $(MIN_ZOOM) , $$MIN_ZOOM - @echo MAX_ZOOM = $(MAX_ZOOM) , $$MAX_ZOOM diff --git a/tile-generator/openbikesensor.yaml b/tile-generator/openbikesensor.yaml new file mode 100644 index 0000000..1a13a01 --- /dev/null +++ b/tile-generator/openbikesensor.yaml @@ -0,0 +1,25 @@ +tileset: + name: OpenBikeSensor + layers: + - layers/obs_events/obs_events.yaml + - layers/obs_roads/obs_roads.yaml + version: 0.3.0-rc.1 + id: openbikesensor + description: > + A tileset for OpenBikeSensor data -- https://openbikesensor.org. + attribution: > + © OpenBikeSensor + © OpenMapTiles + © OpenStreetMap contributors + center: [0, 0, 1] + bounds: [-180,-90,180,90] + maxzoom: 14 + minzoom: 0 + pixel_scale: 256 + languages: + - de + - en + defaults: + 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 + datasource: + srid: 900913 diff --git a/tile-generator/openmaptiles.yaml b/tile-generator/openmaptiles.yaml deleted file mode 100644 index 543078c..0000000 --- a/tile-generator/openmaptiles.yaml +++ /dev/null @@ -1,21 +0,0 @@ -tileset: - layers: - - layers/obs_events/obs_events.yaml - - layers/obs_roads/obs_roads.yaml - name: OpenMapTiles - version: 3.12.1 - id: openmaptiles - description: "A tileset for OpenBikeSensor data. https://openbikesensor.org" - attribution: '© OpenBikeSensor © OpenMapTiles' - center: [0, 0, 1] - bounds: [7.796887,47.966839,7.879628,48.021061] - maxzoom: 14 - minzoom: 0 - pixel_scale: 256 - languages: - - de - - en - defaults: - 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 - datasource: - srid: 900913