大型城市高人口密度造成城市拥堵问题:规划最佳回家时间
随着暑期的到来,大学生们迫不及待地打包行李,准备回家与家人团聚。然而,对于在上海市上学的大学生来说,回家也意味着面临较为严峻的城市拥堵问题。
首先,大学生回家集中在放假的前几天和假期的最后几天。这导致高速公路、火车站和机场等交通枢纽出现车流高峰。大量的私家车、长途客车和高铁动车,以及航班的增加,使得交通压力剧增,交通拥堵问题愈发严重。其次,大学生回家的同时,上海市的旅游高峰期也开始了。许多游客选择来上海观光和旅游,增加了景点、购物区和餐饮区的人流量。这不仅给公共交通带来了压力,还导致周边道路的交通拥堵,给大学生回家的交通带来不便和延误。此外,上海市的居民和其他工作人员也在这个时候休假或者利用周末时间外出。市区道路和周边高速公路上的车流量急剧增加,常常造成交通堵塞和行驶缓慢,给大学生回家的路上带来更多的时间成本和疲劳。
因此,合理规划出行时间对于正准备回家的大学生来说至关重要,特别是需要乘坐火车或高铁的同学,合理规划时间避免错过班车或航班,减少不必要的损失。
百度地图开放平台提供了轻量级路线规划服务(DirectionLite API ),以HTTP/HTTPS形式提供了路线规划服务。相较于Direction API,DirectionLite API更注重服务的高性能和接口的轻便简洁,满足基础的路线规划需求,并不具备Direciton API中的驾车多路线/未来出行和公交跨城规划等高级功能。DirectionLite API支持驾车、骑行、步行、公交路线规划,支持中国大陆地区。
使用指南:
- 注册百度账号
- 申请成为百度开发者
- 获取密钥(AK)
- 发送请求,使用服务
驾车路线规划的GET请求:
https://api.map.baidu.com/directionlite/v1/driving?origin=40.01116,116.339303&destination=39.936404,116.452562&ak=您的AK
驾车规划请求参数:本次路线规划只需要以下三个参数,其它参数请查看服务文档。
字段名称 | 字段含义 | 字段类型 | 是否必须 | 备注 |
---|---|---|---|---|
ak | 开发者密钥,AK申请 | string | 是 | |
origin | 起点 | “double,double” | 是 | 起点经纬度,格式为:纬度,经度;小数点后不超过6位,40.056878,116.30815 |
destination | 终点 | “double,double” | 是 | 终点经纬度,格式为:纬度,经度;小数点后不超过6位,40.056878,116.30815 |
API返回的json请求如下:主要包括计算状态、origin-destination点位,以及路径(routes)下具体的分段(steps)。
每个分段都有对应的路段距离(distance)、路段耗时(duration)、分段的道路类型(road_type)和路段描述(instruction)等等:
我以我们校区到虹桥火车站为例,每隔10分钟采集一次数据,将结果存入PostgreSQL中。
import psycopg2
import pandas as pd
import json, time, re
from urllib import request
from sqlalchemy import create_engine
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT'''数据库操作'''
# 创建数据库
db_name = 'dailydata'
db_connection = {"host": "localhost","port": "5432","user": "postgres","password": "your password",
}
conn = psycopg2.connect(**db_connection) # 连接数据库
conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # 设置自动提交事务
cursor = conn.cursor() # 创建游标
try:sql = "CREATE DATABASE {}".format(db_name) # 创建数据库cursor.execute(sql) # 执行sql语句print(f'{db_name}数据库创建完成')except:print(f'{db_name}数据库已存在')cursor.close() # 关闭游标
conn.close() # 关闭连接# 创建postgis扩展模块
extension = "postgis"
db_connection = {"host": "localhost","port": "5432","user": "postgres","password": "123","dbname": db_name
}
conn = psycopg2.connect(**db_connection) # 连接数据库
conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # 设置自动提交事务
cursor = conn.cursor() # 创建游标
try:cursor.execute(f"CREATE EXTENSION {extension};")print(f'{extension}扩展模块创建完成')
except:print(f'{extension}扩展模块已存在')cursor.close() # 关闭游标
conn.close() # 关闭连接'''获取路线数据'''
url = "https://api.map.baidu.com/directionlite/v1/driving?origin={0}&destination={1}&ak={2}" # 百度地图api
line = "31.167918,121.42531;31.200282,121.326533" # 起点坐标;终点坐标
ak = "your key" # 百度地图api密钥# 循环运行
while True:_data = pd.DataFrame(columns=['date','distance','duration','instruction','steps_loc']) # 创建空的DataFramecurrent_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 获取当前时间origin=line.split(';')[0] # 起点坐标destination = line.split(';')[1] # 终点坐标html = request.urlopen(url.format(origin, destination, ak)).read() # 获取返回的信息response = json.loads(html) # 将json格式转换为python对象if(response['message'] == 'ok'): # 判断是否成功获取数据distance = response['result']['routes'][0]['distance'] # 总距离duration = response['result']['routes'][0]['duration'] # 总时间# 获取每一步的行驶指示instructions = ''for instruction in response['result']['routes'][0]['steps']:instructions1 = re.sub(r'<[^>]+>', '', instruction['instruction']) + '。'instructions += instructions1# 获取每一步的起始坐标steps_loc = ''for step_loc in response['result']['routes'][0]['steps']:start_location = step_loc['start_location']end_location = step_loc['end_location']start_location = str(start_location['lng']) + ',' + str(start_location['lat']) + ';'end_location = str(end_location['lng']) + ',' + str(end_location['lat']) + ';'step_loc1 = start_location + end_locationsteps_loc += step_loc1# 将数据写入DataFrame_data.loc[0] = [current_time, distance, duration, instructions, steps_loc]# 将数据写入数据库engine = create_engine("postgresql://postgres:123@localhost:5432/"+db_name) # 连接数据库try:_data.to_sql('Lines_SHNU_to_HQRailwayStation', engine, index=False, if_exists='append') # 第一个参数为表名称print(f'当前时间路线数据已入库:', current_time, distance, duration)except Exception as e:print(e)finally:engine.dispose() # 关闭数据库连接# 每隔10分钟获取一次数据time.sleep(600)
对6月24日晚8时到6月26日晚10时约450条导航数据进行可视化。
出行尽量避开早晚高峰期(早8时左右和下午5点左右),选择在11:00-12:00出行最“通畅”,大约需要41分钟。
大型城市高人口密度造成城市拥堵问题:规划最佳回家时间相关推荐
- 文旅夜游为城市高质量发展提供新动力
近几年来,文旅夜游的迅速发展,大部分景区都是以文化核心为主题,随着新技术不断迭代,消费者需求个性化,将多媒体声光电技术应用于文化旅游,可以说是这些景点的必然选择.城市亮化已进入城市集群发展的新阶段,文 ...
- 北京经开区举办“人工智能为城市高质量发展赋能论坛”
7月28日下午,由北京经济技术开发区工委宣传文化部主办,北京经济技术开发区公共图书馆(北京电子科技职业学院图书馆)承办的"北京经济技术开发区资讯中心大讲堂--人工智能为城市高质量发展赋能论坛 ...
- Velodyne加入高通智慧城市加速器计划
Velodyne Lidar推动智慧城市产业发展 加州圣何塞--(美国商业资讯)--Velodyne Lidar, Inc. (Nasdaq: VLDR, VLDRW)今天宣布,该公司已加入高通智慧城 ...
- 建设智慧城市是推动城市高质量发展以及经济发展的重要途径
智慧城市建设作为新型基础设施建设之一,是未来城市发展的高级形态,也是时代发展的必然产物,在云计算.人工智能等新一代信息技术快速发展下,智慧城市也会进入新的发展阶段. 建设智慧城市是我国建设数字中国, ...
- 专访iDST华先胜:城市大脑,对城市的全量、实时认知和搜索
编者按:10月11-14日,为期四天的2017杭州云栖大会(门票火热抢购中!)将再度在杭州云栖小镇起航,作为全球最具影响力的科技展会之一,本届大会将有不少阿里集团专家以及各企业行业领袖的精彩演讲.第一 ...
- 专访iDST华先胜:城市大脑_对城市的全量、实时认知和搜索
原文地址 编者按:10月11-14日,为期四天的2017杭州云栖大会(门票火热抢购中!)将再度在杭州云栖小镇起航,作为全球最具影响力的科技展会之一,本届大会将有不少阿里集团专家以及各企业行业领袖的精彩 ...
- 浅谈城市大脑与智慧城市发展趋势
摘要:本文从城市大脑的概念出发,概述了智慧城市的宏观发展目标和新型智慧城市建设的基本原则及发展需求.重点阐述了城市大脑建设内容.智慧城市顶层设计1533+N系统架构.城市KPI指标.五个运行管理服务平 ...
- 4月连锁药店行业门店数量top15品牌城市和开店潜力城市排行榜
"数说睿见"提供全国所有城市的地理位置数据和消费者画像,帮助品牌锁定潜力城市.寻找黄金门店拓展区域,优化网点管理和资源配置,帮助品牌在所属领域实现渠道精耕."数说睿见&q ...
- 城市是最好的产业平台 —— 让企业成为城市的名片,城市成为企业的展厅
城市是最好的产业平台 -- 让企业成为城市的名片,城市成为企业的展厅 都市群.都市圈和都市带的建设被越来越多地赋予新时代拉动中国增长的引擎.在都市群建设中,新基建和老基建也将得到有效协同.大城市内部的 ...
最新文章
- Java面向对象知识点精华
- 传统公司部署OpenStack(t版)简易介绍(二)——Keystone组件部署
- asp.net core 1.1 项目升级至 asp.net core 2.0 preview 2
- Function Query(树状数组)
- Spring Boot中的高级配置文件管理
- robot 用AP连PC
- java jdom_JAVA JDOM生成XML
- 《Java编程思想》读书笔记(14)
- 【图论】图的深度优先遍历与广度优先遍历(图文讲解)
- 即时通讯工具的基本功能和如何做防御
- 赤兔oracle恢复软件 收费,赤兔Oracle数据库恢复软件下载 v11.6官方版-下载啦
- python 批量下载 代码_Python实现的批量下载RFC文档
- 提问(小白问题):为什么这里调试的时候无法输入
- Python实现缺失数字的四种方法
- eclipse报错 错误: 找不到或无法加载主类
- 关于不能访问腾讯云服务器tomcat的问题解决
- 《Hexo: 从零开始编写自己的主题》1. Hexo概述以及Hexo工作原理
- 【2017.10.08 智能驾驶/汽车电子】汽车电控常用英文缩写及功能之一
- python-opencv基础
- css过渡 取消过渡_CSS基础知识:CSS3过渡