CLI从osm文件生成地图图块(打开街道地图)?
问题描述:
我试图使用Maperitive从osm文件生成地图图像拼贴。但是这个过程既慢又难以自动化。CLI从osm文件生成地图图块(打开街道地图)?
我看一些工具可以做这样的事情:
mapgen planet.osm lv1-10 lat0 lon0 lat1 lon1 [some other rendering options]
其中
- planet.osm是开放街道地图格式的文件。
- lv1-10是缩放级别
- lat0 lon0 lat1 lon1是地理坐标。
并输出到一个文件夹包含数以千计的PNG瓦片文件。谢谢
答
我不知道任何这样的工具已经存在。您可以轻松地调整各种项目用于生成地图图块的多个脚本之一 - 其中大多数使用Mapnik。看看这个Mapnik demo - 这是有据可查的,应该相对容易适应。
请注意,您需要为渲染提供额外的参数(无论是在命令行还是在脚本本身中) - 最显着的一个样式文件告诉Mapnik如何渲染数据。
答
根据您的示例命令行,我猜你正在尝试使用整个星球数据(planet.osm)进行渲染。这在Maperitive中不可行,因为它需要在渲染之前将整个OSM文件加载到内存中(即使您只指定了一个小边界框)。
为大面积(整个国家,大陆或地球)渲染瓷砖的唯一方法是将OSM数据填充到PostGIS数据库中,然后使用Mapnik进行渲染。
或者,您可以先使用渗透等工具将planet.osm剪切成小文件,但这也需要很长时间。
另外要注意以下事情(quoting myself):
指定缩放级别时要小心。每个缩放级别需要大约 ,比前一个要多4倍,所以你可以很快地将 达到相当大数量的tile,这可能需要很长时间才能生成,并且需要大量的磁盘空间。
比方说,我们有一张地图,在缩放级别10大致覆盖整个 电脑屏幕(这将大约是伦敦地区和 其周围环境)。这意味着等级为10的缩放 约有15个瓦片。如果我们要为整个地图 生成瓦片直到缩放级别19,会发生什么情况?
- 缩放级别11:60瓦
- 缩放级别12:240瓦
- 缩放级别13:960>瓦片
- ...
- 缩放级别17:245760瓦片(CCA。80分钟的工作,cca。> 10 GB的磁盘空间)
- 放大等级18:983,040瓷砖(超过5小时的工作,cca。40 GB的磁盘空间)
- 放大等级19:3,932,160瓷砖(几乎一整天的工作,160卡的磁盘空间)