包含下面功能:

  1. 绘制地图
  2. 添加标记点
  3. 画线
  4. 获取经纬度
  5. 点击放置标记
  6. 热力图
  7. 聚类
  8. 边界线
  9. 保存到本地

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. 边界线

边界线下载:
http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=22.859177836173288&lng=113.68440594166313&zoom=12.5

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)
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