【发布时间】:2020-08-17 12:33:43
【问题描述】:
为什么这两种方法会产生不同数量的方式?
根据方式定义:
定义了一种方式:
路是一个有序的节点列表,通常也至少有一个 标记或包含在关系中。一种方式可以有 2 到 2,000 个节点,尽管零或 单节点存在。一条路可以是开放的,也可以是封闭的。封闭的方式是一种 其途中的最后一个节点也是该途中的第一个节点。封闭的方式 可以被解释为封闭的折线,或区域,或两者兼而有之。
节点定义为:
节点可用于定义独立的点特征,但更常用于定义路径的形状或“路径”。
<node id="25496583" lat="51.5173639" lon="-0.140043" version="1" changeset="203496" user="80n" uid="1238" visible="true" timestamp="2007-01-28T11:40:26Z">
<tag k="highway" v="traffic_signals"/>
因此,如果我首先基于 key == 高速公路从 osm 对象中子集所有路径,然后使用函数 find_down 查找连接到路径的所有节点:
find_down 查找层次结构向下的所有元素:
节点->节点方式->方式+节点关系->关系+方式+节点
highway_subset_v1 和 highway_subset_v2 至少应该产生相同数量的路数。
但结果却不同。
library("osmar")
src <- osmsource_api(url = "https://api.openstreetmap.org/api/0.6/")
muc_bbox <- center_bbox(11.575278, 48.137222, 1000, 1000)
muc <- get_osm(muc_bbox, src)
highway_subset_v1 <- subset(muc, way_ids = find(muc, way(tags(k == "highway"))))
highway_subset_v1 <- find(highway_subset_v1, way(tags(k == "name")))
highway_subset_v1 <- find_down(muc, way(highway_subset_v1))
highway_subset_v1 <- subset(muc, ids = highway_subset_v1)
highway_subset_v1 奥斯马尔对象 2678 个节点,504 种方式,0 个关系
在这种方法中,我选择具有 k==higway 的所有节点,并查找连接到这些节点的所有路径。
highway_ids_v2 <- find(muc, node(tags(k == "highway")))
highway_subset_ids_v2 <- osmar::find_up(muc, osmar::node(highway_ids_v2))
highway_subset_v2 <- subset(muc, ids = highway_subset_ids_v2)
highway_subset_v2 奥斯马尔对象 136 个节点,113 种方式,23 种关系
find_up 查找层次结构向上的所有元素:
节点->节点+方式+关系方式->方式+关系 关系 -> 关系
我错过了什么吗?
非常感谢您,
最好的问候, 安德烈亚斯
【问题讨论】:
-
我在使用
get_osm时收到错误error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version,可能是因为迁移到 R 4.0。 osmar 的最新更新是 2015 年 2 月,可能不再是最新的了。 -
hmm..奇怪,我也使用 R 4.0,它对我的工作方式与我在问题中提到的完全一样。
-
您的系统上的 ssl 似乎存在一些问题。 get_osm 对 ssl 没有做任何可能出错的特殊操作.. 我认为
标签: r dplyr openstreetmap tidyr osrm