Python_GPS轨迹数据的出行模式与OD识别与分析
程序员文章站
2022-05-19 11:29:54
方向明确地理空间大数据应用研究3S技术结合人工智能分析目的与意义1、社会行为研究:通过多维大数据空间分析,挖掘出潜在居民出行信息,判断出行场景,分析出行行为规律和不同人群的出行习惯,进而可以为选址或者规划部门提供技术支持。1、交通规划方面:通过深度学习算法完成出行方式识别,为基于位置服务、交通规划、智能交通管理、交通决策等方面提供数据及有效决策支持。OD空间分析提取OD点数据并生成OD线,对其进行查询统计与空间分析;使用OD矩阵生成网络图和OD图进一步分析。具体步骤1、将python处...
方向明确
地理空间大数据应用研究
3S技术结合人工智能分析
目的与意义
1、社会行为研究:
通过多维大数据空间分析,挖掘出潜在居民出行信息,判断出行场景,分析出行行为规律和不同人群的出行习惯,进而可以为选址或者规划部门提供技术支持。
1、交通规划方面:
通过深度学习算法完成出行方式识别,为基于位置服务、交通规划、智能交通管理、交通决策等方面提供数据及有效决策支持。
OD空间分析
提取OD点数据并生成OD线,对其进行查询统计与空间分析;使用OD矩阵生成网络图和OD图进一步分析。
具体步骤
1、将python处理得到csv数据转为带投影的shp数据完成空间分析
2、对映射后OD数据分级渲染
3、生成OD线
4、生成OD网络
原始数据:
处理后的数据:
将原始数据处理成OD形式
#coding=utf-8
import sys
import pandas as pd
sys.path.append(r"lib")
import csv
def writeCSV(relate_record, src):
with open(src, 'a', newline='\n') as csvfile:
writer = csv.writer(csvfile)
for row in relate_record:
try:
writer.writerow(row)
except Exception as e:
print(e)
print(row)
def mergeData(df3,file):
# cards = pd.read_csv(save + file, usecols=[0],names=['id'])['id'].tolist()
df3 = df3.groupby('id')
for name, df4 in df3:
# if name not in cards:
i = 0
one = []
while i < df4.shape[0] - 1:
typeS = df4.iat[i, 5]
typeE = df4.iat[i+1, 5]
if typeS == 'S' and typeE == 'T':
left = df4.iloc[i].tolist()
right = df4.iloc[i + 1].tolist()
left[len(left):len(left)] = right
one.append(left)
i += 2
else:
i += 1
writeCSV(one,'viaOD1.csv')
df = pd.read_csv('labels.csv')
# df = df[df.type.isin(['S', 'T'])]
# df['longitude'] = df['longitude'].map(lambda x: int(x/1000))
mergeData(df, 'labels.csv')
tmp_lst = []
with open('viaOD1.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
tmp_lst.append(row)
df = pd.DataFrame(tmp_lst[1:], columns=tmp_lst[0])
df.columns = ['Numo', 'OLAT', 'OLON', 'OTime', 'OSpeed', 'OType', 'OTrans', 'OName1', 'OName2','Numd','DLAT', 'DLON',
'DTime', 'DSpeed', 'DType', 'DTrans', 'DName1', 'DName2']
df.to_csv('viaod2.csv')
df1=pd.read_csv('viaod2.csv')
cols=['TripID']+list(df1.columns)
df1.index +=1
df1['TripID']=df1.index
df2=df1[cols]
df2.to_csv('BJOD.csv')
data=pd.read_csv('BJOD.csv',usecols=['TripID','Numo', 'OLAT', 'OLON', 'OTime', 'OSpeed', 'OType', 'OTrans', 'OName1', 'OName2'])
data.to_csv('O.csv')
data2=pd.read_csv('BJOD.csv',usecols=['TripID','Numd','DLAT', 'DLON','DTime', 'DSpeed', 'DType', 'DTrans', 'DName1', 'DName2'])
data2.to_csv('D.csv')
按街道和区分组和连接OD
import csv
import pandas as pd
tmp_lst = []
with open('BJOD.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
tmp_lst.append(row)
df = pd.DataFrame(tmp_lst[1:], columns=tmp_lst[0])
OD_RESULT = df.groupby(['OName1', 'DName1']).count()['TripID'].reset_index()
OD_RESULT.columns = ['Source', 'Target', 'weight']
OD_RESULT = OD_RESULT[OD_RESULT['weight'] > 0].reset_index(drop=True)
OD_RESULT = OD_RESULT.sort_values(by='weight').reset_index(drop=True)
OD_RESULT.to_csv('GroupOD1.csv')
'''
根据行政区分组
'''
OD_RESULT2 = df.groupby(['OName2', 'DName2']).count()['TripID'].reset_index()
OD_RESULT2.columns = ['Source', 'Target', 'weight']
OD_RESULT2 = OD_RESULT2[OD_RESULT2['weight'] > 0].reset_index(drop=True)
OD_RESULT2 = OD_RESULT2.sort_values(by='weight').reset_index(drop=True)
OD_RESULT2.to_csv('GroupOD2.csv')
'''
将街区单元经纬度groupOD1相连接
'''
tmp_lst = []
with open('Road.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
tmp_lst.append(row)
Union_Location = pd.DataFrame(tmp_lst[1:], columns=tmp_lst[0])
Union_Location.columns = ['Source', 'SLng', 'SLat']
OD_RESULT_LATLON = OD_RESULT.merge(Union_Location, on='Source')
Union_Location.columns = ['Target', 'TLng', 'TLat']
OD_RESULT_LATLON = OD_RESULT_LATLON.merge(Union_Location, on='Target')
OD_RESULT_LATLON.to_csv('OD_LATLON1.csv')
'''
将行政区经纬度groupOD2相连接
'''
tmp_lst = []
with open('area.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
tmp_lst.append(row)
Union_Location = pd.DataFrame(tmp_lst[1:], columns=tmp_lst[0])
Union_Location.columns = ['Source', 'SLng', 'SLat']
OD_RESULT_LATLON2 = OD_RESULT2.merge(Union_Location, on='Source')
Union_Location.columns = ['Target', 'TLng', 'TLat']
OD_RESULT_LATLON2 = OD_RESULT_LATLON2.merge(Union_Location, on='Target')
OD_RESULT_LATLON2.to_csv('OD_LATLON2.csv')
北京各个区的OD效果图
北京各个街道的OD效果图
如需完整代码和数据示例请私聊我,如有问题可评论
如果比较急的话请打开我其他文章获得我的联系方式
本文地址:https://blog.csdn.net/qq_30803353/article/details/107434916
上一篇: 本本清理灰尘需要全部拆开吗?