用出租车GPS数据分析深圳道路交通情况Word格式.docx
- 文档编号:16210304
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:26
- 大小:3.04MB
用出租车GPS数据分析深圳道路交通情况Word格式.docx
《用出租车GPS数据分析深圳道路交通情况Word格式.docx》由会员分享,可在线阅读,更多相关《用出租车GPS数据分析深圳道路交通情况Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
再把该图和深圳地图叠合,堵车情况就在图上呈现出来。
一、问题重述
各大城市出租车越来越多的安装了GPS终端,这些终端能够每隔1分钟向出租车管理中心发送本车的位置、速度和方向等实时信息。
原始数据主要保存出租车上装配的GPS终端所采集的数据,这些数据包括序号,车牌号码,GPS时间,经度,纬度,车辆状态(空车、重车),车辆速度,车辆方向(8个方向)等信息。
从这些数据你是否能够:
1.根据出租车载客的起讫点,结合深圳市的交通地图,恰当的划分交通小区,并选择小区中的某一点,用其经纬数值作为该小区的坐标。
2.根据小区划分和出租车GPS数据,给出载客出租车的OD时空分布。
如:
某时刻从坐标
到
、
的出租车有多少辆。
3.由此,在合理的假设条件下,能否对人们出行的OD时空分布进行推断!
4.根据出租车载客后的行驶数据,筛选出拥堵的路段时段以及拥堵的路口时段。
拥堵的标准自己设定,如某路段在某个时段平均行驶速度小于多少公里/小时(比如,10公里/小时),可认为是拥堵。
2、模型假设
1、假设出租车GPS终端发出的车辆状体由0变为1时此时的经纬度为起始点,车辆状态由1变为0时,此时的经纬度为终止点。
2、深圳市人口总数在一定时间范围内基本保持不变。
3、深圳市不发生任何妨碍人出行的特殊情况。
4、深圳市没有举办大型活动带来的交通量的增长。
5、道路状态基本保持不变(即没有因道路建设等原因改变原有的交通状态)。
3、符号约定
2.date或time采集时间点(格式:
DDhh:
mm:
ss)
3.h经度
4.l纬度
5.status车辆状态(0=非打表,即:
空载;
1=已打表,即:
重载)
6.v车速(单位为:
km/h)
7.angle行车方向(0=东;
1=东南;
2=南;
3=西南;
4=西;
5=西北;
6=北;
7=东北)
4、问题分析与模型的建立
样本抽取:
由于数据量大超过1万辆车,采取样本估计总体的方法,随即抽取1000个样本,抽取程序在附录2。
结果在out.txt。
问题1分析:
出租车载客的起终点,通过假设1可以确定出租车载客的起始点,和终止点,利用c++编程统计1000辆样本车的起终点坐标及其对应时间数据(程序见附录3),运行结果在1to.txt;
将统计得到的数据用matlab软件作散点图,依据点的聚集性,同时结合深圳市的交通地图,来划分交通小区,
为了简化计算,小区依照经纬度划分为矩形区域,共15个小区。
用其中心经纬数值作为该小区的坐标。
附录3同时也计算起,终点区号。
1to.txt格式:
(timehl区号)
问题1模型求解
(1)通过软件统计起止点,程序见附录1.
(2)用matlab将统计的起止点作散点图如下,程序见附录7;
通过与深圳市交通图比较可以发现:
点密集处交通网相对比较密集,交通小区与深圳市住宅区,公共设施去和工业用地的集中有很大吻合度由此推断出住宅区,工业密集区等是人们主要起止点,密集度反映了地区的繁荣程度,与发展状况。
划分小区:
以经纬度113.9114114.1114.2和纬度22.622.7划分为15个小区。
(3)交通小区中心坐标
交通小区
经度
纬度
1
113.84
22.75
2
113.85
22.65
3
113.87
22.57
4
113.98
22.77
5
113.95
6
22.52
7
22.74
8
114.05
9
22.56
10
114.15
11
12
13
114.24
14
114.22
15
114.27
22.48
问题2分析
根据小区划分和出租车GPS数据,给出载客出租车的OD时空分布。
OD时空分布就是某个时间段内从出发地到目的地的交通量分布。
以OD矩阵表示OD时空分布,OD矩阵定义如下:
其中
时间段内,从乘客
小区上车到
小区下车的所有车次。
n为小区总数。
以一个例子说明怎么得到载客出租车的OD时空分布,我们将对2011.4.18那天13:
30的1000辆样本载客出租车起始点数据1to.txt进行研究。
分别找出13:
30之前最近的上客点i,13:
30之后的最近下客点j。
由起,终点ij的数据确定od矩阵元素值。
如发现一次从i小区到j小区的话od(i,j)+1;
以此类推,这样我们就得到了给定时刻下的载客出租车在此时的OD时空分布。
od矩阵此时是载客次数矩阵,由于是取样分析,为了更具代表性,将od矩阵改为概率矩阵,od(i,j)/(od总载客次数)。
比如od(i,j)==0.1;
就表明有10%乘车人在走从i区到j区,若od总载客次数=100,那么就是10人正在从i到j。
实际求解利用c++程序,程序运行结束显示总载客次数,result.txt显示od概率矩阵见附录4。
为了增加可见性可用matlab将od概率矩阵用图形表示出来。
问题2模型求解例子
统计2011.4.1812:
30:
00左右数据,通过matlab做出OD时空百分分布如下:
result.txt-----od矩阵:
matlab作图(程序见附录6):
OD矩阵:
问题3分析
在合理的假设条件下,对人们出行的OD时空分布进行推断,通过分析数据建立一个动态变化的OD时空分布模型,通过该模型进行预测其他时间的人们出行的OD时空分布,我们可以从时间角度推断。
统计推断出人们出行的OD时空数量分布;
时间角度推断,就是说根据之前的人们出行的OD时空数量分布情况,通过插值拟合,我们推断出下一个时刻的人们出行的OD时空数量分布。
利用问题2中的过程求出若干个时间点的OD分布,便可拟合。
预测未知的点。
为了方便,我们只研究OD(13,13)即13区到13区的人数虽时间变化。
问题3模型求解
问题二最后得出的od矩阵是概率形式,但也得到了od总载客次数。
这样有:
人们出行的OD时空数量分布=od总载客次数*od概率矩阵。
我们选取2011.4.18
路线从区到区;
OD(13,13);
那天12个时间点作为研究对象,1:
30-------------23.30;
记为1.5—23.5;
time1.5----------------------23.5;
od数量(13,13)=[3,1,1,3,8,1,8,5,7,5,1,1];
matlabpolyfit拟合得
问题4分析
根据1000个样本出租车的行驶数据,筛选出拥堵的路段时段以及拥堵的路口时段。
拥堵的标准自己设定,如某路段在某个时段平均行驶速度大于公里/小时可认为是拥堵。
我们规定<
10为拥堵,10<
v<
20为缓慢,v>
20为通畅。
要研究t时刻赌车情况,利用程序(附录5)对t时刻1000个样本出租车速度及坐标统计,结果数据放在1v.txt。
然后用MATLAB(程序见附录8)导入1v.txt,画出散点图。
由图看出拥挤的路段。
我们选择2011.4.18那天14:
30为例子。
为了更直观,我们利用vc#经行地图叠合,使效果更明显。
问题4模型求解
我们选择2011.4.18那天12:
30,1000辆载客出租出作为研究对象
matlab散点图
结果如下;
担然用该程序可对任意时间点统计。
红点:
堵;
黄点:
缓慢;
绿点:
畅通;
数据与地图匹配图
蓝点:
缓慢。
7、模型的评价与分析
模型评价:
一,由于数据量大,而个人计算机速度有限,故采用样本评估总体的方法,从18000多车辆中随机选取1000辆作为样本研究,既很具有代表性,又简化计算。
分析od图时候,以载客次数为统计对象,从1000辆车中挑出载客起点终点,作为一次载客。
分析所有载客,得出od矩阵,解决了问题二,三,模型简单清晰。
对于堵车问题,采用分析t时刻所有样本车辆行驶速度,结合其坐标画出散点图,用不同颜色表示堵车,缓慢,通畅;
并在最后与实际地图结合,明了直观展现市区堵车情况。
二,模型本身完全可以计算所有数据,只是实践发现个人计算机大不到那要求,故才抽样。
如若要计算更多数据,只需增大样本数即可。
三,模型应用:
稍加修改便可以用于统计分析城市车辆,乘客OD时空分布,为城市规划带来便利,而且模型展现直观。
八.模型的改进
不足与改进:
一,样本评估总体虽简化了计算,可也容易造成统计片面性,要想更准确分析,应该增大样本数。
二,计算载客起点,终点时,直接采用01转变时的某个数据,没考虑车的物理运动状况,可能造成起点,终点有误差。
要更精确求解,应该假设一个物理模型来计算起点,终点。
计算堵车时,低于10即认为堵车,但也可能是车在闲置,而被误统计为堵车,尤其在深夜,出错率更大,因此要想更准确,还要对闲置和堵车作出区别。
三,为了简化计算直接采用了矩形分区,更好的办法应该采用聚类分区,更能反映点的区域性。
附录1
深圳市政区图
深圳市交通网
交通流量图
附录2
#include<
dirent.h>
stdio.h>
string.h>
stdlib.h>
iostream>
fstream>
usingnamespacestd;
voidrm_dir(char*path);
voidusage();
intn=0;
FILE*p=fopen("
t.txt"
"
w+"
);
intmain(intargv,char*argc[])
{
rm_dir("
gps"
charstr[100];
ofstreamout;
out.open("
out.txt"
ios:
:
out);
inti;
fseek(p,0,0);
intsum=0;
for(i=0;
i<
n;
i++)
{
fgets(str,100,p);
if(rand()%10<
3)
out<
<
str;
sum++;
}
fclose(p);
out.close();
cout<
"
N不能大于"
sum<
endl;
return0;
}
voidrm_dir(char*path)
structdirent*ent=NULL;
DIR*dir;
staticcharsubdir[1024]="
;
if(!
strcmp(subdir,"
))
strcpy(subdir,path);
dir=opendir(path);
while((ent=readdir(dir))!
=NULL)
if(ent->
d_ino==8||ent->
d_ino==10)
charfile[1024]="
strcpy(file,subdir);
strcat(file,"
/"
strcat(file,ent->
d_name);
printf("
Listfile%s\n"
ent->
else
strcmp(ent->
d_name,"
.."
)||!
."
continue;
strcat(subdir,"
strcat(subdir,ent->
fprintf(p,"
gps\\%s\n"
n++;
rm_dir(subdir);
subdir[(int)(strlen(subdir)-strlen(ent->
d_name)-1)]='
\0'
closedir(dir);
n<
附录3
intqun(float,float);
structarr
longdata;
floath;
floatl;
longstate;
longv;
longangle;
};
arrtur[50000];
intsum=0;
longsumno[1000];
intmain()
intnamei=0;
charstrna[10];
ifstreamname;
ofstreamoutto;
outto.open("
1to.txt"
1t.txt"
name.open("
in);
intN;
结果在1t.txt,1to.txt统计多少N="
cin>
>
N;
while(namei<
N)
intn=0;
into=0;
name>
strna;
namei++;
strna<
ifstreams;
s.open(strna,ios:
intt,t0,t1,test;
floata,b;
longc,d,e;
charchr;
s>
while(!
s.eof())
s.getline(str,100,'
'
//cout<
str<
t>
chr>
t0>
t1>
test>
chr;
t<
"
test<
a>
b>
c>
d>
e>
tur[n].data=t*1000000+t0*10000+t1*100+test;
tur[n].h=a;
tur[n].l=b;
tur[n].state=c;
tur[n].v=d;
tur[n].angle=e;
c<
getchar();
//cout<
tur[n].data<
tur[n].state<
tur[n].l<
//getchar();
sumno[namei]=n;
inti=0;
intstate;
intq=1;
while(tur[i].state!
=0)i++;
for(;
i<
n-1;
i++)
q=qun(tur[i].h,tur[i].l);
state=tur[i].state;
if(tur[i+1].state!
=state)
{o++;
if(tur[i].h>
=113.7&
&
tur[i].h<
=115)out<
tur[i].l<
outto<
tur[i].data<
q<
//out<
//if(tur[i+1].state-state==-1)out<
}
i--;
q=qun(tur[i].h,tur[i].l);
if(o%2!
=0){outto<
if(tur[i].h>
o++;
sum+=o/2;
//out<
s.close();
out.flush();
outto.flush();
the"
namei<
sum-1<
次,记住此结果,在3.exe时候输入"
name.close();
outto.close();
complete"
intqun(floatx,floaty)//分区;
floath1,h2,h3,h4;
floatl1,l2;
h1=113.9;
h2=114;
h3=114.1;
h4=114.2;
l1=22.6;
l2=22.7;
if(x<
=h1)
if(y>
l2)return1;
elseif(y>
l1)return2;
elsereturn3;
}
elseif(x<
=h2)
l2)return4;
l1)return5;
elsereturn6;
=h3)
l2)return7;
l1)return8;
elsereturn9;
=h4)
l2)return10;
l1)return11;
elsereturn12;
elseif(x>
h4)
l2)return13;
l1)return14;
elsereturn15;
附录4
floatsum=0;
longq;
arrtur[2];
floata[15][15];
intN=15;
ifstreamina;
ofstreamo;
o.open("
result.txt"
ina.open("
1.exe最后次数"
time"
data;
intj;
intm,n;
ina>
tur[0].data>
tur[0].h>
tur[0].l>
tur[0].q;
tur[1].data>
tur[1].h>
tur[1].l>
tur[1].q;
m=tur[0].q-1;
n=tur[1].q-1;
if(tur[0].data<
=data&
data<
=tur[1].data)a[m][n]++,sum++;
for(j=0;
j<
j++)
o<
a[i][j]/sum<
if(i==N-1)o<
结果在result.txt请记录此值total="
ina.close();
o.close();
附录5
fs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 出租车 GPS 数据 分析 深圳 道路交通 情况
![提示](https://static.bdocx.com/images/bang_tan.gif)