openmaptiles/quickstart.sh

337 wiersze
14 KiB
Bash
Czysty Zwykły widok Historia

#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset
2016-11-28 22:15:47 +00:00
###########################################
# OpenMapTiles quickstart.sh for x86_64 linux
#
2016-11-28 15:44:30 +00:00
# Example calls ...
2016-11-28 22:15:47 +00:00
# ./quickstart.sh
# ./quickstart.sh africa
# ./quickstart.sh alabama
# ./quickstart.sh alaska
# ./quickstart.sh albania
# ./quickstart.sh alberta
# ./quickstart.sh alps
2016-11-28 15:44:30 +00:00
# ....
2016-11-28 22:15:47 +00:00
#
2016-11-28 15:44:30 +00:00
# to list areas : make download-geofabrik-list
# see more QUICKSTART.md
#
if [ $# -eq 0 ]; then
2016-11-28 22:15:47 +00:00
osm_area=albania # default test country
echo "No parameter - set area=$osm_area "
else
osm_area=$1
fi
testdata=${osm_area}.osm.pbf
2016-11-28 22:15:47 +00:00
## Min versions ...
MIN_COMPOSE_VER=1.7.1
MIN_DOCKER_VER=1.10.0
STARTTIME=$(date +%s)
STARTDATE=$(date -Iminutes)
githash=$( git rev-parse HEAD )
2016-11-28 22:15:47 +00:00
log_file=./quickstart.log
rm -f $log_file
exec &> >(tee -a "$log_file")
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : OpenMapTiles quickstart! [ https://github.com/openmaptiles/openmaptiles ] "
2016-11-15 22:54:53 +00:00
echo " : This will be logged to the $log_file file ( for debugging ) and to the screen"
echo " : Git version: $githash / Started: $STARTDATE "
echo " : Your bash version: $BASH_VERSION"
echo " : Your OS: $OSTYPE"
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo " : Your system is:"
lsb_release -a
echo " "
echo "-------------------------------------------------------------------------------------"
echo " : This is working on x86_64 ; Your kernel is:"
uname -r
uname -m
KERNEL_CPU_VER=$(uname -m)
if [ "$KERNEL_CPU_VER" != "x86_64" ]; then
echo "ERR: Sorry this is working only on x86_64!"
exit 1
fi
echo " : --- Memory, CPU info ---- "
mem=$( grep MemTotal /proc/meminfo | awk '{print $2}' | xargs -I {} echo "scale=4; {}/1024^2" | bc )
echo "system memory (GB): ${mem} "
grep SwapTotal /proc/meminfo
echo cpu number: $(grep -c processor /proc/cpuinfo) x $(cat /proc/cpuinfo | grep "bogomips" | head -1)
cat /proc/meminfo | grep Free
else
echo " "
echo "Warning : This is not a Linux ... ( Less tested ... ) "
echo " "
fi
2016-11-16 03:45:03 +00:00
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Please check the docker and docker-compose version!"
2016-11-15 22:54:53 +00:00
echo " : We are using docker-compose V2 file format ! see more: https://docs.docker.com/"
echo " : (theoretically;not tested) minumum Docker version is $MIN_DOCKER_VER+."
echo " : (theoretically;not tested) minimum Docker-compose version is $MIN_COMPOSE_VER+."
echo " : See the .travis testfile for the current supported versions "
echo " : Your docker systems is:"
docker --version
docker-compose --version
COMPOSE_VER=$(docker-compose version --short)
if [ $COMPOSE_VER "<" $MIN_COMPOSE_VER ]; then
echo "ERR: Your Docker-compose version is Known to have bugs , Please Update docker-compose!"
exit 1
fi
DOCKER_VER="$(docker -v | awk -F '[ ,]+' '{ print $3 }')"
if [ $DOCKER_VER "<" $MIN_DOCKER_VER ]; then
echo "ERR: Your Docker version is not compatible , Please Update docker!"
exit 1
fi
2016-11-28 23:27:44 +00:00
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Docker Space info: "
docker info | grep Space
2016-11-28 22:15:47 +00:00
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Pulling or Refreshing OpenMapTiles docker images "
2016-11-28 23:27:44 +00:00
#for developers is not perfect ...
2016-11-28 22:15:47 +00:00
#make refresh-docker-images
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Checking OpenMapTiles docker images "
docker images | grep openmaptiles
echo " "
echo "-------------------------------------------------------------------------------------"
2016-11-15 22:54:53 +00:00
echo "====> : Stopping running services & removing old containers "
2016-11-28 22:15:47 +00:00
make clean-docker
echo " "
echo "-------------------------------------------------------------------------------------"
2016-11-28 22:15:47 +00:00
echo "====> : Making directories - if they don't exist ( ./build ./data ./pgdata ) "
mkdir -p pgdata
mkdir -p build
mkdir -p data
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Removing old MBTILES if exists ( ./data/*.mbtiles ) "
rm -f ./data/*.mbtiles
2016-11-28 22:15:47 +00:00
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Removing pgdata "
# rm -rf ./pgdata/*
if [ ! -f ./data/${testdata} ]; then
echo " "
echo "-------------------------------------------------------------------------------------"
2016-11-15 22:54:53 +00:00
echo "====> : Downloading testdata $testdata "
rm -f ./data/*
#wget $testdataurl -P ./data
2016-11-28 23:53:52 +00:00
make download-geofabrik area=${osm_area}
2016-11-28 22:15:47 +00:00
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Osm metadata : $testdata "
cat ./data/osmstat.txt
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Generated docker-compose config "
cat ./data/docker-compose-config.yml
else
echo " "
echo "-------------------------------------------------------------------------------------"
2016-11-28 22:15:47 +00:00
echo "====> : The testdata ./data/$testdata exists, we don't need to download! "
fi
if [ ! -f ./data/${testdata} ]; then
echo " "
2016-11-28 22:15:47 +00:00
echo "Missing ./data/$testdata , Download or Parameter error? "
exit 404
fi
echo " "
echo "-------------------------------------------------------------------------------------"
2016-11-15 22:54:53 +00:00
echo "====> : Remove old generated source files ( ./build/* ) ( if they exist ) "
docker run --rm -v $(pwd):/tileset openmaptiles/openmaptiles-tools make clean
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Code generating from the layer definitions ( ./build/mapping.yaml; ./build/tileset.sql )"
2016-11-15 22:54:53 +00:00
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! "
docker run --rm -v $(pwd):/tileset openmaptiles/openmaptiles-tools make
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Start PostgreSQL service ; create PostgreSQL data volume "
2016-11-15 22:54:53 +00:00
echo " : Source code: https://github.com/openmaptiles/postgis "
echo " : Thank you: https://www.postgresql.org ! Thank you http://postgis.org !"
docker-compose up -d postgres
2016-11-28 22:15:47 +00:00
# Drop all PostgreSQL tables ...
make forced-clean-sql
echo " "
echo "-------------------------------------------------------------------------------------"
2016-11-15 22:54:53 +00:00
echo "====> : Start importing water data from http://openstreetmapdata.com into PostgreSQL "
echo " : Source code: https://github.com/openmaptiles/import-water "
echo " : Data license: http://openstreetmapdata.com/info/license "
echo " : Thank you: http://openstreetmapdata.com/info/supporting "
docker-compose run --rm import-water
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Start importing http://www.naturalearthdata.com into PostgreSQL "
2016-11-15 22:54:53 +00:00
echo " : Source code: https://github.com/openmaptiles/import-natural-earth "
echo " : Terms-of-use: http://www.naturalearthdata.com/about/terms-of-use "
echo " : Thank you: Natural Earth Contributors! "
docker-compose run --rm import-natural-earth
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Start importing OpenStreetMap Lakelines data "
echo " : Source code: https://github.com/openmaptiles/import-lakelines "
echo " : https://github.com/lukasmartinelli/osm-lakelines "
echo " : Data license: .. "
docker-compose run --rm import-lakelines
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Start importing OpenStreetMap data: ./data/${testdata} -> imposm3[./build/mapping.yaml] -> PostgreSQL"
echo " : Imposm3 documentation: https://imposm.org/docs/imposm3/latest/index.html "
echo " : Thank you Omniscale! "
echo " : Source code: https://github.com/openmaptiles/import-osm "
echo " : The OpenstreetMap data license: https://www.openstreetmap.org/copyright (ODBL) "
2016-11-28 22:15:47 +00:00
echo " : Thank you OpenStreetMap Contributors ! "
docker-compose run --rm import-osm
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Start SQL postprocessing: ./build/tileset.sql -> PostgreSQL "
2016-11-15 22:54:53 +00:00
echo " : Source code: https://github.com/openmaptiles/import-sql "
docker-compose run --rm import-sql
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Start generating MBTiles (containing gzipped MVT PBF) from a TM2Source project. "
echo " : TM2Source project definitions : ./build/openmaptiles.tm2source/data.yml "
2016-11-15 22:54:53 +00:00
echo " : Output MBTiles: ./data/tiles.mbtiles "
echo " : Source code: https://github.com/openmaptiles/generate-vectortiles "
echo " : We are using a lot of Mapbox Open Source tools! : https://github.com/mapbox "
echo " : Thank you https://www.mapbox.com !"
echo " : See other MVT tools : https://github.com/mapbox/awesome-vector-tiles "
echo " : "
echo " : You will see a lot of deprecated warning in the log! This is normal! "
echo " : like : Mapnik LOG> ... is deprecated and will be removed in Mapnik 4.x ... "
docker-compose -f docker-compose.yml -f ./data/docker-compose-config.yml run --rm generate-vectortiles
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : Stop PostgreSQL service ( but we keep PostgreSQL data volume for debugging )"
docker-compose stop postgres
echo " "
echo "-------------------------------------------------------------------------------------"
2016-11-16 00:54:27 +00:00
echo "====> : Inputs - Outputs md5sum for debugging "
2016-11-28 22:15:47 +00:00
rm -f ./data/quickstart_checklist.chk
md5sum build/mapping.yaml >> ./data/quickstart_checklist.chk
md5sum build/tileset.sql >> ./data/quickstart_checklist.chk
md5sum build/openmaptiles.tm2source/data.yml >> ./data/quickstart_checklist.chk
md5sum ./data/${testdata} >> ./data/quickstart_checklist.chk
md5sum ./data/tiles.mbtiles >> ./data/quickstart_checklist.chk
md5sum ./data/docker-compose-config.yml >> ./data/quickstart_checklist.chk
md5sum ./data/osmstat.txt >> ./data/quickstart_checklist.chk
cat ./data/quickstart_checklist.chk
ENDTIME=$(date +%s)
2016-11-16 01:16:18 +00:00
ENDDATE=$(date -Iminutes)
MODDATE=$(stat -c %y ./data/${testdata} )
echo " "
echo " "
echo "-------------------------------------------------------------------------------------"
echo "-- S u m m a r y --"
echo "-------------------------------------------------------------------------------------"
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : (disk space) We have created a lot of docker images: "
2016-11-15 22:54:53 +00:00
echo " : Hint: you can remove with: docker rmi IMAGE "
docker images | grep openmaptiles
2016-11-28 22:15:47 +00:00
#
# echo " "
# echo "-------------------------------------------------------------------------------------"
# echo "====> : (disk space) We have created this new docker volume for PostgreSQL data:"
# echo " : Hint: you can remove with : docker volume rm openmaptiles_pgdata "
# docker volume ls -q | grep openmaptiles
echo " "
echo "-------------------------------------------------------------------------------------"
echo "====> : (disk space) We have created the new vectortiles ( ./data/tiles.mbtiles ) "
echo " : The OpenMapTiles MBTILES license: ..... "
echo " : We created from $testdata ( file moddate: $MODDATE ) "
echo " : Size: "
ls ./data/*.mbtiles -la
echo " "
echo "-------------------------------------------------------------------------------------"
2016-11-28 15:44:30 +00:00
echo "The ./quickstart.sh $osm_area is finished! "
echo "It takes $(($ENDTIME - $STARTTIME)) seconds to complete"
2016-11-16 01:16:18 +00:00
echo "We saved the log file to $log_file ( for debugging ) You can compare with the travis log !"
2016-11-28 22:15:47 +00:00
echo " "
2016-11-28 15:44:30 +00:00
echo "Start experimenting ! And check the QUICKSTART.MD file !"
echo " "
echo "Hints for testing other areas"
echo " make download-geofabrik-list # list actual geofabrik OSM extracts for download -> <<your-area>> "
2016-11-28 23:27:44 +00:00
echo " make list # list actual geofabrik OSM extracts for download -> <<your-area>> "
2016-11-28 15:44:30 +00:00
echo " ./quickstart.sh <<your-area>> # example: ./quickstart.sh madagascar "
echo " "
echo "Hints for designers:"
echo " .... # start Maputnik "
echo " .... # start Tileserver-gl-light"
2016-11-28 22:15:47 +00:00
echo " make start-mapbox-studio # start Mapbox Studio"
2016-11-28 15:44:30 +00:00
echo " "
echo "Hints for developers:"
2016-11-28 23:27:44 +00:00
echo " make download-geofabrik area=albania # download OSM data from geofabrik, and create config file"
2016-11-28 15:44:30 +00:00
echo " make psql # start PostgreSQL console "
2016-11-28 22:15:47 +00:00
echo " make psql-list-tables # list all PostgreSQL tables "
2016-11-28 15:44:30 +00:00
echo " make import-sql-dev # start import-sql /bin/bash terminal "
echo " make import-osm-dev # start import-osm /bin/bash terminal (imposm3)"
2016-11-28 22:15:47 +00:00
echo " make clean-docker # remove docker containers, PG data volume "
echo " make forced-clean-sql # drop all PostgreSQL tables for clean environment "
echo " make refresh-docker-images # refresh openmaptiles docker images from Docker HUB"
echo " make remove-docker-images # remove openmaptiles docker images"
2016-11-28 23:27:44 +00:00
echo " make pgclimb-list-views # list PostgreSQL public schema views"
echo " make pgclimb-list-tables # list PostgreSQL public schema tabless"
2016-11-28 15:44:30 +00:00
echo " cat .env # list PG database and MIN_ZOOM and MAX_ZOOM informations"
2016-11-28 22:15:47 +00:00
echo " cat ./quickstart.log # backup of the last ./quickstart.sh "
echo " .... # start lukasmartinelli/postgis-editor"
echo " "
2016-11-28 15:44:30 +00:00
echo "-------------------------------------------------------------------------------------"
echo " Acknowledgments "
2016-11-28 22:15:47 +00:00
echo " Thanks to all free, open source software developers and Open Data Contributors ! "
echo "-------------------------------------------------------------------------------------"