背景
我正在尝试为世界制作一个缩小尺寸的矢量 mbtiles 文件,用于我正在为 Windows 桌面开发的紧凑型离线地图解决方案。为此,我发现 OsmAnd 的缩小尺寸World_basemap_2.obf正是我所需要的,但采用 mbtiles OSM 格式,因此我可以生成 mbtiles。obf是使用从形状文件生成的以下 OSM 文件创建的。它们可在http://builder.osmand.net/basemap/获得
我遇到的问题是,为了制作 mbtiles,它们需要合并到一个 OSM 文件中。osm2vectortiles
' 生成 mbtiles 的指南在这里http://osm2vectortiles.org/docs/own-vector-tiles/。
首先我提取它们来处理 osm 文件。
问题
当我使用and标志osmconvert
来组合文件时,很多关系和方式都被删除了,并且文件大小非常不同。--complete-ways
--complex-ways
例如:
osmconvert proc_line_tertiary_out.osm --complete-ways --complex-ways -o=tertiary.o5m
结果文件大小为 133,691 kb
osmconvert tertiary.o5m --complete-ways --complex-ways -o=tertiary.csv
生成一个包含13131405个节点、方式和关系的 CSV
osmconvert tertiary.o5m proc_line_ferry_out.osm.o5m --complete-ways --complex-nodes -o=combined.o5m
将tertiary.o5m与proc_line_ferr_out.osm.o5m合并(生成与上图相同)并转换为 CSV
生成一个包含1195239个节点、方式和关系的 CSV ......这要少得多,而且非常令人担忧。合并两个文件不应产生比原始文件更少的节点、路径和关系。
问题
我究竟做错了什么?
有没有另一种方法来组合 osm 文件?(我读过
osmosis
不能处理负节点。)是否有另一种方法来生成 mbtiles,可能来自多个 osm 文件?
试图合并的文件
- 点数.osm.bz2
- polygon_aeroway_military_tourism.osm.bz2
- 多边形湖水.osm.bz2
- 多边形自然土地使用.osm.bz2
- proc_line_admin_level_out.osm.bz2
- proc_line_ferry_out.osm.bz2
- proc_line_motorway_out.osm.bz2
- proc_line_primary_out.osm.bz2
- proc_line_railway_out.osm.bz2
- proc_line_secondary_out.osm.bz2
- proc_line_tertiary_out.osm.bz2
- proc_line_trunk_out.osm.bz2
- 城市.osm.bz2
- 海岸线.osm.bz2
OSMConvert
osmconvert
解释说
合并两个或多个地理区域
在某些条件下,可以合并 OSM 数据文件。如果它们持有相同的对象(节点、方式、关系),则
id
它们必须具有相同的内容。例如:如果一条路跨越两个区域文件之间的地理边界,则路数据集必须包含每个节点引用,即使是对不在相关文件边界内的节点的引用。即,这样的区域一定没有被使用选项剪切掉--drop-brokenrefs
。
这是否意味着我不能做我想做的事?我想保留所有节点、方式和关系,即使文件没有共同点。
试图
osmconvert polygon_aeroway_military_tourism.osm polygon_natural_landuse.osm -o=result.osm
结果
<?xml version='1.0' encoding='UTF-8'?>
<osm version="0.6" generator="osmconvert 0.7T">
<node id="-10000000000001" lat="-1.0015443" lon="-80.5349586"/>
<way id="-100000001" version="1">
<nd ref="-10000000000001"/>
<nd ref="-10000000000002"/>
<nd ref="-10000000000003"/>
<nd ref="-10000000000004"/>
<nd ref="-10000000000005"/>
<nd ref="-10000000000006"/>
<nd ref="-10000000000007"/>
<nd ref="-10000000000008"/>
<nd ref="-10000000000009"/>
<nd ref="-10000000000010"/>
<nd ref="-10000000000011"/>
<nd ref="-10000000000012"/>
<nd ref="-10000000000013"/>
<nd ref="-10000000000014"/>
<nd ref="-10000000000015"/>
<nd ref="-10000000000016"/>
<nd ref="-10000000000017"/>
<nd ref="-10000000000018"/>
<nd ref="-10000000000019"/>
<nd ref="-10000000000020"/>
<nd ref="-10000000000021"/>
<nd ref="-10000000000022"/>
<nd ref="-10000000000023"/>
<nd ref="-10000000000024"/>
<nd ref="-10000000000025"/>
<nd ref="-10000000000026"/>
<nd ref="-10000000000027"/>
<nd ref="-10000000000028"/>
<nd ref="-10000000000029"/>
<nd ref="-10000000000030"/>
<nd ref="-10000000000031"/>
<nd ref="-10000000000032"/>
<nd ref="-10000000000033"/>
<nd ref="-10000000000034"/>
<nd ref="-10000000000035"/>
<nd ref="-10000000000036"/>
<nd ref="-10000000000037"/>
<nd ref="-10000000000038"/>
<nd ref="-10000000000039"/>
<nd ref="-10000000000040"/>
<nd ref="-10000000000041"/>
<nd ref="-10000000000042"/>
<nd ref="-10000000000043"/>
<nd ref="-10000000000044"/>
<nd ref="-10000000000045"/>
<nd ref="-10000000000046"/>
<nd ref="-10000000000047"/>
<nd ref="-10000000000048"/>
<nd ref="-10000000000049"/>
<nd ref="-10000000000050"/>
<nd ref="-10000000000051"/>
<nd ref="-10000000000001"/>
</way>
</osm>