Skip to content

keplerでアーチプロットを実施します

ライブラリのインポート

python
import base64
import random
import pandas as pd
import numpy as np

from shapely import wkt
from shapely.geometry import Point

try:
  import geopandas as gpd
  import leafmap.kepler as leafmap
  from keplergl import KeplerGl
except ImportError:
  !pip install geopandas
  import geopandas as gpd
  !pip install keplergl
  !pip install git+https://github.com/giswqs/leafmap.git
  import leafmap.kepler as leafmap
  from keplergl import KeplerGl

データの読み込み

下記のページで作成したデータフレームを使用します。

駅の緯度経度を抽出

下記のコードで駅の緯度経度を抽出します。

python
# geometryに変換
# gdf_station_shinkansen["geometry"] = gdf_station_shinkansen["geometry"].apply(wkt.loads)
# latlonを抽出
gdf_station_shinkansen["lat"] = gdf_station_shinkansen["geometry"].apply(lambda row: row.y)
gdf_station_shinkansen["lon"] = gdf_station_shinkansen["geometry"].apply(lambda row: row.x)
gdf_station_shinkansen.head(2)

# N02_001	N02_002	N02_003	N02_004	N02_005	geometry	lat	lon
# 11	1	九州新幹線	九州旅客鉄道	出水	POINT (130.35838 32.08959)	32.089587	130.358378
# 11	1	九州新幹線	九州旅客鉄道	新八代	POINT (130.63503 32.51759)	32.517586	130.635033

トリップ数の追記

下記のコードでトリップ数をテキトーに追記します。

python
# Oの座標情報を追加
df_init = gdf_station_shinkansen[["N02_005", "lat", "lon"]].rename(columns={"N02_005":"init_station", "lon":"init_lon", "lat":"init_lat"})
df_init = df_init.reset_index(drop=True)
display(df_init.head(2))
# init_station	init_lat	init_lon
# 出水	32.089587	130.358378
# 新八代	32.517586	130.635033

# Dの座標情報を追加
df_term = gdf_station_shinkansen[["N02_005", "lat", "lon"]].rename(columns={"N02_005":"term_station", "lon":"term_lon", "lat":"term_lat"})
df_term = df_term.sample(frac=1).reset_index(drop=True)
display(df_term.head(2))
# term_station	term_lat	term_lon
# 三島	35.126710	138.909690
# 静岡	34.971706	138.389599

# ODで結合
df_merge = pd.concat([df_init, df_term], axis=1)
# トリップ数
df_merge["val"] = [random.randint(30, 100) for i in range(len(df_merge))]
display(df_merge.head(2))
# init_station	init_lat	init_lon	term_station	term_lat	term_lon	val
# 出水	32.089587	130.358378	三島	35.126710	138.909690	71
# 新八代	32.517586	130.635033	静岡	34.971706	138.389599	85

keplerで描画

python
# データを描画
map1 = KeplerGl(height=600)
map1.add_data(data=gdf_station_shinkansen, name='shinkansen')
map1.add_data(data=df_merge, name='trip_data')
map1

!(/image/kepler_arch.png)

まとめ

keplerでアーチプロットを実施しました。