Improve Makefile - simplify make, without local omt-tools (PR #562)

This commit is contained in:
Hsieh Chin Fan (Pham) 2019-03-22 16:34:00 +08:00 committed by Martin Mikita
parent 2871b234a5
commit 3591cb2f8d
3 changed files with 53 additions and 50 deletions

View File

@ -20,7 +20,9 @@ help:
@echo " make psql-vacuum-analyze # PostgreSQL: VACUUM ANALYZE" @echo " make psql-vacuum-analyze # PostgreSQL: VACUUM ANALYZE"
@echo " make psql-analyze # PostgreSQL: ANALYZE" @echo " make psql-analyze # PostgreSQL: ANALYZE"
@echo " make generate-qareports # generate reports [./build/qareports]" @echo " make generate-qareports # generate reports [./build/qareports]"
@echo " make generate-devdoc # generate devdoc [./build/devdoc]" @echo " make generate-devdoc # generate devdoc including graphs for all layers [./build/devdoc]"
@echo " make etl-graph # hint for generating a single etl graph"
@echo " make mapping-graph # hint for generating a single mapping graph"
@echo " make import-sql-dev # start import-sql /bin/bash terminal" @echo " make import-sql-dev # start import-sql /bin/bash terminal"
@echo " make import-osm-dev # start import-osm /bin/bash terminal (imposm3)" @echo " make import-osm-dev # start import-osm /bin/bash terminal (imposm3)"
@echo " make clean-docker # remove docker containers, PG data volume" @echo " make clean-docker # remove docker containers, PG data volume"
@ -31,18 +33,22 @@ help:
@echo " make pgclimb-list-views # list PostgreSQL public schema views" @echo " make pgclimb-list-views # list PostgreSQL public schema views"
@echo " make pgclimb-list-tables # list PostgreSQL public schema tables" @echo " make pgclimb-list-tables # list PostgreSQL public schema tables"
@echo " cat .env # list PG database and MIN_ZOOM and MAX_ZOOM information" @echo " cat .env # list PG database and MIN_ZOOM and MAX_ZOOM information"
@echo " cat ./quickstart.log # backup of the last ./quickstart.sh" @echo " cat quickstart.log # backup of the last ./quickstart.sh"
@echo " make help # help about available commands" @echo " make help # help about available commands"
@echo "==============================================================================" @echo "=============================================================================="
build/openmaptiles.tm2source/data.yml: build:
mkdir -p build/openmaptiles.tm2source && generate-tm2source openmaptiles.yaml --host="postgres" --port=5432 --database="openmaptiles" --user="openmaptiles" --password="openmaptiles" > build/openmaptiles.tm2source/data.yml mkdir -p build
build/mapping.yaml: build/openmaptiles.tm2source/data.yml: build
mkdir -p build && generate-imposm3 openmaptiles.yaml > build/mapping.yaml mkdir -p build/openmaptiles.tm2source
docker-compose run --rm openmaptiles-tools generate-tm2source openmaptiles.yaml --host="postgres" --port=5432 --database="openmaptiles" --user="openmaptiles" --password="openmaptiles" > build/openmaptiles.tm2source/data.yml
build/tileset.sql: build/mapping.yaml: build
mkdir -p build && generate-sql openmaptiles.yaml > build/tileset.sql docker-compose run --rm openmaptiles-tools generate-imposm3 openmaptiles.yaml > build/mapping.yaml
build/tileset.sql: build
docker-compose run --rm openmaptiles-tools generate-sql openmaptiles.yaml > build/tileset.sql
clean: 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
@ -70,30 +76,18 @@ download-geofabrik:
psql: db-start psql: db-start
docker-compose run --rm import-osm /usr/src/app/psql.sh docker-compose run --rm import-osm /usr/src/app/psql.sh
cfg-remake: import-osm: db-start all
docker-compose run --rm openmaptiles-tools make clean
docker-compose run --rm openmaptiles-tools make
import-osm: db-start
docker-compose run --rm openmaptiles-tools make clean
docker-compose run --rm openmaptiles-tools make
docker-compose run --rm import-osm docker-compose run --rm import-osm
import-sql: db-start import-sql: db-start all
docker-compose run --rm openmaptiles-tools make clean
docker-compose run --rm openmaptiles-tools make
docker-compose run --rm import-sql docker-compose run --rm import-sql
import-osmsql: db-start import-osmsql: db-start all
docker-compose run --rm openmaptiles-tools make clean
docker-compose run --rm openmaptiles-tools make
docker-compose run --rm import-osm docker-compose run --rm import-osm
docker-compose run --rm import-sql docker-compose run --rm import-sql
generate-tiles: db-start generate-tiles: db-start all
rm -rf data/tiles.mbtiles rm -rf data/tiles.mbtiles
docker-compose run --rm openmaptiles-tools make clean
docker-compose run --rm openmaptiles-tools make
if [ -f ./data/docker-compose-config.yml ]; then \ if [ -f ./data/docker-compose-config.yml ]; then \
docker-compose -f docker-compose.yml -f ./data/docker-compose-config.yml run --rm generate-vectortiles; \ docker-compose -f docker-compose.yml -f ./data/docker-compose-config.yml run --rm generate-vectortiles; \
else \ else \
@ -147,23 +141,35 @@ start-postserve:
generate-qareports: generate-qareports:
./qa/run.sh ./qa/run.sh
# work in progress - please don't remove build/devdoc:
generate-devdoc:
mkdir -p ./build/devdoc mkdir -p ./build/devdoc
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/aeroway/aeroway.yaml ./build/devdoc
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/boundary/boundary.yaml ./build/devdoc layers = $(notdir $(wildcard layers/*)) # all layers
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/building/building.yaml ./build/devdoc
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/housenumber/housenumber.yaml ./build/devdoc etl-graph:
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/landcover/landcover.yaml ./build/devdoc @echo 'Use'
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/landuse/landuse.yaml ./build/devdoc @echo ' make etl-graph-[layer] to generate etl graph for [layer]'
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/park/park.yaml ./build/devdoc @echo ' example: make etl-graph-poi'
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/place/place.yaml ./build/devdoc @echo 'Valid layers: $(layers)'
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/poi/poi.yaml ./build/devdoc
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/transportation/transportation.yaml ./build/devdoc # generate etl graph for a certain layer, e.g. etl-graph-building, etl-graph-place
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/transportation_name/transportation_name.yaml ./build/devdoc etl-graph-%: layers/% build/devdoc
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/water/water.yaml ./build/devdoc docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/$*/$*.yaml ./build/devdoc
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/water_name/water_name.yaml ./build/devdoc
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/waterway/waterway.yaml ./build/devdoc mappingLayers = $(notdir $(patsubst %/mapping.yaml,%, $(wildcard layers/*/mapping.yaml))) # layers with mapping.yaml
# generate mapping graph for a certain layer, e.g. mapping-graph-building, mapping-graph-place
mapping-graph:
@echo 'Use'
@echo ' make mapping-graph-[layer] to generate mapping graph for [layer]'
@echo ' example: make mapping-graph-poi'
@echo 'Valid layers: $(mappingLayers)'
mapping-graph-%: ./layers/%/mapping.yaml build/devdoc
docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-mapping-graph layers/$*/$*.yaml ./build/devdoc/mapping-diagram-$*
# generate all etl and mapping graphs
generate-devdoc: $(addprefix etl-graph-,$(layers)) $(addprefix mapping-graph-,$(mappingLayers))
import-sql-dev: import-sql-dev:
docker-compose run --rm import-sql /bin/bash docker-compose run --rm import-sql /bin/bash

View File

@ -2,7 +2,7 @@
OpenMapTiles is an extensible and open tile schema based on the OpenStreetMap. It is used to generate vector tiles for online zoomable maps. The project is about creating a beautiful basemaps with general layers that contain topographic information. More information [openmaptiles.org](http://openmaptiles.org/) and [openmaptiles.com](http://openmaptiles.com/). OpenMapTiles is an extensible and open tile schema based on the OpenStreetMap. It is used to generate vector tiles for online zoomable maps. The project is about creating a beautiful basemaps with general layers that contain topographic information. More information [openmaptiles.org](http://openmaptiles.org/) and [openmaptiles.com](http://openmaptiles.com/).
We encourage you to collaborate, reuse and adapt existing layers and add your own layers or use our approach for your own vector tile project. Feel free to fork the repo and experiment. The repository is built on top of the [openmaptiles/tools](https://github.com/openmaptiles/openmaptiles-tools) to simplify vector tile creation. We encourage you to collaborate, reuse and adapt existing layers and add your own layers or use our approach for your own vector tile project. Feel free to fork the repo and experiment. The repository is built on top of the [openmaptiles/openmaptiles-tools](https://github.com/openmaptiles/openmaptiles-tools) to simplify vector tile creation.
- :link: Discuss at the #openmaptiles channel at [OSM Slack](https://osmus-slack.herokuapp.com/) - :link: Discuss at the #openmaptiles channel at [OSM Slack](https://osmus-slack.herokuapp.com/)
- :link: Docs https://openmaptiles.org/docs - :link: Docs https://openmaptiles.org/docs
@ -63,11 +63,10 @@ Together the layers make up the OpenMapTiles tileset.
## Develop ## Develop
To work on OpenMapTiles you need Docker and Python. To work on OpenMapTiles you need Docker.
- Install [Docker](https://docs.docker.com/engine/installation/). Minimum version is 1.12.3+. - Install [Docker](https://docs.docker.com/engine/installation/). Minimum version is 1.12.3+.
- Install [Docker Compose](https://docs.docker.com/compose/install/). Minimum version is 1.7.1+. - Install [Docker Compose](https://docs.docker.com/compose/install/). Minimum version is 1.7.1+.
- Install [OpenMapTiles tools](https://github.com/openmaptiles/openmaptiles-tools) with `pip install openmaptiles-tools`
### Build ### Build
@ -78,8 +77,6 @@ git clone git@github.com:openmaptiles/openmaptiles.git
cd openmaptiles cd openmaptiles
# Build the imposm mapping, the tm2source project and collect all SQL scripts # Build the imposm mapping, the tm2source project and collect all SQL scripts
make make
# You can also run the build process inside a Docker container
docker run -v $(pwd):/tileset openmaptiles/openmaptiles-tools make
``` ```
You can execute the following manual steps (for better understanding) You can execute the following manual steps (for better understanding)
@ -122,10 +119,10 @@ docker-compose run import-osm
### Work on Layers ### Work on Layers
Each time you modify layer SQL code run `make` and `docker-compose run import-sql`. Each time you modify layer SQL code run `make` and `make import-sql`.
``` ```
make clean && make && docker-compose run import-sql make clean && make && make import-sql
``` ```
Now you are ready to **generate the vector tiles**. Using environment variables Now you are ready to **generate the vector tiles**. Using environment variables

View File

@ -167,21 +167,21 @@ fi
echo " " echo " "
echo "-------------------------------------------------------------------------------------" echo "-------------------------------------------------------------------------------------"
echo "====> : Remove old generated source files ( ./build/* ) ( if they exist ) " echo "====> : Remove old generated source files ( ./build/* ) ( if they exist ) "
docker-compose run --rm openmaptiles-tools make clean make clean
echo " " echo " "
echo "-------------------------------------------------------------------------------------" echo "-------------------------------------------------------------------------------------"
echo "====> : Code generating from the layer definitions ( ./build/mapping.yaml; ./build/tileset.sql )" echo "====> : Code generating from the layer definitions ( ./build/mapping.yaml; ./build/tileset.sql )"
echo " : The tool source code: https://github.com/openmaptiles/openmaptiles-tools " echo " : The tool source code: https://github.com/openmaptiles/openmaptiles-tools "
echo " : But we generate the tm2source, Imposm mappings and SQL functions from the layer definitions! " echo " : But we generate the tm2source, Imposm mappings and SQL functions from the layer definitions! "
docker-compose run --rm openmaptiles-tools make make
echo " " echo " "
echo "-------------------------------------------------------------------------------------" echo "-------------------------------------------------------------------------------------"
echo "====> : Start PostgreSQL service ; create PostgreSQL data volume " echo "====> : Start PostgreSQL service ; create PostgreSQL data volume "
echo " : Source code: https://github.com/openmaptiles/postgis " echo " : Source code: https://github.com/openmaptiles/postgis "
echo " : Thank you: https://www.postgresql.org ! Thank you http://postgis.org !" echo " : Thank you: https://www.postgresql.org ! Thank you http://postgis.org !"
docker-compose up -d postgres docker-compose up -d postgres
echo " " echo " "
echo "-------------------------------------------------------------------------------------" echo "-------------------------------------------------------------------------------------"