【问题标题】:Open Street Map using OSMNX: how to retrieve the Hannover subway network?使用 OSMNX 打开街道地图:如何检索汉诺威地铁网络?
【发布时间】:2020-09-15 22:02:27
【问题描述】:
import osmnx as ox
ox.__version__ # '0.13.0'

我想使用出色的 OSMNX 模块在地图上显示German subway OSM data 中已知的subway in Hannover。但与New York example 不同的是,不会返回以下结果:

G = ox.graph_from_place('Hannover, Germany',
                        retain_all=False, truncate_by_edge=True, simplify=True,
                        network_type='none', custom_filter='["railway"~"subway"]')

# EmptyOverpassResponse: There are no data elements in the response JSON

我确实获得了使用“德国汉诺威”作为地区的其他类似查询的结果。我也没有得到巴黎或伦敦的地铁结果。而且我没有得到类似查询的结果,例如 custom_filter='["railway"~"tram"]' 或 '["railway"~"s-bahn"]' 或 '["network"~"metro"]'。

另外,如果我使用基础设施关键字参数来选择“铁路”,则会返回一个广泛的 gdf:

G = ox.graph_from_place('Hannover, Germany', retain_all=False, truncate_by_edge=True, simplify=True,
                        network_type='none', infrastructure='way["railway"]')
gdfox = ox.graph_to_gdfs(G, nodes=False, edges=True, node_geometry=True, fill_edge_geometry=True)
gdfox.shape # (4422, 14)

但是我无法使用返回的列来识别地铁?:

['u', 'v', 'key', 'osmid', 'service', 'oneway', 'length',
   'geometry', 'name', 'maxspeed', 'ref', 'bridge', 'tunnel',
   'access']

我还觉得奇怪的是,如果我(尝试)使用 custom_filter 检索所有铁路,则只返回 2 个 LINESTRINGS:

G = ox.graph_from_place('Hannover, Germany', retain_all=False, truncate_by_edge=True,
                        simplify=True, network_type=None, custom_filter='["railway"~""]')
gdfox = ox.graph_to_gdfs(G, nodes=False, edges=True, node_geometry=True, fill_edge_geometry=True)
gdfox.shape # (2, 10) # returns only 2 LINESTRINGS: Altenbekener Damm

【问题讨论】:

    标签: openstreetmap osmnx


    【解决方案1】:

    我正在删除infrastructure 参数以支持更一致的custom_filter 参数。将在几天内完成:https://github.com/gboeing/osmnx/pull/477(编辑:已完成并在 v0.14.0 中发布;下面的代码 sn-p 已相应编辑。)

    与此同时,我对汉诺威并不熟悉,但它的客运铁路系统似乎被标记为“电车”和“铁路”而不是“地铁”。像这样的东西似乎捕捉到了它:

    import osmnx as ox
    ox.config(use_cache=False,
              log_console=True,
              useful_tags_way=ox.settings.useful_tags_way + ['railway'])
    
    G = ox.graph_from_place('Hannover, Germany',
                            retain_all=False, truncate_by_edge=True, simplify=True,
                            custom_filter='["railway"~"tram|rail"]')
    len(G) #1776
    

    【讨论】:

    • 这个已经合并到OSMnx master分支中,即将发布。
    • 这行得通,我使用 cf='["railway"~"tram|rail"]' & custom_filter=cf (所以我删除了旧基础设施 kwarg 使用的“方式”)。仅供参考,数字匹配:cf='["railway"~"tram"]' # len(G) == 677 / cf='["railway"~"rail"]' # len(G) == 1099。非常感谢感谢您的出色工作,甚至抽出时间回答问题!
    • 您需要在您的custom_filter 中使用“railway”来检索带有该标签的方式。 useful_tags_path 文档可以改进。 OSMnx 使用useful_tags_path 列表中的属性作为图边属性。默认情况下,它们是特定于道路网络的。我将“railway”添加到列表中,以便铁路标签的值显示为图形边缘属性(例如,值将在边缘铁路属性中包括“电车”或“铁路”)。
    • 请注意,旧的有用标签路径设置已重命名为更合适的useful_tags_way,并提供了更清晰的文档字符串以使其更易于理解。见the docs
    • 正确:useful_tags_way 中的项目确定要保留哪些 OSM 方式标记作为 networkx 图边缘属性。
    猜你喜欢
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多