はじめに
PLATEAUは国土交通省が推進する、日本全国の都市デジタルツイン実現プロジェクトです。
そんなPLATEAUの3D都市データをPythonから手軽に扱えるライブラリである「PlateauKit」が気になったので、簡単に試してみました。
やったこと
こちらのドキュメントを参考に、都市モデルの取得からデータ集計・可視化までを行ってみました。
以下、その結果を紹介していきます。
動作環境
Ubuntu 20.04.6 LTS
Python 3.12.4
ツールのインストール
以下のようにpipで簡単にインストールできます。
pip install 'plateaukit[all]'
pip install jupyterlab
都市モデルデータの取得と事前ビルド
はじめに、都市モデルデータの取得と事前ビルドを実行します。今回は渋谷区のデータを使うことにしました。
# 利用可能な都市モデルの一覧を表示
plateaukit list
# 渋谷区のデータを取得して事前ビルド
plateaukit install plateau-13113-shibuya-ku-2023 -v
plateaukit prebuild plateau-13113-shibuya-ku-2023 -t bldg -t tran
データの可視化・集計
ここから、JupyterLab上で実際に都市データを扱っていきます。
まずはデータセットから指定範囲の都市モデルを取得します。範囲を指定する方法としては緯度経度や住所などいくつか提供されていますが、ここではランドマーク名の指定で渋谷駅周辺のエリアを取得しています。
from plateaukit import load_dataset
dataset = load_dataset("plateau-13113-shibuya-ku-2023")
area = dataset.area_from_landmark("渋谷駅") # 渋谷駅周辺のエリアを取得
area.show() # 3D都市モデルとして表示
次に、都市モデルが持つ情報の一つであるusage(建物の用途)を集計してみます。
※以下のarea.gdfは、Pandasを地理空間データ用に拡張したライブラリであるGeoPandasのGeoDataFrameです。通常のPandas.DataFrameと同じような操作ができます。
# 建物の用途情報ごとに集計
usage_counts = area.gdf["usage"].fillna("未分類").value_counts()
usage_counts
import plotly.express as px
fig = px.bar(
x=usage_counts.index,
y=usage_counts.values,
labels={"x": "種類", "y": "件数"},
color=usage_counts.index,
)
fig.update_layout(showlegend=False)
fig
さらに、以下のようにマップ上で建物を用途ごとに色分けして表示することもできます。
color_map = {trace.name: trace.marker.color for trace in fig.data}
color_map = {k: [int(v[1:3], 16), int(v[3:5], 16), int(v[5:7], 16)] for k, v in color_map.items()}
area.gdf.loc[:, "fill_color"] = area.gdf["usage"].fillna("未分類").map(color_map)
area.show()
おわり
以上、PlateauKitの基本的な動作を試してみた結果でした。
今回紹介した以外にも面白そうな機能や応用例があるので、引き続き勉強してみたいと思います。