Slide 1

Slide 1 text

PythonでPLATEAUの データを手軽に扱ってみる 株式会社パスコ 青木亮祐 / ぴっかりん (@ra0kley) FOSS4G 2024 Japan 2024.11.10 一般発表25

Slide 2

Slide 2 text

FOSS4G 2024 Japan はじめに ● 本発表は、所属会社で行っていることではなく、個人で 使ってみたライブラリの発表になります ● 本発表では、以下のPLATEAUのデータを使用しています 3D都市モデル(Project PLATEAU)川崎市(2022年度) CityGML(v3) 2

Slide 3

Slide 3 text

FOSS4G 2024 Japan 発表内容 1. 自己紹介 & 会社紹介 2. Project PLATEAUについて 3. PlateauKitのご紹介 4. PLATEAUのデータを可視化してみよう 5. PLATEAUのデータを分析に使用してみよう 6. まとめ 3

Slide 4

Slide 4 text

4 自己紹介&所属会社の紹介 01

Slide 5

Slide 5 text

FOSS4G 2024 Japan 1. 自己紹介 ● 本名: 青木 亮祐(あおき りょうすけ) ● 出身: 静岡県東部地域 ● 趣味: 地理空間情報と戯れる、ラジオを聴く、散歩、旅行... ● 推し: 鬼頭明里さん、すそのん ←個人では「ぴっかりん」という名前で SNS等に生息してます 5

Slide 6

Slide 6 text

FOSS4G 2024 Japan 1. 自己紹介 今年度、PLATEAU ADVOCATEに就任さていただいています! 6 出典: https://www.mlit.go.jp/plateau/journal/j062/

Slide 7

Slide 7 text

FOSS4G 2024 Japan 1. 所属会社の紹介 ―株式会社パスコとは? 7 パンの製造は行っておりません!!! ※ 測量会社です ※ 冗談抜きに、たまに間違い電話がかかってきます

Slide 8

Slide 8 text

8 Project PLATEAUについて 02

Slide 9

Slide 9 text

FOSS4G 2024 Japan 2. Project PLATEAUについて 国土交通省が様々なプレイヤーと連携して推進している 日本全国の都市デジタルツイン実現プロジェクト 3D都市モデルを整備し、様々な領域でユースケースを開発中 9 出典: Project PLATEAU公式サイト

Slide 10

Slide 10 text

FOSS4G 2024 Japan 2. Project PLATEAUについて ⚫ 3D都市モデルとは? CityGML形式により都市スケールで整備されたジオメトリとセマンテ ィクスの統合モデル ➢ 幾何形状(ジオメトリモデル)に「建物」、「壁」、「屋根」等の 地物の定義や「用途」、「構造」、「建築年」などの属性情報が付与 されている ➢ 国際的な標準規格である「CityGML」を日本国内向けに ローカライズした標準仕様に沿って整備されている 10

Slide 11

Slide 11 text

FOSS4G 2024 Japan 2. Project PLATEAUについて ● PLATEAUにて提供している3D都市モデルの特徴 1. セマンティクスとジオメトリを統合したソリッドモデル 2. 国際的な標準規格(CityGML)で整備 3. オープンデータ 4. LODが定義されている 11

Slide 12

Slide 12 text

FOSS4G 2024 Japan 2. Project PLATEAUについて ● 特徴1: セマンティクスとジオメトリを統合したソリッドモデル → Google Earthと何が違う? 12 出典: 令和4年度 Project PLATEAU 第6回 3D都市モデルの整備・活用促進に関する検討分科会

Slide 13

Slide 13 text

FOSS4G 2024 Japan 2. Project PLATEAUについて 13 出典: 令和4年度 Project PLATEAU 第6回 3D都市モデルの整備・活用促進に関する検討分科会 ● 特徴1: セマンティクスとジオメトリを統合したソリッドモデル → オブジェクトが独立して整備され、意味や属性情報が付与されている

Slide 14

Slide 14 text

FOSS4G 2024 Japan 2. Project PLATEAUについて ● 特徴2: 国際的な標準規格(CityGML)で整備 → 国際的な標準規格に沿って、整備されているため 様々なフォーマットに変換しやすい → XMLで記述されたテキスト形式のデータなので、パースが 比較的に簡単 14

Slide 15

Slide 15 text

FOSS4G 2024 Japan 2. Project PLATEAUについて ● 特徴3: オープンデータ → 商用利用も含め、だれでも無償で自由に利用可能 15 出典: 国土交通省「Project PLATEAU Site Policy」

Slide 16

