Python使用folium excel绘制point


Posted in Python onJanuary 03, 2019

使用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")

成果展示

Python使用folium excel绘制point

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
Python中处理时间的几种方法小结
Apr 09 Python
python监控文件并且发送告警邮件
Jun 21 Python
django框架自定义用户表操作示例
Aug 07 Python
Python微医挂号网医生数据抓取
Jan 24 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
python数据预处理 :数据抽样解析
Feb 24 Python
python程序文件扩展名知识点详解
Feb 27 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
django数据模型中null和blank的区别说明
Sep 02 Python
Python获取航线信息并且制作成图的讲解
Jan 03 #Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 #Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 #Python
python 调用有道api接口的方法
Jan 03 #Python
对python调用RPC接口的实例详解
Jan 03 #Python
Python图像的增强处理操作示例【基于ImageEnhance类】
Jan 03 #Python
Python多图片合并PDF的方法
Jan 03 #Python
You might like
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
asp批量修改记录的代码
2008/06/25 Javascript
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
python中json格式数据输出的简单实现方法
2016/10/31 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
python 修改本地网络配置的方法
2019/08/14 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
Django发送邮件功能实例详解
2019/09/02 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
iPython pylab模式启动方式
2020/04/24 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
EntityManager都有哪些方法
2013/11/01 面试题
工商管理专业实习生自我鉴定
2013/09/29 职场文书
护理职业生涯规划书
2014/01/24 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
Redis入门基础常用操作命令整理
2022/06/01 Redis