整个星球的离线 tileserver

offline tileserver for whole planet

我正在尝试使用 planet.osm.pbf 找到的文件 here 构建离线 tileserver,但我遇到了一些缩放问题。

我的第一次尝试是将其中一些数据渲染到 .mbtiles 文件中,并与 Tilemill 一起提供。这在达到一定缩放级别时效果很好,但随后预渲染图块的大小会爆炸。我猜测合适的解决方案是将图块预渲染到某个合理的缩放级别,然后使用一种机制来动态渲染剩余的缩放级别。或者,我知道有一些基于矢量的图块(也许?)总是在浏览器中高效地动态呈现(我认为 mapbox gl 这样做)。

有人知道设置这种规模的离线 tileserver 的最佳方法吗?我看到的很多其他答案都涉及如何为特定城市或州提供图块,但我并没有想出太多来展示整个星球。

谢谢!

编辑:

或者,如果除了 planet.osm.pbf 之外,还有其他可用的全球数据格式,我绝对乐于听到它——我不依赖于特定的数据源,我我只是想解决问题。

对于这种规模的任务,您将需要 Mapnik http://wiki.openstreetmap.org/wiki/Mapnik

  1. 安装 mapnik 和 renderd https://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/(据我所知,TileMill 使用 mapnik,所以请检查您是否已经拥有它)
  2. 将您的数据导入 PostGIS(对于整个星球可能需要几天时间和大约 300G 的硬盘 space)
  3. 将您的风格从 TleMill 转换为 mapnik
  4. 现在您拥有了自己的渲染服务器

还有一个 docker 容器,其中包含一些样式和 mapnik+postgis+osm2pgsql 在一个乐队中演奏。 https://registry.hub.docker.com/u/dkiselev/nik4web/可能对您有所帮助。