欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

folium(leaflets)使用mapbox自定义地图样式

程序员文章站 2022-04-25 09:58:07
...

folium是一个做地图可视化的python包,但给定的地图样式(tiles)有限,本文介绍如何使用mapbox进行地图样式自定义。
folium底层用的是leaflets,一个做交互式地图的js库,OpenWhateverMap上有很多现成的各式各样的地图样式可供使用:
folium(leaflets)使用mapbox自定义地图样式
如果这些地图样式仍然不能满足你的要求,leaflets中可以使用mapbox的自定义地图样式。
mapbox是一个开源的地图平台,有点类似国内的百度地图开放平台等,可以内嵌到web、mobile、AR等平台,有兴趣之后可以细说。
其中mapbox studio可以进行地图的自定义,无论是世界地图还是自己设计的地图,这里只介绍对世界地图进行样式修改。
folium(leaflets)使用mapbox自定义地图样式
studio共分成三个部分:Datasets可上传地图的GeoJson,Tilesets对数据进行编辑,styles对地图样式进行修改,一般直接使用世界地图则新建styles并publish即可,样式设计很简单,指定每个元件的显示方式,如下进现实路网、地形等,并将颜色设为灰白。folium(leaflets)使用mapbox自定义地图样式
接下来的关键问题就是,如何将folium生成的地图文件的样式改掉(leaflets同样),打开生成的html文件,可以看到调用了L.tileLayer函数,该函数即定义地图样式

var tile_layer_9ab498aaf61f4e228c1d5037abe551d6 = L.tileLayer(
                'https://stamen-tiles-{s}.a.ssl.fastly.net/toner/{z}/{x}/{y}.png'
                {
  "attribution": null,
  "detectRetina": false,
  "maxZoom": 18,
  "minZoom": 1,
  "noWrap": true,
  "subdomains": "abc",
  "domains": "abc",
  "opacity": 1,
}

mapbox官方给出的方法是替换掉tileLayer中的连接:https://api.mapbox.com/styles/v1/YOUR_USERNAME/YOUR_STYLE_ID/tiles/256/{z}/{x}/{y}?access_token=YOUR_ACCESS_TOKEN
其中YOUR_USERNAME为账号名,YOUR_STYLE_ID为publish的style ID,YOUR_ACCESS_TOKEN为申请的mapbox的keys。

相关标签: python 地图