Python:地理地图folium标记物icon,圆圈,圆形,热力图,经纬度点之间的线绘制

python:地理地图folium标记物icon,圆圈,圆形,热力图,经纬度点之间的线绘制
 

import webbrowser as wb
import folium
from folium.plugins import HeatMap, MiniMap, MarkerCluster
import numpy as np


# 绘制热力图
def draw_heatmap(map):
    data = (
            np.random.normal(size=(100, 3)) *
            np.array([[1, 1, 1]]) +
            np.array([[30, 104, 1]])
    ).tolist()

    HeatMap(data).add_to(map)


# 增加小地图
def draw_minimap(map):
    minimap = MiniMap(toggle_display=True,
                      tile_layer='Stamen Watercolor',
                      position='topleft',
                      width=100,
                      height=100)
    map.add_child(minimap)


# 在地图上绘制无边框圆形,填充颜色
def draw_CircleMarker(loc, radius, map):
    folium.CircleMarker(
        location=loc,
        radius=radius,
        color="cornflowerblue",
        stroke=False,
        fill=True,
        fill_opacity=0.6,
        opacity=1,
        popup="{} 像素".format(radius),
        tooltip=str(loc),
    ).add_to(map)


# 在地图上绘制一个小Info标记物
def draw_icon(map, loc):
    mk = folium.features.Marker(loc)
    pp = folium.Popup(str(loc))
    ic = folium.features.Icon(color="blue")
    mk.add_child(ic)
    mk.add_child(pp)
    map.add_child(mk)


# 在地图上绘制一个圆圈
def draw_Circle(map, loc, radius):
    folium.CircleMarker(
        location=loc,
        radius=radius,
        color="red",
        weight=3,
        fill=False,
        fill_opacity=0.6,
        opacity=1,
    ).add_to(map)


# 绘制可缩放的标记物数字指示
def draw_MarkerCluster(map, loc):
    marker_cluster = MarkerCluster().add_to(map)

    folium.Marker(
        location=loc,
        popup="弹窗消息1",
        icon=folium.Icon(color="green", icon="ok-sign"),
    ).add_to(marker_cluster)

    folium.Marker(
        location=loc,
        popup="弹窗消息2",
        icon=folium.Icon(color="red", icon="remove-sign"),
    ).add_to(marker_cluster)

    folium.Marker(
        location=loc,
        popup="弹窗消息3",
        icon=None,
    ).add_to(marker_cluster)


# 画线
def draw_line(map, loc1, loc2):
    kw = {"opacity": 1.0, "weight": 6}
    folium.PolyLine(
        smooth_factor=10,
        locations=[loc1, loc2],
        color="red",
        tooltip="连线两个经纬度点",
        **kw,
    ).add_to(map)


def draw_lines(map, coordinates):
    folium.PolyLine(
        smooth_factor=50,
        locations=coordinates,
        color="#FF0000",
        weight=2,
        tooltip="连接多个城市之间的线",
    ).add_to(map)

    folium.PolyLine(
        smooth_factor=50,
        locations=coordinates,
        color="grey",
        tooltip="灰色的线条",
        weight=5,
    ).add_to(map)


if __name__ == '__main__':

    latlngs = [[39.929986, 116.395645],  # 北京中心点经纬度
               [31.249162, 121.487899],  # 上海中心点经纬度
               [23.120049, 113.30765],  # 广州中心点经纬度
               [22.546054, 114.025974],  # 深圳中心点经纬度
               [30.679943, 104.067923]]  # 成都中心点经纬度

    map = folium.Map([30., 104.],  # 地图中心
                     tiles='stamentoner',  # stamentoner,Stamen Watercolor,OpenStreetMap'
                     zoom_start=6)

    draw_heatmap(map)
    draw_minimap(map)
    draw_CircleMarker(loc=latlngs[0], radius=20, map=map)
    draw_MarkerCluster(map, latlngs[1])
    draw_Circle(map, latlngs[2], radius=15)
    draw_icon(map, latlngs[3])
    draw_line(map, latlngs[0], latlngs[4])

    draw_lines(map, latlngs)

    map.save('m.html')
    wb.open('m.html')

代码运行后如同所示:

 

更多folium示例请查阅  https://nbviewer.jupyter.org/github/python-visualization/folium/tree/master/examples/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值