tilemaker icon indicating copy to clipboard operation
tilemaker copied to clipboard

'std::runtime_error' on execution in docker container

Open autumnus opened this issue 8 years ago • 1 comments

Hello. Today I tried your tool. I downloaded a .osm.pbf file from Geofabrik, built the docker-container on OS X and started it with

docker run -v /Users/xyz/:/srv -i -t --rm tilemaker --input=/srv/kosovo-latest.osm.pbf --output=/srv/kosovo.mbtiles

But it always fails with the following output, also for other input files:

Layer waterway (z11-14) Layer transportation (z12-14) Layer building (z14-14) Layer poi (z13-14) Reading /srv/kosovo-latest.osm.pbf Block 199 group 0 ways 0 relations 625
Stored 1369240 nodes, 85756 ways, 8 relations Zoom level 14, writing tile 3300 of 3354
Filled the tileset with good things at /srv/kosovo.mbtiles terminate called after throwing an instance of 'std::runtime_error' what(): disk I/O error

I tried the following on an Ubuntu VM: docker run -v /Users/xyz/:/srv -i -t --rm tilemaker --input=/srv/liechtenstein-latest.osm.pbf --output=/srv/liechtenstein.mbtiles

The output is without the error. Layer waterway (z11-14) Layer transportation (z12-14) Layer building (z14-14) Layer poi (z13-14) Reading /srv/liechtenstein-latest.osm.pbf Block 42 group 0 ways 0 relations 560
Stored 262948 nodes, 21314 ways, 19 relations Zoom level 14, writing tile 600 of 622
Filled the tileset with good things at /srv/liechtenstein.mbtiles

After that I tried to use the output files with the Leaflet plugin Leaflet.TileLayer.MBTiles.js

<!DOCTYPE html>
<html>
<head>
 <link href="https://unpkg.com/[email protected]/dist/leaflet.css" rel="stylesheet" type="text/css" />
 <script src="https://unpkg.com/[email protected]/dist/leaflet-src.js"></script>
 <script src="https://unpkg.com/[email protected]/js/sql.js"></script>
 <script src="../javascripts/Leaflet.TileLayer.MBTiles.js"></script>

 <meta charset="utf-8">
 <title>Leaflet.TileLayer.MBTiles demo</title>
 <style>
     #map {
         width:1024px;
         height:768px;
     }
 </style>
</head>
<body>
<div id='map'></div>
<script>
 var map = new L.Map('map').fitWorld();
 map.setView(new L.LatLng(47.14445, 9.508), 14); //Vaduz
 var mb = L.tileLayer.mbTiles('../maps/liechtenstein.mbtiles', {
     minZoom: 12,
     maxZoom: 14
 }).addTo(map);
 mb.on('databaseloaded', function(ev) {
     console.info('MBTiles DB loaded', ev);
 });
 mb.on('databaseerror', function(ev) {
     console.info('MBTiles DB error', ev);
 });
</script>
</body>
</html>

In the Browser console I get MBTiles DB loaded {type: "databaseloaded", target: NewClass} So it looks ok. But I do not get a map image. Is it a bug? Are there some more requirements to fulfill? Is it the wrong leaflet plugin?

Best regards

autumnus avatar Dec 13 '17 15:12 autumnus

Did you get an answer or found a solution yet?

docjojo avatar May 02 '19 19:05 docjojo