Ошибка типа osmnx в графе graph_from_polygon после обновления с 0.5.1 до 0.8.2
После окончания моей дипломной работы с osmnx в прошлом году я на некоторое время вернулся в Python PTSD. Но с выпуском 5-летних оценок ACS 2017 у меня есть некоторый новый анализ данных, чтобы сделать. Поэтому я обновил свой osmnx до 0.8.2, произвел обновление conda --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
1 ответ
Какую версию networkx вы установили?
Я бы предложил создать новую виртуальную среду, установить в нее OSMnx, а затем запустить ваш ноутбук jupyter, например:
conda create -c conda-forge -n OX python=3 osmnx notebook
Смотрите также: https://osmnx.readthedocs.io/en/stable/