geopandas笔记:汇总连接两个区域的边

比如这样的两个区域,我们想知道从蓝到绿、从绿到蓝都有哪些边

1 读取openstreetmap

import osmnx as ox
import geopandas as gpd

G=ox.graph_from_place('Singapore',
                       simplify=True,
                      network_type='drive')

ox.plot_graph(G)

2 得到对应的边的信息

nodes,edges=ox.graph_to_gdfs(G)
#得到新加坡graph的点和边对应的信息

nodes

edges

 

3 新加坡subzone信息

https://beta.data.gov.sg/datasets/1749/view

import geopandas as gpd
sgsubzone=gpd.read_file('ura-mp19-subzone-no-sea-pl.geojson')
sgsubzone
#新加坡subzone 数据

4 找到穿插在两个区域间的边

subzeon1_ed=edges[edges.intersects(sgsubzone.loc[0].geometry)]
#和subzone 1 相交的边

subzeon2_ed=edges[edges.intersects(sgsubzone.loc[1].geometry)]
##和subzone 2 相交的边

len(subzeon1_ed),len(subzeon2_ed)
#(21, 46)


inner_subzone=subzeon1_ed.merge(subzeon2_ed, left_index=True, right_index=True, how='inner')
#和subzone 1 相交的边 和 和subzone 2相交的边 的交集

inner_subzone=inner_subzone.set_geometry('geometry_y')
#设置活跃geometry

inner_subzone

5 可视化

ax=gpd.GeoSeries(sgsubzone.loc[0].geometry).plot(figsize=(15,10))
subzeon1_ed.plot(ax=ax,color='yellow')
gpd.GeoSeries(sgsubzone.loc[1].geometry).plot(ax=ax,color='green',alpha=0.4)
subzeon2_ed.plot(ax=ax,color='red')
inner_subzone.plot(ax=ax,color='purple',lw=10)
#绘图,两个subzone, 各自的路段, 相交的路段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值