iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 13
3
AI & Data

30天精通GIS資料分析-使用Python系列 第 13

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

前兩天漫長的前處理,我們已經整合了台鐵路線與對話的資料,今天就把圖畫完吧!

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

train_lines_talk

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

有了這樣的資料,可以開始畫圖了

folium放上點與線

第一種畫法我們使用circlemarker
我們以點的方式來呈現資訊


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

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

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

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

加入時間序列地圖

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

並使用TimestampedGeoJson這個外掛

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

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()
]

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
完成!


上一篇
Day12 台鐵意外事件與folium練習(續篇)
下一篇
Day14 PostGIS的安裝
系列文
30天精通GIS資料分析-使用Python30

尚未有邦友留言

立即登入留言