渗透 - 使用相同的标签获取所有节点/方式/关系

时间:2016-03-17 08:17:44

标签: osmosis

我希望获得包含某些标记的所有节点,方式和关系,并且输出文件还必须包含依赖的方式和节点。

因此,例如,我想搜索与设施的所有关系,不仅获得关系本身,还获得依赖的方式和节点。对于具有相同标签及其相关节点以及最终所有节点的所有方式也是如此。

目前我找到了一个有效的解决方案,但是这个脚本需要很长时间才能处理,因为它有效地读取了世界地图文件3次,然后合并了数据。 我希望有人能指出一个更“直截了当”的解决方案来提高速度

顺便说一句。我已经将java选项设置为“-Xmx14G -server”,但根据任务管理器(Windows - 对不起的人;-),脚本只使用8G内存(机器有32G RAM)

所以这是脚本:

set readfile=--read-pbf-fast file=planet-latest.osm.pbf workers=4
set logprogress=--log-progress interval=10

set acceptlorestags=^
place=country,state,region,province,district,county,municipality,island,islet ^
natural=sea,water,wetland,beach,coastline,marsh ^
admin_level=1,2,3,4 ^
water=* ^
wetland=*

call bin\osmosis.bat ^
%readfile% ^
--tf accept-relations ^
%acceptlorestags% ^
--used-way ^
--used-node ^
%logprogress% label="lores_rel" ^
 ^
%readfile% ^
--tf reject-relations ^
--tf accept-ways ^
%acceptlorestags% ^
--used-node ^
%logprogress% label="lores_way" ^
 ^
%readfile% ^
--tf reject-relations ^
--tf reject-ways ^
--tf accept-nodes ^
%acceptlorestags% ^
%logprogress% label="lores_node" ^
 ^
--merge ^
--merge ^
%logprogress% label="map_lores" ^
--mapfile-writer file=map_lores.map type=ram

1 个答案:

答案 0 :(得分:0)

不应该使用锤子作为螺丝钉。我切换到osmfilter,它现在工作得更快。

完整过程:

将pbf转换为o5m(约30分钟):

osmconvert.exe planet-latest.osm.pbf -o=planet-latest.o5m

创建一个过滤的xml文件(约30分钟):

set source=planet-latest.o5m
set drop2= --drop-tags="source= fixme= created_by="
osmfilter.exe %source% --keep="natural=sea =coastline admin_level=1 =2 =3 =4 place=ocean =sea" %drop2% > map_lowres.osm

转换为mapsforge:

set osmosis=tag-conf-file=tagmapping.xml zoom-interval-conf=8,5,11,15,12,20
call bin\osmosis.bat --read-xml file=map_lowres.osm --mapfile-writer file=map_lowres.map %osmosis%

注意mapfile-writer仍然需要数天或数周。考虑使用边界框并创建多个地图文件,这比一次处理整个世界要快得多。