底图加载

方法总览

plot_map(plt, bounds[, zoom, style, printlog])

添加地图底图

plotscale(ax, bounds[, textcolor, textsize, ...])

为底图添加指北针和比例尺

使用前的设置

TransBigData包提供了在matplotlib上绘制地图底图的功能,底图由mapbox提供,坐标系为WGS84。如果你没有mapbox token,在绘制地图时选择style=0可进行底图绘制(OpenStreetMap的底图)。
如果你要使用style为1-10的地图底图(Mapbox的底图),则首先需要点击这个链接注册一个mapbox的账号,mapbox上注册成为开发者,并获取到一个mapbox token。 这个链接介绍了mapbox token的作用。
如果你已经得到了mapbox token,可以用以下代码为TransBigData设置mapbox token(只需要设置一次,后面重新打开python也不需要再重新设置了):
import transbigdata as tbd
#用下面代码设置你的mapboxtoken,如果不设置,则只能使用style=0的地图底图
tbd.set_mapboxtoken('pk.eyxxxxxxxxxx.xxxxxxxxx')#必须在里面设置你申请的token,直接复制此行代码无效!

另外还需要设置一个地图底图的存储位置,下一次显示同一个位置时,地图会从本地读取加载。

#设置你的地图底图存储路径
#如果你是linux或者mac系统,路径是这么写,注意最后有一个反斜杠
tbd.set_imgsavepath(r'/Users/xxxx/xxxx/')
#如果是windows系统,路径这么写,最后注意要两个斜杠以防转义
tbd.set_imgsavepath(r'E:\pythonscript\xxx\\')

设置好后,下次绘制底图时,会在你设置的路径下创建一个tileimg文件夹,底图都放在里面 尝试一下下面的代码,看看能否成功绘制底图

#定义显示范围范围
bounds = [113.6,22.4,114.8,22.9]
#创建图框
import matplotlib.pyplot as plt
fig =plt.figure(1,(8,8),dpi=250)
ax =plt.subplot(111)
plt.sca(ax)
#添加地图底图
tbd.plot_map(plt,bounds,zoom = 11,style = 4)
#添加比例尺和指北针
tbd.plotscale(ax,bounds = bounds,textsize = 10,compasssize = 1,accuracy = 2000,rect = [0.06,0.03],zorder = 10)
plt.axis('off')
plt.xlim(bounds[0],bounds[2])
plt.ylim(bounds[1],bounds[3])
plt.show()
_images/output_6_0.png

底图绘制

transbigdata.plot_map(plt, bounds, zoom='auto', style=0, printlog=False)

添加地图底图

参数
  • plt (matplotlib.pyplot) – matplotlib的pyplot对象指定绘图位置

  • bounds (List) – 底图的绘图边界,[lon1,lat1,lon2,lat2] (WGS84坐标系) 其中,lon1,lat1是左下角坐标,lon2,lat2是右上角坐标

  • zoom (number) – 底图的放大等级,默认为auto自动选取。越大越精细,加载的时间也就越久,一般单个城市大小的范围,这个参数选取12到16之间

  • printlog (bool) – 是否显示日志

  • style (number) – 地图底图的样式,可选1-10,对应分别如下(需要plot_map包在0.3.3版本以上)

实际案例

#设定显示范围
bounds = [lon1,lat1,lon2,lat2]
tbd.plot_map(plt,bounds,zoom = 12,style = 4)

底图样式1:streets

_images/1.png

底图样式2:outdoors

_images/2.png

底图样式3:satellite

_images/3.png

底图样式4:light

_images/4.png

底图样式5:dark

_images/5.png

底图样式6:light-ch(中文)

_images/6.png

底图样式7:ice creem

_images/7.png

底图样式8:night

_images/8.png

底图样式9:terrain

_images/9.png

底图样式10:basic blue

_images/10.png

底图样式11:light(无标注)

_images/11.png

底图样式12:dark(无标注)

_images/12.png

自定义样式:0.4.8以上版本支持

需要传入mapbox的样式代码:

tbd.plot_map(plt,bounds,zoom = 11,style = 'mapbox://styles/ni1o1/cl38pljx0006r14qp7ioy7gcc')

指北针和比例尺

transbigdata.plotscale(ax, bounds, textcolor='k', textsize=8, compasssize=1, accuracy='auto', rect=[0.1, 0.1], unit='KM', style=1, **kwargs)

为底图添加指北针和比例尺

参数
  • bounds (List) – 底图的绘图边界,[lon1,lat1,lon2,lat2] (WGS84坐标系) 其中,lon1,lat1是左下角坐标,lon2,lat2是右上角坐标

  • textsize (number) – 标注文字大小

  • compasssize (number) – 标注的指北针大小

  • accuracy (number) – 标注比例尺的长度(米)

  • unit (str) – ‘KM’,’km’,’M’,’m’ 比例尺的单位

  • style (number) – 1或2,比例尺样式

  • rect (List) – 比例尺在图中的大致位置,如[0.9,0.9]则在右上角

实际案例

tbd.plotscale(ax,bounds = bounds,textsize = 10,compasssize = 1,accuracy = 2000,rect = [0.06,0.03])