python获取高德地图实时交通状况,并在arggis上可视化

代码:

# -*- coding: utf-8 -*-
"""
Created on Thu Sep  5 23:27:32 2019

@author: 16534
"""


import requests

import pandas as pd

import json

import time

#初始API的URL

 

url="https://restapi.amap.com/v3/traffic/status/rectangle?key=3112295ad0404c2da3b4dca3a5465b01&extensions=all&rectangle="

 

#设定整个网格左下角坐标的经纬度值

#baselng=108.772376

baselng=121.2

#baselat=34.177000
baselat=31.1

 

#设定每个网格单元的经纬度宽

 

widthlng=0.05

 

widthlat=0.04

 

#用于储存数据

 

x=[]

 

#用于标识交通态势线段

 

num=0

#爬取过程可能会出错中断,因此增加异常处理

 

try:

#循环每个网格进行数据爬取,在这里构建了3X3网格

 

    for i in range(0,5):

 

        #设定网格单元的左下与右上坐标的纬度值

 

        #在这里对数据进行处理,使之保留6位小数(不保留可能会莫名其妙出错)

 

        startlat=round(baselat+i*widthlat,6)

 

        endlat=round(startlat+widthlat,6)

 

        for j in range(0,5):

 

            #设定网格单元的左下与右上坐标的经度值

 

            startlng=round(baselng+j*widthlng,6)

 

            endlng=round(startlng+widthlng,6)

 

            #设置API的URL并进行输出测试

 

            locStr=str(startlng)+","+str(startlat)+";"+str(endlng)+","+str(endlat)

 

            thisUrl=url+locStr

 

            print(thisUrl)

 

            #爬取数据

 

            data=requests.get(thisUrl)

 

            s=data.json()

 

            a=s["trafficinfo"]["roads"]

 

            #注意,提取数值需要使用XXX.get()的方式来实现,如a[k].get('speed')

 

            #若使用a[k]['speed']来提取,或会导致KeyError错误

 

            for k in range(0,len(a)):

 

                s2=a[k]["polyline"]

 

                s3=s2.split(";")

 

                for l in range(0,len(s3)):

 

                    s4=s3[l].split(",")

 

                    x.append([a[k].get('name'),a[k].get('status'),a[k].get('speed'),num,float(s4[0]),float(s4[1])])

 

                num=num+1

 

            #若爬取网格较多,可使用time.sleep(秒数)来避免高德的单秒API调用次数的限制

 

except Exception  as e:

 

    pass

#将数据结构化存储至规定目录的CSV文件中

 

c = pd.DataFrame(x)

 

#c.to_csv('E:/maptrafficstate/BigRoads.csv',encoding='utf-8-sig')

c.to_csv('E:/Anaconda/webservice-2019-06-01/BigRoads.csv',encoding='utf-8-sig')

 

你可能感兴趣的:(python获取高德地图实时交通状况,并在arggis上可视化)