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

成果展示

Python使用folium excel绘制point

来源:https://blog.csdn.net/staHuri/article/details/80842679

标签:python,folium,excel,point
0
投稿

猜你喜欢

  • python解析发往本机的数据包示例 (解析数据包)

    2021-05-24 13:42:49
  • asp fckeditor自定义上传文件的文件名

    2011-03-30 11:03:00
  • 面包屑设计

    2009-07-07 11:17:00
  • JavaScript中跨域问题的深入理解

    2024-04-28 09:41:55
  • Python使用Phantomjs截屏网页的方法

    2022-06-17 15:47:14
  • 如何更快更好地调试ASP程序代码?

    2009-11-23 20:13:00
  • MySQL数据库的索引原理与慢SQL优化的5大原则

    2024-01-18 14:46:01
  • Python中如何向函数传递列表

    2022-09-23 19:10:23
  • 基于Python OpenCV和 dlib实现眨眼检测

    2021-05-28 18:50:28
  • 详解Python中键盘鼠标的相关操作

    2021-04-17 23:39:02
  • python 字符串和整数的转换方法

    2023-10-11 02:31:42
  • pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)

    2021-07-02 16:53:41
  • SQL数据库操作类

    2009-01-14 16:26:00
  • 论文查重python文本相似性计算simhash源码

    2023-02-05 18:11:35
  • gchart:基于google图表API的jquery组件全攻略:1、入门

    2010-01-25 12:18:00
  • Python中规范定义命名空间的一些建议

    2022-05-16 17:05:24
  • Go位集合相关操作bitset库安装使用

    2024-05-09 14:57:22
  • Python中使用双下划线防止类属性被覆盖问题

    2021-05-04 04:02:44
  • python如何操作mysql

    2024-01-16 23:27:28
  • 通过Python编写一个简单登录功能过程解析

    2022-05-18 23:02:51
  • asp之家 网络编程 m.aspxhome.com