Is there a way to generate a .mbtiles file from .osm.pbf file

13k views Asked by At

I have an .osm.pbf file which I want to use to generate vector tiles with (.mbtiles).

Im currently on a windows machine utilising docker, I have tried to use the tool tilemaker (https://github.com/systemed/tilemaker) though I cannot get it to work on my files and get issues like so

" terminate called after throwing an instance of 'std::runtime_error' what(): Exception during zlib decompression: (-5) "

I was just wondering if anyone else was able to generate these tiles from said file type, if so could you provide a low level detailed guide on how you did so, as I am new to vector tiles and am getting confused within some circumstances.

For anyone interested I use this code to run the docker:

docker run tilemaker tilemaker --input=sud-latest.osm.pbf --output=sud.mbtiles

I have to put tilemaker twice as otherwise it says it cannot open the .osm.pbf otherwise

4

There are 4 answers

4
matthieun On BEST ANSWER

You can use ogr2ogr (see other answer here) to translate osm.pbf into geojson, and then Mapbox's tippecanoe tool to convert the geojson to mbtiles.

0
mingganglee On

Extract .pbf to .mbtiles

Install

brew install osmium-tool
brew install tippecanoe

Extract

extract .pbf to .geojson

osmium export xxx.pbf -o xxx.geojson

extract .geojson to .mbtiles

tippecanoe -zg -o xxx.mbtiles --drop-densest-as-needed xxx.geojson

2023-08-17 Edit

Using tilemaker is a better option

Install

git clone https://github.com/systemed/tilemaker.git
cd tilemaker
docker build -t tilemaker .

Extract

docker run --rm -it -v $(pwd):/srv tilemaker --input=/srv/xxx.osm.pbf --output=/srv/xxx.mbtiles
0
kathiravan .v On

possible solutions :

1.Might be RAM issue try to run small size osm.pbf file with tilemaker

2.Run tilemaker.exe from executable file (by making build from github tilemaker clone) ---> it may solve most of issues

0
Wouter van Kleunen On

I made a tutorial on how to generate tiles using maptiler: https://blog.kleunen.nl/blog/tilemaker-generate-map

It is focused on linux, but you can run it on windows as well. You can find a pre-built version of maptiler on the CI: https://github.com/systemed/tilemaker/pull/208/checks?check_run_id=2143761163

Probably soon they will also become available on the github page. Once you have the prebuilt executable and the resources (config and process lua), you can simply do:

tilemaker.exe --input=sud-latest.osm.pbf --output=sud.mbtiles --process resources/process-openmaptiles.lua --config resources/config-openmaptiles.json

The output works best from zoom level 8 - 14, borders are still missing, so lower zoom levels look pretty empty.