前几天写了一篇制作公交线路图的文章,有朋友问我能不能做一下地铁的线路图,其实道理差不多,今天再带着大家做一下一线城市的地铁线路图
首先准备数据,以北京市为例,在高德地图地铁页面进行抓包,抓包地址为:
http://map.amap.com/subway/index.html?&1100
北京市地铁信息接口为:
http://map.amap.com/service/subway?_1599997789354=&srhdata=1100_drw_beijing.json
对json数据进行解析,使其成为Bmap数据格式
import requests import jsonurl='http://map.amap.com/service/subway?_1599997789354=&srhdata=1100_drw_beijing.json' response=requests.get(url)result=json.loads(response.text)stations=[]for i in result['l']: station=[] for j in i['st']: station.append([float(k) for k in j['sl'].split(',')]) stations.append(station) print(stations)
1.北京地铁线路图
from pyecharts.charts import BMap from pyecharts import options as opts from pyecharts.globals import BMapType, ChartType c=( BMap(init_opts=opts.InitOpts(width="1600px", height="800px")) .add_schema( baidu_ak="", #百度秘钥ak center=[116.397128, 39.916527], #当前视角的中心点,用经纬度表示 zoom=14, #当前视角的缩放比例 is_roam=True, #是否开启鼠标缩放和平移漫游 ) .add( series_name="", type_=ChartType.LINES, data_pair=stations, is_polyline=True, #是否是多段线 is_large=True, #是否启用大规模线图的优化,在数据图形特别多的时候(>=5k)可以开启 linestyle_opts=opts.LineStyleOpts(color="purple", opacity=0.6, width=1), effect_opts=opts.EffectOpts(trail_length=0.5), ) .add_control_panel( copyright_control_opts=opts.BMapCopyrightTypeOpts(position=3), maptype_control_opts=opts.BMapTypeControlOpts( type_=BMapType.MAPTYPE_CONTROL_DROPDOWN ), scale_control_opts=opts.BMapScaleControlOpts(), overview_map_opts=opts.BMapOverviewMapControlOpts(is_open=True), navigation_control_opts=opts.BMapNavigationControlOpts(), geo_location_control_opts=opts.BMapGeoLocationControlOpts(), ))c.render_notebook()