基于高德地图数据采集及可视化城市交通健康榜
引言
交通状况是衡量一个城市发展水平和居民生活质量的重要指标之一。近年来,随着城市化进程的加快,交通拥堵问题日益凸显,成为城市管理者和居民关注的焦点。高德地图作为中国领先的数字地图内容、导航和位置服务解决方案提供商,通过其发布的《中国主要城市交通分析报告》,为我们提供了丰富的数据资源,使得交通状况的可视化分析成为可能【4】【10】【3】。
可视化效果图 ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7f2d5fbda1e7bf37f2c1fd3d96e911d4.png)
高德地图交通健康榜的构成
高德地图的交通健康榜是基于“交通健康指数”来评估的,该指数综合考虑了时间、空间、效率三个维度,包括路网行程延时指数、路网高峰拥堵路段里程比、路网高延时运行时间占比等9项数据指标【3】。通过这些指标,高德地图能够对城市交通状况进行立体化诊断,为城市管理提供科学依据。
数据获取与处理
为了制作交通健康榜,首先需要获取和处理大量数据。高德地图通过其平台收集的交通数据,结合其他数据源,如公安部门、交通运输部等,形成了一个全面的数据集。在数据分析过程中,数据清洗和建模是关键步骤。通过Power BI等工具,可以将原始数据转换为结构化数据,并建立数据模型,以便于后续的分析和可视化【1】。
可视化分析
数据可视化是将复杂的数据信息以图形的形式展现出来,使得非专业人士也能理解数据背后的含义。高德地图的交通健康榜通过地图、表格、图表等多种可视化手段,直观地展示了城市交通状况。例如,通过散点图可以展示城市分布,通过柱状图可以比较不同城市的交通健康指数,通过热力图可以反映城市交通拥堵情况【1】。
交通健康榜的应用
交通健康榜不仅为公众提供了了解城市交通状况的窗口,也为政府和企业提供了决策支持。政府部门可以根据交通健康榜来优化交通规划,改善路网结构,提高交通效率。企业可以通过分析交通数据,调整物流路线,减少运输成本。此外,交通健康榜还可以作为城市竞争力的一个参考指标,吸引投资和人才【7】【8】【9】。
结论
基于高德地图数据可视化的中国主要城市交通健康榜,为我们提供了一个全面、直观了解城市交通状况的途径。通过科学的数据分析和有效的可视化展示,我们不仅能够识别交通问题,还能为解决这些问题提供数据支持。随着技术的进步和数据资源的丰富,未来的交通健康榜将更加精细化、智能化,为构建更加高效、便捷的城市交通体系做出更大贡献。
代码
import datetime
import os
import time
import webbrowser
import schedule
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.faker import Faker
from pyecharts.globals import ChartType
import pandas as pd
import requests
from lxml import etree
def parse_data(data):
cityName = [] # 城市名
healthValue= [] # 交通监控指数
realSpeed = [] # 平均速度
idx = [] # 拥堵时延指数
for item in data:
temp_name = item['cityName']
if item['cityName'] == '伊犁州':
temp_name = '伊犁哈萨克自治州'
cityName.append(temp_name)
healthValue.append(item['healthValue'])
realSpeed.append(item['realSpeed'])
idx.append(item['idx'])
return [cityName,healthValue,realSpeed,idx]
i = 1
def save_data(cityName, healthValue, realSpeed, idx ,filename , health_coun):
states = []
[ states.append("健康") for ix in range(health_coun) ]
[ states.append("亚健康") for ix in range(health_coun,100) ]
data = pd.DataFrame(
{
'城市名': cityName,
'城市健康指数': healthValue,
'拥堵时延指数': realSpeed,
'平均速度': idx,
'健康状态' : states,
}
)
global i
i+= 1
if os.path.exists('中国主要城市交通健康榜.xlsx') == True:
with pd.ExcelWriter('中国主要城市交通健康榜.xlsx',mode='a',engine='openpyxl') as w :
data.to_excel(w,sheet_name= "{}".format(datetime.datetime.now().strftime('%Y-%m-%d')))# case1
else:
data.to_excel(filename,sheet_name= "{}".format(datetime.datetime.now().strftime('%Y-%m-%d'))) #case2
print("日期:{}".format(datetime.datetime.now().strftime('%Y-%m-%d') ))
print("\033[0;32;50m健康城市:{}\033[0m".format(health_coun))
print("\033[0;31;50m亚健康城市:{}\033[0m".format(100-health_coun))
print("保存完成" )
print('*' * 24)
def job():
filename = "中国主要城市交通健康榜.xlsx"
# 获取高德地图的城市健康数据
data , health_c = get_data()
# 解析数据
cityName, healthValue, realSpeed, idx = parse_data(data)
save_data(cityName, healthValue, realSpeed, idx, filename, health_c)
# visualization(filename)
# 测试的例子 以秒代替天
# schedule.every().seconds.do(job )
#
# 每天凌晨执行一次
schedule.every().day.at("00:00")
print('定时任务已开启,每天凌晨00:00抓取数据')
if __name__ == '__main__':
i = 0
while True:
schedule.run_pending()