1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Python Folium 绘制交互式地图

Python Folium 绘制交互式地图

时间:2019-09-27 06:38:14

相关推荐

Python Folium 绘制交互式地图

/WangZhangyu/Interactive_map

Folium

folium是python非常好用的交互式地图工具包,今天我们用folium来绘制简单精美的地震分布热力图。

我们选择川滇部分地区,蓝色方框圈定的区域进行绘制。橙色圆圈代表的是AETA 观测台站,黑色圆圈代表的是地震(ML3.5以上),黑色圆圈越大,震级越大。绘制地震分布的热力图,我们可以非常清晰的看到地震的集中分布情况。

绘制结果以.html的格式保存,我们可以对地图随意的放大缩小,当鼠标停留在黑色圆圈(地震)上时,地图会显示地震的发震时间和震级信息;当鼠标停留在橙色圆圈(台站)上时,会显示对应的台站名称。

安装Folium 库

pip install folium

导入必要的库

import foliumimport pandas as pdimport webbrowserfrom folium.plugins import HeatMap

加载AETA台站的信息并显示

cdata = pd.read_csv('StationInfo.csv')for lat, lon,label in zip(cdata.Latitude, cdata.Longitude, cdata.Title):incidents.add_child(folium.CircleMarker([lat, lon],radius=7, color='yellow',fill=True,fill_color='red',fill_opacity=0.4,tooltip=label))

加载并绘制地震目录信息

eq = pd.read_csv('eqlst.csv')for lat, lon, mag, time in zip(eq.Latitude, eq.Longitude, eq.Magnitude,eq.Time):incidents.add_child([图片上传中...(catalog.jpg-6f9441-1618157345666-0)]folium.CircleMarker([lat, lon],radius=(mag-3)*4, color='black',fill=True,fill_color='black',fill_opacity=0.5,weight = 0.001,stroke = False,tooltip= '%s ML %.f' % (time,mag)))

绘制地震分布热力图

heatdata = eq[['Latitude','Longitude','Magnitude']].values.tolist()HeatMap(heatdata).add_to(incidents)

完整代码

"""Created on Sun Apr 11 20:40:32 @author: Zhangyu Wang"""import foliumimport pandas as pdimport webbrowserfrom folium.plugins import HeatMap# Chuandain latitude and longitudelatitude = 28longitude = 102.5# instantiate a feature group for the incidents in the dataframeincidents = folium.map.FeatureGroup()# read stations cdata = pd.read_csv('StationInfo.csv')for lat, lon,label in zip(cdata.Latitude, cdata.Longitude, cdata.Title):incidents.add_child(folium.CircleMarker([lat, lon],radius=7, color='yellow',fill=True,fill_color='red',fill_opacity=0.4,tooltip=label))# read catalogeq = pd.read_csv('eqlst.csv')for lat, lon, mag, time in zip(eq.Latitude, eq.Longitude, eq.Magnitude,eq.Time):incidents.add_child(folium.CircleMarker([lat, lon],radius=(mag-3)*4, color='black',fill=True,fill_color='black',fill_opacity=0.5,weight = 0.001,stroke = False,tooltip= '%s ML %.f' % (time,mag)))# catalog heatmapheatdata = eq[['Latitude','Longitude','Magnitude']].values.tolist()HeatMap(heatdata).add_to(incidents)# add a single earthquakeincidents.add_child(folium.Marker([28.9, 103.3],icon=folium.Icon(color='red'), tooltip='M = 4.0'))# add area borderls = folium.PolyLine(locations=[[22,98],[22,107],[34,107],[34,98],[22,98]],color='blue')ls.add_to(incidents)# add incidents to mapmy_map = folium.Map(location=[latitude, longitude], zoom_start=6)my_map.add_child(incidents)# add latitude and longitude in the map when clickmy_map.add_child(folium.LatLngPopup())# save mapmy_map.save('Chuandian_aeta.html')webbrowser.open('Chuandian_aeta.html')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。