我想获取包含某些标签的所有节点,方式和关系,并且输出文件还必须包含相关的方式和节点。
因此,例如,我想搜索与便利设施有关的所有关系,不仅获得关系本身,还获得依赖的方式和节点。具有相同标签及其相关节点以及所有节点的所有方式均相同。
目前,我找到了一个可行的解决方案,但是此脚本需要花费很长时间才能处理,因为它可以有效地读取世界地图文件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
请勿使用锤子拧螺丝。我改用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编写器仍然需要几天或几周的时间。考虑使用边界框并创建多个地图文件,这比立即处理整个世界要快得多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句