ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【大数据】城市公交网络分析与可视化(四):绘制城市公交(地铁)线路图

2020-03-15 19:36:36  阅读:602  来源: 互联网

标签:city bus 线路图 buslines num 网络分析 pd dt 城市公交


内容介绍

梗概:爬取公交路径坐标,处理成为符合高德地图Map Lab线形图的格式,通过该平台绘制公交(地铁)线路图等

一些必要的知识点可在该系列博客的其他内容中获得!

1 采用循环法获取线路名

怎么获取一个城市有哪些线路名?遍历前1000路公交。

有遗漏怎么办?想指点区域怎么办?见后文的“读取文本”法。

实际上遍历1000路公交基本能涵盖一个城市大多数公交线路,遗漏的很多也是一些特殊的路线。

代码

import requests
import json
import pandas as pd
import re

def Bus_inf(city,line):
    global bus_num  #全局变量,用于计算公交数目
    try:
        #获取数据
        url = 'https://restapi.amap.com/v3/bus/linename?s=rsv3&extensions=all&key=a5b7479db5b24fd68cedcf24f482c156&output=json&city={}&offset=1&keywords={}&platform=JS'.format(city,line)
        r = requests.get(url).text
        rt = json.loads(r)
        #读取当前公交线路主要信息
        dt = {}
        dt['line_name'] = rt['buslines'][0]['name'] #公交线路名字
        dt['polyname'] = rt['buslines'][0]['polyline'] #获取行驶路径
        bus_num+=1 #有效公交数+1
        
        """整理行车路径格式符合高德地图绘图工具的要求"""        
        b=re.split("[;]",dt['polyname'])
        res=""
        for i in range(len(b)):
            tmp=re.split("[,]",b[i])
            if len(res)==0:
                res=res+"["+tmp[0]+","+tmp[1]+"]"
            else:
                res=res+",["+tmp[0]+","+tmp[1]+"]"
        dt['polyname'] =res
        
        return pd.DataFrame(dt,index=[bus_num]) #下标index为“第几条公交线”
    except:
        return pd.DataFrame()  #读取数据失败,返空

if __name__=="__main__":
    bus_num=0  #设置全局变量计算公交数目(通常默认就是0)
    city='苏州' #需要查询公交信息的城市
    for_num=1000 #遍历的线路数[1路,for_num路],通常公交线路数小于1000,具体可参考8684等网站
    all_buslines=pd.DataFrame()     
    for i in range(1,for_num+1):
        all_buslines=pd.concat([all_buslines,Bus_inf(city,str(i)+'路')])  #不加这个'路'可能优先获取地铁
    
    print("Bus_info函数遍历{}前{}路公交,有效公交线路数为:{}个的情况下:".format(city,for_num,bus_num))
    all_buslines.to_csv("{}前{}路公交(有效线路数:{})基本信息.csv".format(city,for_num,bus_num),index=False,encoding='utf-8-sig')

绘制结果欣赏
绘图平台是 高德开放平台|Map Lab
大城市数据量太大(如北京)高德读不了,可以删减一部分,或者分两次读入,但特别的卡…

平均一个城市五分钟出结果吧,什么是一劳永逸?这就叫一劳永逸!

厦门
写这么久的博客第一次知道咋去水印

标签:city,bus,线路图,buslines,num,网络分析,pd,dt,城市公交
来源: https://blog.csdn.net/qq_41856733/article/details/104870510

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有