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编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
python pcm音频添加头转成Wav格式文件的方法
Jan 09 Python
Python 分享10个PyCharm技巧
Jul 13 Python
Django 框架模型操作入门教程
Nov 05 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
windows下的pycharm安装及其设置中文菜单
Apr 23 Python
keras slice layer 层实现方式
Jun 11 Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 Python
Python plt 利用subplot 实现在一张画布同时画多张图
Feb 26 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
文件上传类
2006/10/09 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
js style动态设置table高度
2014/10/21 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
2016/04/15 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
RequireJs的使用详解
2017/02/19 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
python3实现猜数字游戏
2020/12/07 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
数据库连接池的工作原理
2012/09/26 面试题
init进程的作用
2015/08/20 面试题
关于毕业的广播稿
2014/01/10 职场文书
中级会计职业生涯规划范文
2014/01/16 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
给校长的建议书600字
2014/05/15 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang