利用Python分析TOD轨道交通站点建成环境
放假在家文献看不进去怎么办,写公众号!
在写完上一篇分析出行圈的文章之后没想到成了爆款,尤其是建院的老师同学们(其实也没有几个
osmnx可以说是我目前用过的最舒服的python拓展包了,是由南加大规划系的Geoff Boeing大神写的,功能众多并且十分好上手(大神为了照顾我们这些菜鸡,把代码的逻辑写的更偏向新手,功能也十分符合规划学者的需求)。其中最基本也最好用的功能是仅仅凭借一行代码,就可以下载到一个指定地区的osm路网,并且可以统计路网的基本信息。基于以上的功能,今天我们来分析一下成都市轨道交通站点周边的建成环境,首先以宽窄巷子站为例,为大家演示一下。
首先调包:
import osmnx as ox
这个osmnx的包很难装,大家可以多尝试一下,推荐conda的方法。其余需要调的包请看前几篇公众号。
然后创建地铁宽窄巷子站的geodataframe,站点的经纬度坐标可以在osm上找到。
kuanzhai = gpd.GeoDataFrame([Point(104.04820,30.66783)])
kuanzhai.columns = ['geometry']
然后利用osmnx获取地铁站周边1000米内的路网信息(机动车路网):
G = ox.graph_from_point(center_point=(30.66783,104.04820),distance=1000,network_type='drive')
G_gdf = ox.graph_to_gdfs(G) ## 投影一下
然后画出来看看:
base = G_gdf[1].plot(figsize=(10,10),edgecolor='grey')
G_gdf[0].plot(ax=base,color='blue')
kuanzhai.plot(marker='*',ax=base,color='red',markersize=200)
还不错,五角星是宽窄巷子地铁站,周边的路网都显示了出来(以地铁站为中心,2km为变长的正方形)。
统计一下这个正方形区域内的路网密度和交叉口密度:
status = ox.stats.basic_stats(G,area=4000000)
print('路网密度为'+str(status['street_density_km']/1000)+'KM/KM*2')
print('交叉口密度为'+str(status['intersection_density_km'])+'个/KM*2')
结果如下:
可以看到,路网密度为12.575千米每平方千米,还是挺高的,交叉口密度为53.25个每平方千米(这里的交叉口包括了dead_end,osmnx里也可以把dead_end去掉,这里不展开讨论)
基于以上方法,我把成都市所有轨道交通站点周边的路网密度和交叉口密度都统计了一下,具体结果如下:
可以看出,城南桐梓林火车南站和市中心天府广场一带的地铁站周边路网密度比较高,都突破了11,大体上呈圈层式分布,总体上市中心建成区的路网密度高。
交叉口的情况也差不多一样。
然后利用本公众号中的第一篇文章介绍的kmeans聚类方法,输入交叉口密度和路网密度作为特征,对站点进行聚类分析,结果如下。
结果如上,根据手肘法最佳分类为3类,至于怎么解释就仁者见仁智者见智了。我觉得这一套(osmnx还可以下载建筑轮廓数据)加上上一篇文章的出行圈分析,如果来个大手子好好吹一吹,发个建院学子的灌水乐园《城市建筑》应该是没啥问题
至此本篇文章就都结束啦,大家如果想要宽窄巷子分析的那段源代码(注意是宽窄巷子那段的),请后台私信我,有偿提供。
我往期的文章大家也可以挖掘一下,感谢大家的支持,我也开通了打赏,欢迎各位老板有钱的捧个钱场,多多转发点赞也是对我最大的支持,谢谢大家!
往期文章:
利用python实现地理加权回归(GWR)与网约车订单数据挖掘