【问题标题】:osmnx returning .... unexpected... bearingsosmnx 返回....意外...轴承
【发布时间】:2021-05-16 15:21:54
【问题描述】:

我正在尝试查找给定城市中沿特定方位延伸的所有街道,我正在建立这些边缘的列表,如下所示:

G = ox.graph_from_place('Milpitas, CA')
G = ox.add_edge_bearings(ox.get_undirected(G))
sixtydegrees = []
uninteresting = []
for u, v, k, data in G.edges(keys=True, data=True):
    if np.isnan(data['bearing']):
        uninteresting.append((u, v, k))
    else:
         b = round(data['bearing'])
         if (b == 60 or b == 240):
             sixtydegrees.append((u, v, k))
         else:
             uninteresting.append((u, v, k))
G.remove_edges_from(G.edges - uninteresting)

但是,这会产生像下面这样的边缘,其中包括沿多个轴承的多个段。虽然起始节点和结束节点彼此相距 60º,但边由 4 段组成,其中没有一条沿 60º 延伸。这是一条穿过公园的假想线,连接起点和终点节点,沿 60º 延伸。

osmnx.bearing.add_edge_bearings 是(按设计)对源节点到目标节点之间角度的简单计算。

真正找到街道,这可能意味着如上所述的街道部分,考虑到 OSM 数据的组织方式,沿着给定的方位,我将不得不遍历 xy 对和计算每个轴承?还是我缺少另一个更优雅的解决方案?

【问题讨论】:

  • 如果您在创建图表时设置simplify=False,您将获得直线街道段。请参阅文档。
  • 谢谢,这有助于澄清很多。因此,如果使用简化=True,边是交叉路口(或死胡同)之间的高速公路,而在简化=False 时,边是构成高速公路的每条直线。使用更大的边集更清洁,可能更有效。

标签: osmnx


【解决方案1】:

这是我的工作,想知道是否有更好的方法。

for u, v, k, data in G.edges(keys=True, data=True):
    # iterate over edges
    if v==u:
        # loops don't have meaningful bearings
        uninteresting.append((u, v, k))
    else:
        lons, lats = data['geometry'].xy
        lat1 = None
        lon1 = None
        hit = False
        for lon, lat in zip(lons, lats):
            if lat1:
                b = round(ox.bearing.get_bearing((lat1, lon1),  (lat, lon)))
                d = round(ox.distance.great_circle_vec(lat1, lon1, lat, lon))
                if d > 250: #ignore segments shorter than 250m
                    hit = hit or (59 <= b <= 61)
            lat1 = lat
            lon1 = lon
        if hit:
            sixtydegrees.append((u, v, k))
        else:
            uninteresting.append((u, v, k))

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 2017-08-22
    • 2015-08-18
    • 1970-01-01
    • 2020-04-21
    • 2020-12-08
    • 2018-03-24
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多