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 相关文章推荐
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
回调函数的意义以及python实现实例
Jun 20 Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
python tornado微信开发入门代码
Aug 24 Python
Django实现学员管理系统
Feb 26 Python
wxPython实现文本框基础组件
Nov 18 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
opencv之为图像添加边界的方法示例
Dec 26 Python
Python正则表达式如何匹配中文
May 27 Python
Python合并多张图片成PDF
Jun 09 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运行速度的一些小技巧分享
2012/07/03 PHP
php cookie 详解使用实例
2016/11/03 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP实现微信对账单处理
2018/10/01 PHP
js实现的切换面板实例代码
2013/06/17 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
js实现日历与定时器
2017/02/22 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
[48:00]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第二场 11.04
2020/11/04 DOTA
使用Python对MySQL数据操作
2017/04/06 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
详解Python 切片语法
2019/06/10 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
Django bulk_create()、update()与数据库事务的效率对比分析
2020/05/15 Python
通过实例解析python and和or使用方法
2020/11/14 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
工程预算与管理应届生求职信
2013/10/06 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
商业用房租赁协议书
2014/10/13 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
python可视化之颜色映射详解
2021/09/15 Python
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python