20210511业务总结 利用folium调用多风格底图

做分析图的时候经常需要用到不同风格的底图,但是当前这方面工具在国内国外、地图样式上总是不尽如人意。下面是我找到最快捷好用的解决方案:

首先推荐一个底图合集:http://openwhatevermap.xyz

import folium

''
1、设置经纬度
高德坐标拾取器(中国) https://lbs.amap.com/console/show/picker
谷歌地图邮件坐标(外国)https://www.google.com/maps
伦敦:51.51061318975203, -0.12632461453674496
上海:121.473658,31.230378  /  31.23292205448941, 121.48930834858014
'''
latitude = 31.213
longitude = 121.445
'''
2、选择底图
黑白风 http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png
水彩风 http://{s}.tile.stamen.com/watercolor/{z}/{x}/{y}.jpg
'''
map = folium.Map(location=[latitude, longitude], zoom_start=12,
                 tiles='http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',attr='default')

如果需要的话,还可以做一些简单的shp数据可视化,以及热力图的分析:

import pandas as pd
from folium.plugins import HeatMap

'''
3、读取数据并添加到地图
'''
cdata = pd.read_excel('./上海文化点/文旅局汇总.xlsx')
spots = folium.map.FeatureGroup()
df1 = cdata[cdata['类型']=='博物馆']
df2 = cdata[cdata['类型']=='图书馆']
df3 = cdata[cdata['类型']=='美术馆']
df4 = cdata[cdata['类型']=='剧院剧场']
for lat, lng, in zip(df1.lat, df1.lng):
    spots.add_child(
        folium.CircleMarker(
            [lng, lat],
            radius=5,
            color='white',
            fill=True,
            fill_color='red',
            fill_opacity=0.4,
        )
    )
for lat, lng, in zip(df2.lat, df2.lng):
    spots.add_child(
        folium.CircleMarker(
            [lng, lat],
            radius=5,
            color='white',
            fill=True,
            fill_color='blue',
            fill_opacity=0.4,
        )
    )
for lat, lng, in zip(df3.lat, df3.lng):
    spots.add_child(
        folium.CircleMarker(
            [lng, lat],
            radius=5,
            color='white',
            fill=True,
            fill_color='green',
            fill_opacity=0.4,
        )
    )
for lat, lng, in zip(df4.lat, df4.lng):
    spots.add_child(
        folium.CircleMarker(
            [lng, lat],
            radius=5,
            color='white',
            fill=True,
            fill_color='orange',
            fill_opacity=0.4,
        )
    )
heatdata = cdata[['lat_wgs','lng_wgs']].values.tolist()
HeatMap(heatdata).add_to(map)

map.add_child(spots)


最后保存为html格式,用浏览器就可以打开啦,地图可以放大缩小,样式从底图合集里看哦

'''
4、保存网页
'''
map.save('./maparea.html')

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值