如何从osm中提取区域?

问题描述 投票:0回答:1

使用渗透,我想从 xml osm 地图中提取所有自然区域

osmosis --read-xml map.osm --way-key-value keyValueList="natural" --write-xml out.osm

当读取输出地图out.osm(使用R和readOGR)时,该地图仅包含点,而我期望多个多边形。

自然<- readOGR('out.osm')

我做错了什么吗?

r openstreetmap osmosis
1个回答
1
投票

尝试使用

--tag-filter
代替:

export INFILE=map.osm

osmosis \
   --read-xml $INFILE \
   --tag-filter accept-relations natural=* \
   --used-way \
   --used-node \
   \
   --read-xml $INFILE \
   --tag-filter reject-relations \
   --tag-filter accept-ways natural=* \
   --used-node \
   \
   --read-xml $INFILE \
   --tag-filter reject-relations \
   --tag-filter accept-nodes natural=* \
   --tag-filter reject-ways \
   \
   --merge \
   --merge \
   --write-xml out.osm

这为您提供了关系、方式和节点(三个独立的流被合并)

如果您只对自然区域感兴趣,那么您不需要单个节点(例如单个自然=树节点),因此您可以这样做:

export INFILE=map.osm

osmosis \
   --read-xml $INFILE \
   --tag-filter accept-relations natural=* \
   --used-way \
   --used-node \
   \
   --read-xml $INFILE \
   --tag-filter reject-relations \
   --tag-filter accept-ways natural=* \
   --used-node \
   \
   --merge \
   --write-xml out.osm

不太确定您第一次尝试时看到的节点,但是--way-key-value的文档说它已被弃用,并且“请注意,此过滤器仅在方式上运行”

© www.soinside.com 2019 - 2024. All rights reserved.