2

我想获取包含某些标签的所有节点、方式和关系,并且输出文件还必须包含相关的方式和节点。

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

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

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

所以这是脚本:

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
4

1 回答 1

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 仍然需要几天或几周的时间。考虑使用边界框并创建多个地图文件,这比一次处理整个世界要快得多。

于 2016-03-23T17:23:02.320 回答