Python 里最强的地图绘制神器

今天给大家介绍一个非常 NB 的Python 库,专门用来绘制地图的,它叫 Folium 。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:883888997

1. Folium简介

Folium是一个基于leaflet.js的Python地图库,其中,Leaflet是一个非常轻的前端地图可视化库。即可以使用Python语言调用Leaflet的地图可视化能力。它不单单可以在地图上展示数据的分布图,还可以使用Vincent/Vega在地图上加以标记。Folium可以让你用Python强大生态系统来处理数据,然后用Leaflet地图来展示。

Folium中有许多来自OpenStreetMap、MapQuest Open、MapQuestOpen Aerial、Mapbox和Stamen的内建地图元件,而且支持使用Mapbox或Cloudmade的API密钥来定制个性化的地图元件。Folium支持GeoJSON和TopoJSON两种文件格式的叠加,也可以将数据连接到这两种文件格式的叠加层,最后可使用color-brewer配色方案创建分布图。

2. Folium的使用

地图的生成
在这里插入图片描述
folium.folium.Map()详解

folium.folium.Map(location=None, width='100%', height='100%', left='0%', top='0%', position='relative', tiles='OpenStreetMap', attr=None, min_zoom=0, max_zoom=18, zoom_start=10, min_lat=-90, max_lat=90, min_lon=-180, max_lon=180, max_bounds=False, crs='EPSG3857', control_scale=False, prefer_canvas=False, no_touch=False, disable_3d=False, png_enabled=False, zoom_control=True, **kwargs)

参数说明:

location (tuple or list, default None):纬度和经度

width (pixel int or percentage string (default: ‘100%’)):地图宽度

height (pixel int or percentage string (default: ‘100%’)):地图高度

tiles (str, default ‘OpenStreetMap’) :瓦片名称或使用TileLayer classass.

min_zoom (int, default 0):地图可缩放的最小级别

max_zoom (int, default 18):地图可缩放的最大级别

zoom_start (int, default 10) :地图的初始缩放级别

attr (string, default None):当使用自定义瓦片时,传入自定义瓦片的名词

crs (str, default ‘EPSG3857’) :投影坐标系标识

EPSG3857: Web墨卡托投影后的平面地图,坐标单位为米。大部分国外地图使用的时该标准。

EPSG4326: Web墨卡托投影后的平面地图,但仍然使用WGS84的经度、纬度表示坐标。

EPSG3395: 墨卡托投影,主要用于航海图

Simple: 简单的x,y匹配,用于自定义瓦片(比如游戏地图)

control_scale (bool, default False) :是否在地图上显示缩放标尺

prefer_canvas (bool, default False):强制使用Canvas渲染

no_touch (bool, default False) :是否允许触摸事件

disable_3d (bool, default False) :强制使用CSS 3D效果

zoom_control (bool, default True) :是否要限制zoom操作

**kwargs:Leaflets地图类的其他参数: https://leafletjs.com/reference-1.5.1.html#map

“tiles”参数可选值:

“OpenStreetMap”

“Mapbox Bright” (Limited levels of zoom for free tiles)

“Mapbox Control Room” (Limited levels of zoom for free tiles)

“Stamen” (Terrain, Toner, and Watercolor)

“Cloudmade” (Must pass API key)

“Mapbox” (Must pass API key)

“CartoDB” (positron and dark_matter)

“tiles”的自定义设置:
在这里插入图片描述
地球上同一个地理位置的经纬度,在不同的坐标系中,会有少量偏移,国内目前常见的坐标系主要分为三种:

地球坐标系——WGS84:常见于GPS设备,Google地图等国际标准的坐标体系。

火星坐标系——GCJ-02:中国国内使用的被强制加密后的坐标体系,高德坐标就属于该种坐标体系。

百度坐标系——BD-09:百度地图所使用的坐标体系,是在火星坐标系的基础上又进行了一次加密处理。

所以在设置“tiles”时需要考虑目前手中得经纬度属于那种坐标系。

由于投影坐标系中没有GCJ-02和BD-09对应的标识,所以在自定义瓦片时主要经纬度能匹配上,crs中的设置可保持不变。更多详情介绍请看:瓦片坐标系学习

如果需要将地图保存,只需执行:m.save(“map.html”) 即可。

添加点、线、面要素
添加点

import folium
m = folium.Map(location=[39.917834, 116.397036], zoom_start=13, width='50%',height='50%', zoom_control='False',
               tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}&ltype=6',attr='AutoNavi')

tooltip ='请点击我查看该点信息'
folium.Marker([39.937282,116.403187], popup='南锣鼓巷'
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值