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



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

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

目前我找到了一个可行的解决方案,但这个脚本需要很长时间来处理,因为它有效地读取世界地图文件 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 binosmosis.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

不应该用锤子做螺丝。我切换到渗透过滤器,它现在工作得更快。

完整流程:

将 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

转换为地图锻造:

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

请注意,映射文件编写器仍然需要几天或几周的时间。考虑使用边界框并创建多个地图文件,这比一次处理整个世界要快得多。

最新更新