Python使用folium excel绘制point
作者:staHuri 时间:2021-10-07 08:23:17
使用folium excel 绘制point
制作内容
根据气象台资料获得的点进行绘制
对一个特殊的点做特别的标注
数据来源
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : map03.py
# @Author: huifer
# @Date : 2018/6/28
import pandas as pd
import math
import folium
def degree_conversion_decimal(x):
"""
度分转换成十进制
:param x: float
:return: integer float
"""
integer = int(x)
integer = integer + (x - integer) * 1.66666667
return integer
def distance(origin, destination):
"""
经纬度计算两点距离
:param origin:
:param destination:
:return:
"""
lat1, lon1 = origin
lat2, lon2 = destination
radius = 6371 # km
dlat = math.radians(lat2 - lat1)
dlon = math.radians(lon2 - lon1)
a = math.sin(dlat / 2) * math.sin(dlat / 2) + math.cos(math.radians(lat1)) \
* math.cos(math.radians(lat2)) * math.sin(dlon / 2) * math.sin(dlon / 2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
d = radius * c
return d
# 数据准备
data = pd.read_excel('SURF_CHN_MUL_HOR_STATION.xlsx')
# 修改成十进制 以及保留1一位小数
data['经度'] = data['经度'].apply(degree_conversion_decimal)
data['纬度'] = data['纬度'].apply(degree_conversion_decimal)
data['观测场拔海高度(米)'] = data['观测场拔海高度(米)'].apply(lambda x: round(x, 1))
data['气压传感器拔海高度(米)'] = data['气压传感器拔海高度(米)'].apply(lambda x: round(x, 1))
# 保存新的文件
# data.to_csv('气象站信息十进制.csv')
data["距离杭州(km)"] = data.apply(lambda r: distance((r['纬度'], r['经度']), (30.14, 120.1)), axis=1)
# print(data[data['距离杭州(km)']<100].sort_values('距离杭州(km)'))
# 选择除了杭州以外的内容
selected_st = data[data['距离杭州(km)'] < 100].sort_values('距离杭州(km)').iloc[1::]
# 展示地图
# 提取数据
hzdata = data.ix[data['站名'] == '杭州', ['站名', '纬度', '经度']]
myMap = folium.Map(location=[hzdata.iloc[0]['纬度'], hzdata.iloc[0]['经度']])
icon_hz = dict(
prefix='fa', color='red', icon_color='darkred', icon='cny'
)
icon = folium.Icon(**icon_hz)
folium.Marker(
location=[hzdata.iloc[0]['纬度'], hzdata.iloc[0]['经度']],
popup="杭州",
icon=icon
).add_to(myMap)
for i in range(len(selected_st)):
name = selected_st.iloc[i]['站名']
x = selected_st.iloc[i]['纬度']
y = selected_st.iloc[i]['经度']
test = folium.Html(
'<b>name:{}</b></br> <b>x:{}</b></br> <b>y:{}</b></br>'.format(name, x, y),
script=True)
popup = folium.Popup(test, max_width=2650)
folium.Marker(
location=[x, y],
popup=popup,
).add_to(myMap)
myMap.save("test.html")
成果展示
来源:https://blog.csdn.net/staHuri/article/details/80842679
标签:python,folium,excel,point
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
关于go-zero单体服务使用泛型简化注册Handler路由的问题
2023-08-30 20:19:08
![](https://img.aspxhome.com/file/2023/7/101047_0s.png)
Python hashlib常见摘要算法详解
2023-07-29 20:04:09
基于Django用户认证系统详解
2023-04-13 15:35:13
Python中np.argmax()函数用法示例
2021-06-17 23:47:09
JavaScript中Infinity(无穷数)的使用和注意事项
2023-08-21 00:59:13
前端也应关注安全
2009-03-16 17:02:00
php fopen()函数案例详解
2023-07-16 22:21:26
python中的np.argmax() 返回最大值索引号
2022-08-07 14:22:57
![](https://img.aspxhome.com/file/2023/0/67860_0s.png)
Python 多线程,threading模块,创建子线程的两种方式示例
2021-06-29 15:49:32
关于django python manage.py startapp 应用名出错异常原因解析
2023-04-04 08:57:28
![](https://img.aspxhome.com/file/2023/4/64224_0s.png)
php获取qq用户昵称和在线状态(实例分析)
2023-11-14 11:19:22
python使用py2neo创建neo4j的节点和关系
2021-09-25 01:03:28
![](https://img.aspxhome.com/file/2023/1/71391_0s.png)
python星号(*)和双星号(**) 函数动态参数匹配及解包操作方法
2023-04-09 19:55:03
python中的sys模块和os模块
2021-07-06 00:43:17
![](https://img.aspxhome.com/file/2023/6/76836_0s.png)
如何取得刚添加的记录自动增加的ID?
2010-01-18 20:55:00
Python+requests+unittest执行接口自动化测试详情
2023-07-30 15:08:37
![](https://img.aspxhome.com/file/2023/5/65125_0s.png)
基于python3+OpenCV实现人脸和眼睛识别
2023-06-08 04:20:14
![](https://img.aspxhome.com/file/2023/7/66357_0s.jpg)
Python pandas 重命名索引和列名称的实现
2023-11-10 13:31:04
![](https://img.aspxhome.com/file/2023/3/64363_0s.png)
教你四种方法用来查看mysql版本
2009-06-28 11:13:00
Python使用迭代器捕获Generator返回值的方法
2022-11-25 09:40:35