![見出し画像](https://assets.st-note.com/production/uploads/images/107244517/rectangle_large_type_2_44b301dfb5680141809aadf831b20003.png?width=1200)
pydeckを使ってみた。
こんにちは。しげまつです。
ブロスタAIは環境に反映されるまでの反応が遅くて「ん~~~~~~~~~~~。」となってます。
今回はpydeckやってみるかーーと思ってpydeckのコード理解して実行してみました。
import pydeck as pdk
import pandas as pd
GREAT_CIRCLE_LAYER_DATA = "https://raw.githubusercontent.com/visgl/deck.gl-data/master/website/flights.json" # noqa
df = pd.read_json(GREAT_CIRCLE_LAYER_DATA)
# Use pandas to prepare data for tooltip
df["from_name"] = df["from"].apply(lambda f: f["name"])
df["to_name"] = df["to"].apply(lambda t: t["name"])
# Define a layer to display on a map
layer = pdk.Layer(
"GreatCircleLayer",
df,
pickable=True,
get_stroke_width=12,
get_source_position="from.coordinates",
get_target_position="to.coordinates",
get_source_color=[64, 255, 0],
get_target_color=[0, 128, 200],
auto_highlight=True,
)
# Set the viewport location
view_state = pdk.ViewState(latitude=50, longitude=-40, zoom=1, bearing=0, pitch=0)
# Render
r = pdk.Deck(
layers=[layer],
initial_view_state=view_state,
tooltip={"text": "{from_name} to {to_name}"},
)
r.picking_radius = 10
r.to_html("great_circle_layer.html")
上の公式からコードを拝借。ではこのコードを理解していこう。
import pydeck as pdk
import pandas as pd
GREAT_CIRCLE_LAYER_DATA = "https://raw.githubusercontent.com/visgl/deck.gl-data/master/website/flights.json" # noqa
df = pd.read_json(GREAT_CIRCLE_LAYER_DATA)
ここまでは簡単。
pydeckとpandasをimport してデータ読み込んだだけ。
dfの中身
![](https://assets.st-note.com/img/1685770404154-GPPSLLBty3.png?width=1200)
df["from_name"] = df["from"].apply(lambda f: f["name"])
df["to_name"] = df["to"].apply(lambda t: t["name"])
これはdfのfromとtoの名前を取り出して新しいカラムとして追加してる。
![](https://assets.st-note.com/img/1685770458590-yzcQVvNjJv.png?width=1200)
layer = pdk.Layer(
"GreatCircleLayer",
df,
pickable=True,
get_stroke_width=12,
get_source_position="from.coordinates",
get_target_position="to.coordinates",
get_source_color=[64, 255, 0],
get_target_color=[0, 128, 200],
auto_highlight=True,
)
なんかいろいろやってるけど、dfと get_source_position="from.coordinates", get_target_position="to.coordinates",を理解すればよい。ほかのところは色などを指定している。
・dfはdf使いますよーって指定しているだけ。
・get_source_position="from.coordinates"は書き換えるとfrom["coordinates"]
出発地点の緯度経度を指定している
・get_target_position="to.coordinates"上と一緒でこっちは目的地の緯度経度
を指定している。
view_state = pdk.ViewState(latitude=50, longitude=-40, zoom=1, bearing=0, pitch=0)
vies_stateは地図出したとの初期位置の設定。
r = pdk.Deck(
layers=[layer],
initial_view_state=view_state,
tooltip={"text": "{from_name} to {to_name}"},
)
何個かうえでしていたlayerとview_state使ってpydeck使う設定。
これしないと地図は出てこない。
r.picking_radius = 10
r.to_html("great_circle_layer.html")
r.picking_radiusはわからない。なくても動くからスルー。
r.to_htmlで表示。htmlとして保存。
そしたあら不思議。
![](https://assets.st-note.com/img/1685771154999-ohYtneAe11.png?width=1200)
簡単でした。緯度経度さえあればこれが作れます。
位置情報データほしいね。
今回はこんな感じでさらば。
この記事が気に入ったらサポートをしてみませんか?