Slide 16 text

FOSS4G 2024 Japan 2. Project PLATEAUについて ● 特徴4: LOD(Level Of Detail)が定義されている → 3D都市モデルの詳細度のことで、1つの地物の幾何を 目的などに応じて複数段階に抽象化できる → 同じ地物に関する詳細度の異なる様々な情報を統合的に管理や 利用することが可能 16

Slide 17

Slide 17 text

FOSS4G 2024 Japan 2. Project PLATEAUについて ● どんなデータか手軽に確認するには? ✓ 国土交通省が公式に提供しているPLATEAU VIEWより確認可能 17 出典: PLATEAU VIEW

Slide 18

Slide 18 text

FOSS4G 2024 Japan 2. Project PLATEAUについて ● データのダウンロード方法(手動) ✓ G空間情報センターというサイトからダウンロード可能 18 出典: 3D都市モデル(Project PLATEAU)ポータルサイト

Slide 19

Slide 19 text

19 Pythonが使われている これまでの取り組み事例 03

Slide 20

Slide 20 text

FOSS4G 2024 Japan 3. Pythonが使われているこれまでの取り組み事例 ● Project PLATEAUのユースケースにおいて、 Pythonが使われている事例はたくさん! 20 都市構造のシミュレーション 損害保険支払い作業の迅速化 衛星データを用いた浸水被害把握 出典: https://www.mlit.go.jp/plateau/use-case/

Slide 21

Slide 21 text

21 PlateauKitのご紹介 04

Slide 22

Slide 22 text

FOSS4G 2024 Japan 4. PlateauKitのご紹介 ● PythonでPLATEAUのデータを扱うためのライブラリ → JupyterLab(Notebook)上でデータを扱うための PlateauLabライブラリも同胞 22 出典: https://ozekik.github.io/plateaukit/

Slide 23

Slide 23 text

FOSS4G 2024 Japan 4. PlateauKitのご紹介 ● PLATEAU AWARD 2023で発表されて、 継続して開発中 23 出典: https://www.mlit.go.jp/plateau/journal/j059/

Slide 24

Slide 24 text

FOSS4G 2024 Japan 4. PlateauKitのご紹介 ● 機能 ✓ PLATEAUのデータセットのダウンロード、管理 ✓ GeoDataFrame形式への変換 ✓ GeoJSONやCityJSONといった地理空間情報を表現できる JSON形式への変換 ✓ JupyterLab/Jupyter Notebook上でデータの表示 (Google Colabでも使えます) 24

Slide 25

Slide 25 text

FOSS4G 2024 Japan 4. PlateauKitのご紹介 ● インストール方法 pipコマンドを用いて、簡単にインストールできます ※ poetryやcondaなどで環境構築している方は 仮想環境を新しく作ることをオススメします → 地理空間情報周りのライブラリは、依存関係が複雑なため 25 $ pip install 'plateaukit[all]'

Slide 26

Slide 26 text

26 PLATEAUのデータを可視化してみよう 05

Slide 27

Slide 27 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう ● PLATEAUのデータをダウンロード 1. ダウンロードしたい都市のデータセットIDを調べる → plateaukit list コマンドを使用 27 $ plateaukit list

Slide 28

Slide 28 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう ● PLATEAUのデータをダウンロード 1. ダウンロードしたい都市のデータセットIDを調べる → plateaukit list コマンドの実行結果(加工しています) 28 +---------------------------------+-----+---------+---------+--------+---------------------------------------- ----------------------------------+ | id | name | version | spec | homepage | +---------------------------------+-----+---------+---------+--------+---------------------------------------- ----------------------------------+ | plateau-14212-atsugi-shi-2023 | 神奈川県厚木市 | 2023 | v3 | https://w//.geospatial.jp/ckan/dataset /plateau-14212-atsugi-shi-2023 | | plateau-14130-kawasaki-shi-2022 | 神奈川県川崎市 | 2022 | v3 | https://w//.geospatial.jp/ckan/dataset /plateau-14130-kawasaki-shi-2022 | | plateau-14100-yokohama-shi-2023 | 神奈川県横浜市 | 2023 | v3 | https://w//.geospatial.jp/ckan/dataset /plateau-14100-yokohama-shi-2023 | 会場がある川崎市のデータセットIDはこれ

Slide 29

Slide 29 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう ● PLATEAUのデータをダウンロード 2. 1.で調べたデータセットIDを用いてダウンロード plateaukit install コマンドで可能 ここでは、川崎市のデータをダウンロードしてみます 29 $ plateaukit install plateau-14130-kawasaki-shi-2022 先ほど調べたデータセットID

