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

python:folium库实现地图可视化

程序员文章站 2024-02-13 17:49:10
...

python:folium库实现地图可视化

folium库是一个python地图可视化的库,可以实现一下复杂的功能

安装库

首先看一下是否安装了这个库

import folium

没有的话可以用conda安装

conda install folium -c conda-forge

没有Anaconda的话可以使用pip

pip install folium

简单使用

通过下面的代码,我们可以看到我们想要的经纬度的地图,作者在这里写了四个tiles,通过修改tiles可以修改使用不同的地图,通过修改location可以修改不同的中心点经纬度。

import  folium
import  webbrowser

## 初始化地图
m = folium.Map(
        location= [31.2389, 121.4992],
        zoom_start=12,
        # tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
        tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
        # tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
        # tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
        attr='default'
    )

m.save('f1.html')
webbrowser.open('f1.html')

通过添加几行代码,我们可以添加一个点到地图上,第一个列表是经纬度,popup是这个点弹出的信息,color决定的标记的这个点的颜色,icon可以选择点上的不同信息

import  folium
import  webbrowser

## 初始化地图
m = folium.Map(
        location= [31.2389, 121.4992],
        zoom_start=12,
        # tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
        tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
        # tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
        # tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
        attr='default'
    )

# 添加marker到地图
folium.Marker([31.2453,121.4857], popup='123', tooltip='tooltip',icon=folium.Icon(color='red')).add_to(m)
folium.Marker([31.2418,121.4953], popup='456', tooltip='tooltip',icon=folium.Icon(color='green',icon='info-sign')).add_to(m)


m.save('f1.html')
webbrowser.open('f1.html')

通过另外的几行代码,我们可以画一个圆到地图上

import  folium
import  webbrowser

## 初始化地图,指定上海市
m = folium.Map(
        location= [31.2389, 121.4992],
        zoom_start=12,
        # tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
        tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
        # tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
        # tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
        attr='default'
    )

# 添加marker到地图
folium.Marker([31.2453,121.4857], popup='123', tooltip='tooltip',icon=folium.Icon(color='red')).add_to(m)
folium.Marker([31.2418,121.4953], popup='456', tooltip='tooltip',icon=folium.Icon(color='green',icon='info-sign')).add_to(m)

#标记一个空心的圈
folium.Circle(
    location=[31.2453,121.4857], #圆圈中心的经纬度
    radius=10000, # 圆的半径 单位为米(m)
    color='crimson', #圈的颜色
    popup='popup',
    fill=False #是否填充
).add_to(m)

#标记一个实心圆
folium.CircleMarker(
    location=[31.2453,121.4857],
    radius=100,
    popup='popup',
    color='#DC143C', #圈的颜色
    fill=True, #是否填充
    fill_color='#6495ED' #填充颜色
).add_to(m)

m.save('f1.html')
webbrowser.open('f1.html')

高级操作

通过folium我们还可以绘制热力图

import  folium
import  webbrowser

## 初始化地图,指定上海市
m = folium.Map(
        location= [48.269596,-122.200035],
        zoom_start=12,
        # tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
        tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
        # tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
        # tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
        attr='default'
    )
    
'''
绘制热力图
'''
Loc_hot = Loc_hot = [
   [48.269596,-122.200035],
   [48.269596,-122.200035],
   [48.269596,-122.180035],
   [48.339596,-122.260035],
   [48.339596,-122.220035],
   [48.409596,-122.300035]
   ]
folium.plugins.HeatMap(Loc_hot).add_to(m)

m.save('f1.html')
webbrowser.open('f1.html')