2016-11-29 148 views
1

背景如何合并保留所有节点,方式,关系信息的osm文件?

我试图使世界缩小大小的矢量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文件。

问题

当我使用osmconvert使用--complete-方式和--complex-方式标志了很多关系和方式来组合这些文件被删除,文件大小是非常不同的。

对于离:

osmconvert proc_line_tertiary_out.osm --complete-方式--complex-方式-o = tertiary.o5m

- 结果在一个文件中的大小

osmconvert叔133691 KB .o5m --complete-方式--complex-方式-o = tertiary.csv

- 结果与总的节点,方式和关系

一个csv 210

osmconvert tertiary.o5m proc_line_ferry_out.osm.o5m --complete-方式--complex节点-o = combined.o5m

合并与proc_line_ferr_out.osm.o5m tertiary.o5m(产生与上述相同的示出)并转换到csv

- 结果在CSV与总节点,方式和关系......这是显著少,是非常令人担忧的。合并两个文件不应该使原始文件的节点,方式和关系更少。

问题

我在做什么错?

是否有结合OSM文件的另一种方式?(反渗透我读过不能消极应对的节点)

是否有产生mbtiles,可能来自多个OSM文件的另一种方式?

文件试图结合

points.osm.bz2

polygon_aeroway_military_tourism.osm.bz2

polygon_lake_water.osm。BZ2

polygon_natural_landuse.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

cities.osm.bz2

coastline.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> 

回答

2

选项- 完整路线- 复合路线用于应用边界时。如果你没有限OSM数据(选项-b或-B)最好不要使用--complete-方式也不--complex-方式除非您确信他们做什么与您的数据。至少我不是。

选择使用osmconvert合并OSM数据的方式是这样的:

osmconvert input1.o5m input2.o5m input3.o5m -o=output.o5m 

有一个在OSM维基约osmconvert一些进一步的信息:

https://wiki.openstreetmap.org/wiki/Osmconvert

+0

简单的错误,我不敢相信我忽略了它。非常感谢。 – longlostbro

+0

我应该知道其他限制吗?当我结合polygon_aeroway_military_tourism.osm - 17340节点/方法/关系和polygon_natural_landuse.osm - 8711704节点/方法/关系的综合结果变成 - 3节点/方法/关系 – longlostbro

+0

我增加了更多的信息,以我的问题。我对osmconvert的解释是它在合并时不能保留所有的节点和关系,只有那些共同的。 – longlostbro

1

这可能是更容易为你的使用情况已经合并以MBTiles格式从多个OSM2VectorTiles提取物中提取矢量图块(复制单独的PBF图块) - 并将所有这些合并到一个si ngle MBTiles文件。

您可以使用patch实用工具MBUtil包: https://github.com/mapbox/mbutil/blob/master/patch

或者从https://pypi.python.org/pypi/umimbutil

工具这两个工具的程序应该为不同领域的基本合并,其中个别瓷砖不需要结合在一起运行。

另类 - 你可以写一个基本的脚本,从地球上移除MBTiles你不需要的所有瓷砖。MBTiles只是SQLite文件,所以这应该可以通过基本的SQL命令来实现...

P.S. 如果某人需要合并光栅(!!!)MBTiles包括PNG或JPEG瓦片光栅瓦片的组合在一起,那么就需要一个不同的合并实用程序:https://www.maptiler.com/how-to/merge-mbtiles/上的命令行merge_mbtiles提供http://www.maptiler.com/demo/

填充形式后
+0

谢谢你,我不知道你可以合并mbtiles。现在唯一的问题是,当我尝试时,需要几周时间才能从osm文件生成一个mbtiles。至于从planet.mbtiles中删除数据,我曾尝试过,但有这么多的交易和抽真空如此庞大的数据集,估计需要很长时间。 – longlostbro

相关问题