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