【python】folium包使用方法,地图绘制
包含下面功能:
- 绘制地图
- 添加标记点
- 画线
- 获取经纬度
- 点击放置标记
- 热力图
- 聚类
- 边界线
- 保存到本地
1. 绘制地图
import folium
world_map = folium.Map()
China_map = folium.Map(location=[35.3, 100.6], zoom_start=4)
city_map = folium.Map(location=[39.93, 116.40], zoom_start=10)
Map——地图背景
location: 经纬度
zoom_start: 地图缩放等级
control_scale: 是否显示缩放比例,bool型
width 地图的宽度 , 默认’100%’ , 格式为 ‘xx%’
height 地图的高度 , 默认’100%’ , 格式为 ‘xx%’
tiles 地图风格 :
‘OpenStreetMap’ : 默认
‘Stamen Terrain’ : 带有地形与海拔
’Stamen Toner’ : 纯黑白
’Stamen Watercolor’ : 类似卡通涂鸦风格
’CartoDB positron’ : 浅白色简约 , 全英文
’CartoDB dark_matter’ : 黑色简约
省市经纬度网址:
https://examplecode.cn/2018/06/01/china-cities-geo/
https://github.com/siliushi/geocoord
2. 添加标记点
Marker——添加标记点参数
location:经纬度
popup 点击这个标记之后显示的文字
color 这个标记的颜色
icon_color 这个标记的icon的颜色
icon 这个标记的符号 , 符号见"https://blog.csdn.net/qq_44590230/article/details/122972941"
folium.Marker(location=[39.95, 115.33],
popup='Mt. Hood Meadows',
icon=folium.Icon(icon='cloud')
).add_to(world_map)
3. 画线
CircleMarker——圆形标记
location: 经纬度
radius:圆形半径。50中等大小
popup:这个地点的名字
color:颜色
fill:是否填充
fill_color:填充颜色
folium.CircleMarker(location=(39.93, 116.38),
radius=50,
popup='Laurel hurst Park',
color='#3186cc',
fill=True,
fill_color='#3186cc'
).add_to(world_map)
4. 获取经纬度
GeoJson——多边形标记
data:{}
type:"Polygon"(即多边形)
coordinates:多边形的顶点坐标
folium.GeoJson(data={"type": "Polygon", "coordinates": [[[100.0, 0.0], [101.0, 0.0], [102.0, 1]]]}).add_to(world_map)
5. 点击放置标记
PolyLine——画线
location:点的位置。可以有多个,会被挨个连线。
color:线的颜色
ls = folium.PolyLine(locations=[[32.03, 118.85], [32.0246, 118.8518]],
color='blue').add_to(world_map)
"""点击获取经纬度"""
world_map.add_child(folium.LatLngPopup())
"""点击即放置标记"""
world_map.add_child(folium.ClickForMarker(popup='Waypoint'))
6. 热力图
HeatMap——热力图
data:
是点的集合。每行是一个点的数据,即[经度,纬度,热力值]
注:热力值取值范围为[0,1]
from folium.plugins import HeatMap
data = []
HeatMap(data).add_to(world_map)
7. 聚类
聚类:如果需要使用聚类,要先聚类marker_cluster,再添加点标记。
data:是点的集合。每行是一个点的数据,即[经度,纬度,名字]
from folium.plugins import MarkerCluster
marker_cluster = MarkerCluster().add_to(world_map)
data = []
for lat, lng, label in data:
folium.Marker(
location=[lat, lng],
icon=None,
popup=label,
).add_to(marker_cluster)
world_map.add_child(marker_cluster)
8. 边界线
import json
import requests
path = r"C:\Users\Administrator\Desktop\China.json"
with open(path, encoding="utf-8") as f:
states = json.load(f)
folium.GeoJson(
states,
style_function=lambda feature: {
'fillColor': '#ffff00',
'color': 'black',
'weight': 2,
'dashArray': '5, 5'
}
).add_to(China_map)
9. 保存到本地
path = r"C:\Users\Administrator\Desktop\a.html"
world_map.save(path)