1. Grid2demand简介
出行需求是交通规划的根基,其产生与土地性质密切相关。以校园为例,上课前的主要出行需求是从宿舍区至教学区,下课后则反之;而在承办大型赛事期间,校园场馆附近的交通量则会明显增加。
放到城市中,甚至是更大范围的区域中也是一样。一次出行总存在一个出发地 (Origin) 和一个目的地 (Destination)。在不同的出行目的下,居住、商业、工业等不同属性的用地有不同的交通产生率和吸引率。
Grid2demand利用osm2gmns生成的poi.csv,即可根据建筑物属性和出行率表(可自定义)得到指定出行目的下的出行需求,进而利用经典重力模型即可生成OD矩阵。把交通需求进一步做细到建筑物 (Point Of Interest)。
2. 安装
打开电脑Command Prompt或Anaconda Prompt,输入如下命令行,通过pip安装。
pip install grid2demand
3. 使用教程
(1)下载目标路网文件
在OpenStreetMap 中选择指定区域,将地图数据导出。
(2)利用osm2gmns获取路网信息和POI数据
启动Python编程环境,运行以下代码即可获取路网信息和POI数据。输出的node.csv和poi.csv将作为grid2demand的输入。
import osm2gmns as og
net = og.getNetFromOSMFile('map.osm',network_type=('railway','aeroway','auto'),POIs=True,default_lanes=True,default_speed=True)
og.connectPOIWithNet(net)
og.generateNodeActivityInfo(net)
og.outputNetToCSV(net)
『注意』
由于OpenStreetMap为开源地图,POI信息可能存在空缺或不准的情况,需要手动修订。
若poi.csv中name列为乱码,可能存在编码错误,请检查系统编码语言和读取csv的软件编码语言是否一致,或直接清空name列内容再运行grid2demand。
(3)调用grid2demand并读取输入文件
import grid2demand as gd
gd.ReadNetworkFiles()
(4)划分网格
与传统的交通小区不同,我们将研究区域划分为方格网。用户可自定义单元格数量或每个单元格的宽度和高度(米)。因须与地理坐标系匹配,在给定单元格尺寸的时候还需给定研究区域的纬度。在研究区域外围还设立有虚拟小区,用于描述进出研究区域的交通量。
gd.PartitionGrid(number_of_x_blocks=None,number_of_y_blocks=None,cell_width=1000,cell_height=1000,latitude=30)
(5)获取各建筑物类型的交通发生率和吸引率
不同出行目的下,同一建筑物的吸发率可能不同。用户可自定义出行率表poi_trip_rate.csv和出行目的。
gd.GetPoiTripRate(trip_purpose=1)
(6)计算各点的交通发生量和吸引量
对于POI点,根据不同建筑物的吸发率和建筑物的占地面积(也可手动修改poi.csv中的area属性为建筑面积、停车位、人数等测量单位)可计算各点的交通发生量和吸引量。对于进出研究范围的道路边界点(卡口),默认交通发生量和吸引为1000。
gd.GetNodeDemand()
(7)计算各交通小区间的可达性
默认根据小区质心间的直线距离计算,用户也可在accessibility.csv中自定义小区间的可达性为时间、费用等。
gd.ProduceAccessMatrix(latitude=30)
(8)用重力模型得到交通分布
用户可自定义出行目的及阻抗函数的系数,得到小区间的出行分布。
gd.RunGravityModel(trip_purpose=1, a=None, b=None, c=None)
(9)生成点到点的需求 (optional)
为便于后续做路径规划和交通分配,根据上一步得到的小区间的OD分布,随机获取各小区内的点,生成点到点的需求。
gd.GenerateAgentBasedDemand()
(10)可视化 (optional)
在QGIS中添加图层,导入输出的demand.csv,zone.csv等。
右键已添加的demand图层,选择“Properties”,设置“Symbology”为“Graduated”,选择“Value”为“volume”,即可实现根据出行量的可视化。
方格网边界外的需求则表示道路边界点产生、吸引的虚拟小区需求。
4. 为什么是网格状交通小区
传统的交通小区通常沿铁路、河流等天然屏障划分,遵循行政区划,以便交通调查和统计资料的获取,但难以克服空间异质性。
以美国国家植物园所在的交通小区为例,统计调查中的小区 (census tract) 为下图中的红色边框。传统的交通模型多是将这样的census tract作为交通小区 (Traffic Analysis Zone)进行需求分析,而忽视了小区内实际客流吸发点的分布。
通过划分方格网,可以将小区的交通吸发量与实际客流吸发点很好地结合,一定程度上降低了空间异质的影响,使OD出行分布更加精准。
目前osm2gmns,grid2demand等输出文件需借助QGIS和NeXTA进行可视化,下一步将介绍plot4gmns包,实现在python环境下对上述输出文件进行可视化。
参考
- https://mp.weixin.qq.com/s/6H791uKUR3EJWXErGW2pAA