鐵人賽2019 Day13 台鐵意外事件與folium練習-繪圖

昨天我們已經整合了台鐵路線與對話的資料
今天就把圖畫完吧!

首先,
再次看看昨天的成果

1
train_lines_talk

https://ithelp.ithome.com.tw/upload/images/20181028/201078166JDsBw1Y1c.png

有了這樣的資料,可以開始畫圖了
第一種畫法我們使用circlemarker
我們以點的方式來呈現資訊

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

import folium
m = folium.Map((25.01743512170683,121.9402276726103),zoom_start=13)
for idx,row in train_lines_talk.iterrows():
folium.CircleMarker(
location=(list(row['geometry'].coords)[0][1],list(row['geometry'].coords)[0][0]),
radius=20,
popup=row['text'],
color='#3186cc',
fill=True,
fill_color='#3186cc'
).add_to(m)


m

https://ithelp.ithome.com.tw/upload/images/20181028/201078165DyRzjrZQN.png

為了更清楚呈現資訊,把路線的資訊加進來

1
2
3
4
folium.GeoJson(
train_lines.to_json(),
name='geojson').add_to(m)
m

https://ithelp.ithome.com.tw/upload/images/20181028/201078168bzIK8NICo.png

最後,我們試著把時間資料加進來

並使用TimestampedGeoJson這個外掛

要先把我們的資料整合成TimestampedGeoJson

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
features = [
{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': list(row['geometry'].coords)[0],
},
'properties': {
'times': ['2018-10-21T'+row['time'][0],'2018-10-21T'+row['time'][1]],
'talk': row['text'],
'location':row['location'],

}
}
for idx,row in train_lines_talk.iterrows()
]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

import folium
m = folium.Map((25.01743512170683,121.9402276726103),zoom_start=13)

folium.GeoJson(
train_lines.to_json(),
name='geojson').add_to(m)

plugins.TimestampedGeoJson({
'type': 'FeatureCollection',
'features': features,

}, period='PT1M', add_last_point=True).add_to(m)

m

https://ithelp.ithome.com.tw/upload/images/20181028/201078169ZyYVVd0VR.png
完成!