All Projects → Qwant → kartotherian_docker

Qwant / kartotherian_docker

Licence: Apache-2.0 license
Docker deployment for Qwant Maps tile server, based on Kartotherian (https://github.com/kartotherian/kartotherian)

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects
PLpgSQL
1095 projects
shell
77523 projects
Smarty
1635 projects

Projects that are alternatives of or similar to kartotherian docker

erdapfel
Qwant Maps front-end
Stars: ✭ 84 (+250%)
Mutual labels:  maps, qwant-maps
google maps
🗺 An unofficial Google Maps Platform client library for the Rust programming language.
Stars: ✭ 40 (+66.67%)
Mutual labels:  maps
flatmap.io
🚀 The place where people meet technologies
Stars: ✭ 29 (+20.83%)
Mutual labels:  maps
osm-extracts
Each day, OSM Extracts by Interline mirrors the entire OpenStreetMap planet and creates city and region sized extracts
Stars: ✭ 34 (+41.67%)
Mutual labels:  maps
react-azure-maps
React Wrapper for azure-maps-control
Stars: ✭ 32 (+33.33%)
Mutual labels:  maps
Speculative-Sea-Level-Explorer
Reshaping the coastline by climate change and any other speculative sea level
Stars: ✭ 18 (-25%)
Mutual labels:  maps
osmscout-sailfish
OSM Scout for Sailfish OS (offline maps and navigation)
Stars: ✭ 42 (+75%)
Mutual labels:  maps
here-map-widget-for-jupyter
Use HERE Maps API for JavaScript in your Jupyter Notebook.
Stars: ✭ 29 (+20.83%)
Mutual labels:  maps
rlayers
React Component Library for OpenLayers
Stars: ✭ 98 (+308.33%)
Mutual labels:  maps
census-map-consolidator
Combine Census blocks into new shapes
Stars: ✭ 31 (+29.17%)
Mutual labels:  maps
Maps
TGM Maps used on the Warzone server (2017 - 2022).
Stars: ✭ 22 (-8.33%)
Mutual labels:  maps
Web-Map-Custom-Element
A custom <mapml-viewer> and <layer-> element suite
Stars: ✭ 49 (+104.17%)
Mutual labels:  maps
openstreetmap-carto-vector-tiles
A general-purpose OpenStreetMap mapnik style, in CartoCSS, served with vector tiles
Stars: ✭ 46 (+91.67%)
Mutual labels:  maps
hslayers-ng
User interface and map building extensions for OpenLayers
Stars: ✭ 29 (+20.83%)
Mutual labels:  maps
OoT-Interactive-Map
Interactive Map for the world of Zelda: Ocarina of Time
Stars: ✭ 22 (-8.33%)
Mutual labels:  maps
svelte-mapbox
MapBox Map and Autocomplete components for Svelte (or Vanilla JS)
Stars: ✭ 267 (+1012.5%)
Mutual labels:  maps
planetiler
Flexible tool to build planet-scale vector tilesets from OpenStreetMap data fast
Stars: ✭ 823 (+3329.17%)
Mutual labels:  maps
rc-here-maps
React components implemented on top of Here Maps API
Stars: ✭ 16 (-33.33%)
Mutual labels:  maps
deck.gl-time-series-widget
A React Time Slider implementation for DECK.GL - (non)temporal data - by CPU filtering ⌛
Stars: ✭ 19 (-20.83%)
Mutual labels:  maps
mapsforge flutter
Offline maps as pure flutter code
Stars: ✭ 30 (+25%)
Mutual labels:  maps

kartotherian_docker

docker images for the kartotherian project

They use a mixed architecture of Kartotherian and openmaptiles You need a docker version > 18.06

"Quick" Start for local testing

Use these commmands to download, import data and create tiles jobs for Luxembourg:

(Optional) First, delete all related containers and volumes (from an older import):

If sudo required, use "-E"!!

./exec.py clean

Download, import and start the tiles generation (of Luxembourg by default):

./exec.py load-db # it runs the build command as a dependency on 'load-db'

Once all tiles are generated, the map is visible on http://localhost:8585! (If not, take a look at docker ps and see what the port of the image qwantresearch/erdapfel is.)

If you want to see the list of all available commands, use -h or --help option on exec.py.

Workflow

If you want to update the generation process, you need to edit Qwant/openmaptiles then update the openmaptiles submodule.

running

To launch kartotherian just do:

./exec.py kartotherian

(you might need sudo permissions depending on your setup)

Import in Postgres

to download a pbf and load data in postgres and generate tiles you need:

./exec.py load-db

Note that you can specify the PBF you want to give by using the --osm-file option.

The different way to configure the import can be seen in this readme.

Note: the first import might be quite long are some additional data will be downloaded (cf load_db)

If you want to use already downloaded data (especially usefull for a quicker dev cycle), you can use a mounted docker volume.

The file local-compose.yml gives an example of how to bind a named docker volume (the file uses a ./data directory but you can change it if you want).

To use a locally mounted volume add the local-compose.yml with the -f docker-compose option.

For an easier dev experience, you can use the docker-compose additional file local-compose.yml that forward ports, use a locally ./data mounted volume (to avoid some unnecessary download) and run a front end to view the tiles.

For example with this setup you can also provide an already downloaded pbf (it needs to be in the ./data volume) with --osm-file:

./exec.py --osm-file /data/input/luxembourg-latest.osm.pbf load-db

Note: even if the local directoy in ./data the osm file path is "/data/input/" because it's the directory path inside the container.

You can also specify a download url:

./exec.py --osm-file https://download.geofabrik.de/europe/luxembourg-latest.osm.pbf load-db

Tiles generation

The tiles generation is also handle by the load_db container.

To only generate 1 tile, you can set --tiles-coords [[x, y, z]]. x, y, and z are based on the Slippy Map Tile name system and you can use Geofabrik's tool to generate these for a specific location.

The different ways to configure the tiles generation can be seen in the default configuration file.

If you have forwarded the port, you can check the tile generation at http://localhost:16534/jobs and check a vector tile based map on http://localhost:8585

Updating tiles

During the initial creation of the PG database, state and configuration files is initialized in the update_tiles_data volume from the .pbf metadata. To launch the tiles update, run the update-tiles task (defined in load_db tasks):

./exec.py update-tiles

During this task:

  • osmosis will fetch latest changes from openstreetmap.org
  • imposm will apply these changes in the pg databse, and write a file with expired tiles
  • tilerator jobs will be created to generate new tiles

archi

The tile server architecture can be seen at QwantMaps

sub-folders

Normally you shouldn't need to change anything in the subfolders: everything is handled inside the docker files through exec.py. However, if you're interested in what these sub-folders are used for, go take a look to their README.md file.

configuration files

The SQL and imposm mapping generation is quite straigthforward (cf. generate-sql and generate-imposm3 in the documentation).

The data_tm2source_*.xml generation is a bit more complex. We use generate-tm2source to generate a Carto project .yml file. This file is transformed to a Mapnik .xml project using kosmtik.

See more details on https://github.com/Qwant/openmaptiles

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].