微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 OSMnx 的等时线

如何解决使用 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 举报,一经查实,本站将立刻删除。