1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonで手軽に3D都市モデルを可視化してみる

Posted at

はじめに

PLATEAUは国土交通省が推進する、日本全国の都市デジタルツイン実現プロジェクトです。
そんなPLATEAUの3D都市データをPythonから手軽に扱えるライブラリである「PlateauKit」が気になったので、簡単に試してみました。

image.png

やったこと

こちらのドキュメントを参考に、都市モデルの取得からデータ集計・可視化までを行ってみました。

以下、その結果を紹介していきます。

動作環境

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都市モデルとして表示

image.png

次に、都市モデルが持つ情報の一つであるusage(建物の用途)を集計してみます。

※以下のarea.gdfは、Pandasを地理空間データ用に拡張したライブラリであるGeoPandasのGeoDataFrameです。通常のPandas.DataFrameと同じような操作ができます。

# 建物の用途情報ごとに集計
usage_counts = area.gdf["usage"].fillna("未分類").value_counts()
usage_counts

image.png

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

image.png

さらに、以下のようにマップ上で建物を用途ごとに色分けして表示することもできます。

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

image.png

おわり

以上、PlateauKitの基本的な動作を試してみた結果でした。
今回紹介した以外にも面白そうな機能や応用例があるので、引き続き勉強してみたいと思います。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?