Reputation: 181
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
Upvotes: 5
Views: 18598
Reputation: 146
In 2024 I would go with planetiler.
In terms of usage planetiler and tilemaker are quite similar. Yet planetiler approach appears to be is more effective.
From the planetiler readme:
Tilemaker uses a similar approach to Planetiler (no intermediate database), is more mature, and has a convenient lua API for building custom profiles without recompiling the tool, but takes about a day to generate a map of the world
Use your osm.pbf
java -Xmx8g -jar planetiler.jar --download --osm-path=fed-district-latest.osm.pbf
Or make planetiler download it from Geofabrik with --area
java -Xmx1g -jar planetiler.jar --download --area=monaco
--download
downloads data required by the OpenMapTiles profile including ~750MB for ocean polygons and ~240MB for Natural Earth Data.
Planetiler as well as tilemaker produces tiles in OpenMapTiles scheme so you can use these styles out-of-the-box.
Upvotes: 0
Reputation: 1
Further to Michael's post, I found that a leading slash didn't work on Windows for the volume creation, which led to not finding the PBF file. I also found the default config absolutely did not load automatically, but if I specified then it ran fine. I saved the PBF at C:\osm\united-kingdom.pbf and My CLI command (after building the image) was:
docker run -v C:\\osm:/srv -i -t --rm tilemaker --input /srv/united-kingdom.pbf --output /srv/uk.mbtiles --config resources/config-openmaptiles.json --process resources/process-openmaptiles.lua --store /srv
Upvotes: 0
Reputation: 71
I didn't face with the "terminate called ..." error, but i faced with the same error you've described regarding "cannot open the file", so here is my
First of all, use another image: stadtnavi/tilemaker
. Image tilemaker
seems to be broken inside, it shows either
Couldn't open .pbf file /srv/germany.osm.pbf
or
Invalid JSON file.
But the source file is ok and successfully converted by stadtnavi/tilemaker.
Create the following docker-compose.yaml
services:
tilemaker:
image: stadtnavi/tilemaker:latest
volumes:
- ./srv:/srv
entrypoint: [ "bash", "-c", "/tilemaker /srv/germany.osm.pbf --output=/srv/germany.mbtiles"]
Put it near the file to be converted. In my example it is a parent directory of /srv, all the osm.pbf are in the /srv.
Execute docker-compose up
And that's it. The output .mbtiles file will be created near the input osm.pbf in some time.
Upvotes: 0
Reputation: 306
.pbf
to .mbtiles
brew install osmium-tool
brew install tippecanoe
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
Using tilemaker
is a better option
git clone https://github.com/systemed/tilemaker.git
cd tilemaker
docker build -t tilemaker .
docker run --rm -it -v $(pwd):/srv tilemaker --input=/srv/xxx.osm.pbf --output=/srv/xxx.mbtiles
Upvotes: 11
Reputation: 41
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
Upvotes: 0
Reputation: 81
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.
Upvotes: 3
Reputation: 833
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.
Upvotes: 2