這篇文章主要介紹了Python使用folium excel繪制point的方法,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
目前創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、大興網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。使用folium excel 繪制point
制作內(nèi)容
根據(jù)氣象臺資料獲得的點(diǎn)進(jìn)行繪制
對一個特殊的點(diǎn)做特別的標(biāo)注
數(shù)據(jù)來源
#!/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): """ 度分轉(zhuǎn)換成十進(jìn)制 :param x: float :return: integer float """ integer = int(x) integer = integer + (x - integer) * 1.66666667 return integer def distance(origin, destination): """ 經(jīng)緯度計(jì)算兩點(diǎn)距離 :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 # 數(shù)據(jù)準(zhǔn)備 data = pd.read_excel('SURF_CHN_MUL_HOR_STATION.xlsx') # 修改成十進(jìn)制 以及保留1一位小數(shù) data['經(jīng)度'] = data['經(jīng)度'].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('氣象站信息十進(jìn)制.csv') data["距離杭州(km)"] = data.apply(lambda r: distance((r['緯度'], r['經(jīng)度']), (30.14, 120.1)), axis=1) # print(data[data['距離杭州(km)']<100].sort_values('距離杭州(km)')) # 選擇除了杭州以外的內(nèi)容 selected_st = data[data['距離杭州(km)'] < 100].sort_values('距離杭州(km)').iloc[1::] # 展示地圖 # 提取數(shù)據(jù) hzdata = data.ix[data['站名'] == '杭州', ['站名', '緯度', '經(jīng)度']] myMap = folium.Map(location=[hzdata.iloc[0]['緯度'], hzdata.iloc[0]['經(jīng)度']]) 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]['經(jīng)度']], 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]['經(jīng)度'] 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")
成果展示
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python使用folium excel繪制point的方法”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!