重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了Python使用folium excel绘制point的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
目前创新互联已为1000+的企业提供了网站建设、域名、网络空间、网站托管、企业网站设计、大兴网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。使用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( 'name:{} x:{} y:{}'.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的方法”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!