【问题标题】:osmnx TypeError in graph_from_polygon after upgrading from 0.5.1 to 0.8.2从 0.5.1 升级到 0.8.2 后 graph_from_polygon 中的 osmnx TypeError
【发布时间】:2018-12-08 22:29:23
【问题描述】:

去年完成我在 osmnx 的论文工作后,我退回到 Python PTSD 一段时间。但随着 2017 年 ACS 5 年估计的发布,我有一些新的数据分析要做。所以我将我的 osmnx 更新到 0.8.2,进行了 conda update --all -c conda-forge,并启动了我的旧笔记本。

它大部分都有效,但我在使用 graph_from_polygon 函数时遇到了错误。

TypeError                                 Traceback (most recent call last)
<ipython-input-60-96e1e789c1a5> in <module>()
---> 58     network, network_stats, tract_polygon = load_network(optimal_tracts, utm_crs)
     59 

<ipython-input-56-3036c449a01f> in load_network(opt_tracts, my_crs)
     34 
---> 35     net = ox.core.graph_from_polygon(projected_circle,network_type='bike')
     36 

/Users/tom/anaconda/lib/python2.7/site-packages/osmnx/core.pyc in 
graph_from_polygon(polygon, network_type, simplify, retain_all, 
truncate_by_edge, name, timeout, memory, max_query_area_size, 
clean_periphery, infrastructure, custom_filter)
   1741    max_query_area_size=max_query_area_size,
   1742    infrastructure=infrastructure, custom_filter=custom_filter)
-> 1743         G_buffered = create_graph(response_jsons, name=name, 
retain_all=True, network_type=network_type)
   1744         G_buffered = truncate_graph_polygon(G_buffered, 
polygon_buffered, retain_all=True, truncate_by_edge=truncate_by_edge)
   1745 

/Users/tom/anaconda/lib/python2.7/site-packages/osmnx/core.pyc in 
create_graph(response_jsons, name, retain_all, network_type)
   1358     # add length (great circle distance between nodes) attribute to each edge to
   1359     # use as weight
-> 1360     if len(G.edges) > 0:
   1361         G = add_edge_lengths(G)
   1362 

TypeError: object of type 'instancemethod' has no len()

到目前为止,这些包仍然很好地结合在一起。 projected_circle 似乎已正确创建为 UTM 经纬度多边形(epsg:32617,测试城市夏洛特,北卡罗来纳州)。这是相关的代码。 (opt_tracts 是一组人口普查区的 GeoDataFrame)。

def load_network(opt_tracts,my_crs):    

 tract_poly=opt_tracts.unary_union

 projected_circle,projection = ox.projection.project_geometry(tract_poly,crs={'init': my_crs}, to_latlong=True)

 net = ox.core.graph_from_polygon(projected_circle,network_type='bike')

 net_stats = ox.stats.basic_stats(net,area=8047)

 return (net, net_stats, tract_poly)

这是控制台输出:

Got all network data within polygon from API in 1 request(s) and 0.61 seconds
Creating networkx graph from downloaded OSM data...
Created graph with 11,371 nodes and 22,550 edges in 1.10 seconds

【问题讨论】:

    标签: python osmnx


    【解决方案1】:

    你安装的是什么版本的networkx?

    我建议创建一个新的虚拟环境,将 OSMnx 安装到其中,然后从那里运行您的 jupyter notebook,例如:

    conda create -c conda-forge -n OX python=3 osmnx notebook
    

    另请参阅:https://osmnx.readthedocs.io/en/stable/#installation

    【讨论】:

    • 我在:networkx 2.2 py_1 conda-forge 我真的希望不必开始清理,因为我的代码需要在那个环境中有很多其他包。但我会试一试。如果这很重要,我也在使用 python 2.7。
    猜你喜欢
    • 2020-09-29
    • 2020-05-25
    • 1970-01-01
    • 2017-10-18
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多