赞
踩
近日做项目,有一部分要分析研究范围内的交通运行情况。传统的方法是要去现场调研数车,通过交通量和道路通行能力来计算道路的服务水平。但是因为疫情原因,不想外出,想要利用其它方法来获得区域的交通运行水平。首先想到的就是高德地图api的交通态势。
有了想法之后,作为一个只会看,不会写代码的辣鸡交通规划师,就必须借助度娘的帮助了。在网上发现很多介绍高德api交通态势爬取的方法,下面就列举一个我看完之后能够实现的方法。(写这篇文章的原因主要是为自己加深印象,小伙伴们也可以去网上搜索,很容易获得方法和代码)
本次使用的工具
Spyder(python3.7)编辑器、arcgis10.2主要是这两个。(当然会用到记事本、excel之类的了)
主要思路
根据高德api提供的接口,利用python的requests库get到高德返回到交通运行信息。将其保存成csv文件,导入到arcgis中,进行可视化展示分析。
方法分析
高德提供了两种获取区域交通态势的方法,一种是矩形区域查询(需要矩形的左下角和右上角经纬度坐标,注意是高德经纬度格式),另一种方法是圆形区域查询(需要圆形中心的经纬度和半径)。本次就采用了矩形区域的交通态势查询,但是高德对于查询的区域范围进行了限制(矩形对角线的距离在10公里之内),但是这也难不住网上的各位大神,利用网格的方法突破了这种限制。
将要分析的区域分割成多个网格,每个网格对角线距离不要超过10公里,然后利用for循环对网格的数据依次进行调用,这样虽然增加api调取的次数,但也不失为一个好的方法。
主要代码
代码主要来源于网上,不是本人撰写(主要是自己太笨),部分有所改动,经过我的实践,代码好用。下面这些代码主要是用来爬取及保存交通态势数据。
- # -*- coding: utf-8 -*-
- """
- Created on Thu May 7 10:43:18 2020
- @author: user
- """
-
- import requests
- import pandas as pd
- import json
- import time
-
- #初始API的URL
- url="https://restapi.amap.com/v3/traffic/status/rectangle?key=申请的ak&extensions=all&rectangle="
-
- #设定整个网格左下角坐标的经纬度值
- baselng=120.320805
- baselat=36.098401
- #设定每个网格单元的经纬度宽
- widthlng=0.04
- #同一维度,lng=0.01≈1000米
- widthlat=0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。