Slide 30

Slide 30 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう ● PLATEAUのデータを削除 plateaukit uninstall コマンドで可能 下の例、川崎市のデータを削除する場合 30 $ plateaukit uninstall plateau-14130-kawasaki-shi-2022 先ほど調べたデータセットID

Slide 31

Slide 31 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう 今まで、コマンドばかりでしたが ここからようやくPythonの出番です! 31

Slide 32

Slide 32 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう ● PLATEAUのデータを読み込む → plateaukitの中にあるload_dataset関数を 用いて読み込む 32 from plateaukit import load_dataset # 川崎市のデータの読み込み # `plateau-14130-kawasaki-shi-2022`は川崎市のデータセットID kawasaki = load_dataset("plateau-14130-kawasaki-shi-2022")

Slide 33

Slide 33 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう ● 表示・分析に使用する範囲を選択する → 範囲選択する方法は6つ 33 範囲選択の方法 メソッド 全範囲 get_area() バウンディングボックス area_from_bbox(ul_x, ul_y, lr_x, lr_y) 一つ以上の地点の座標と範囲の サイズ area_from_points(point, size=[width, height]) 郵便番号 area_from_postcode(“postcode”) 住所 area_from_address(“address”) ランドマーク名 area_from_landmark(“landmark”)

Slide 34

Slide 34 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう ● 表示・分析に使用する範囲を選択する ✓ 全範囲選択 → get_area()メソッドを使用 → PLATEAUのデータは重いので、全範囲は選択しない方が 無難 34 # 川崎市のデータの読み込み kawasaki = load_dataset("plateau-14130-kawasaki-shi-2022") # 全範囲を選択 area = kawasaki.get_area()

Slide 35

Slide 35 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう ● 表示・分析に使用する範囲を選択する ✓ 郵便番号で範囲選択 ✓ 建物等のランドマークの名前から範囲を選択 35 # 川崎市のデータの読み込み kawasaki = load_dataset("plateau-14130-kawasaki-shi-2022") # 郵便番号で範囲を選択 area = Kawasaki.area_from_postcode("4228063") # 川崎市のデータの読み込み kawasaki = load_dataset("plateau-14130-kawasaki-shi-2022") # ランドマークから範囲を選択 area = kawasaki.area_from_landmark("向ヶ丘遊園駅")

Slide 36

Slide 36 text

FOSS4G 2024 Japan 5. PLATEAUのデータを可視化してみよう ● PLATEAUのデータを可視化 36 # ランドマークから範囲を選択 around_landmark = kawasaki.area_from_landmark("向ヶ丘遊園駅") # 選択した範囲を表示 around_landmark.show()

Slide 37

Slide 37 text

37 PLATEAUのデータを分析に 使用してみよう 06

Slide 38

Slide 38 text

FOSS4G 2024 Japan 6. PLATEAUのデータを分析に使用してみよう ● GeoDataFrameへの変換 ➢ Pythonでデータ分析などをする際に使用するDataFrameの 位置情報対応版 ➢ pandasでデータの処理を行うように、PLATEAUのデータも 扱える! 38 # ランドマークから範囲を選択 around_landmark = kawasaki.area_from_landmark("向ヶ丘遊園駅") # 選択した範囲のデータをGeoDataFrameに変換 around_landmark_gdf = around_landmark.gdf around_landmark_gdf.head()

Slide 39

Slide 39 text

FOSS4G 2024 Japan 6. PLATEAUのデータを分析に使用してみよう ● 属性情報を用いて建物用途ごとに色を分けて表示した例 39

Slide 40

Slide 40 text

40 まとめ 07

Slide 41

Slide 41 text

FOSS4G 2024 Japan 7. まとめ ● PLATEAUは都市に関する形状と意味を持った データで誰でも無償で自由に使用可能 ● Pythonで扱うためのツールが開発されて 便利になりつつある ● PLATEAUのデータをPlateauKitで扱うとデータの管理が できるほか、範囲選択やDataFrameに変換できて扱いやすい 41

Slide 42

Slide 42 text

FOSS4G 2024 Japan 7. まとめ Project PLATEAUのデータは徐々にですが 皆さまのおかげで扱いやすくなってきています 以前挫折した方も、ぜひ一度遊んでみてください! あと、PLATEAU AWARDもまだまだ作品募集しています! 42

Slide 43

Slide 43 text

ありがとうございました! ↑ X (旧Twitter)アカウント ↑ GitHubアカウント 43