使用 OSMnx 的等时线

问题描述

我对地理空间数据很陌生。在我的工作中,我必须使用等时线计算多边形。我正在处理的数据非常大(120 万行)。要执行每一行,大约需要 1 秒,因此通过该计算,运行此代码将需要大约 13 天!。有什么办法可以减少时间吗?

def get_isochrone(lon,lat,count,walk_time=10,speed=4.5):   
    loc = (lat,lon)
    G = ox.graph_from_point(loc,simplify=True,network_type='walk')
    #Create nodes geodataframe from Graph network (G)
    gdf_nodes = ox.graph_to_gdfs(G,edges=False)
    x,y = gdf_nodes['geometry'].unary_union.centroid.xy
    # center_node = ox.distance.nearest_nodes(G,x[0],y[0])
    center_node = ox.get_nearest_node(G,(y[0],x[0]))
    meters_per_minute = speed * 1000 / 60
    for u,v,k,data in G.edges(data=True,keys=True):
        data['time'] = data['length'] / meters_per_minute
    subgraph = nx.ego_graph(G,center_node,radius=walk_time,distance='time')
    node_points = [Point(data['x'],data['y']) for node,data in subgraph.nodes(data=True)]
    polys = gpd.GeoSeries(node_points).unary_union.convex_hull
    if (count%5)==0:
        print(count)
    return polys

wsp_df['polygon'] = wsp_df.apply(lambda x: get_isochrone(x.lon,x.lat,x.counter ),axis=1)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)