PLATEAUのCityGMLをRで読み込む

R
PLATEAU
map
作者

Kazuki Tamura

公開

2024年5月2日

PLATEAUは、国土交通省が推進する日本全国の都市デジタルツイン実現プロジェクトで、3D都市モデルをオープンデータとして提供しています。

PLATEAUの3D都市モデルは、CityGMLと呼ばれるXMLベースのデータ形式で提供されており、G空間情報センターで配布されています。 3D都市モデルオープンデータから、全国の3D都市モデルを探すことができます。

CityGMLをRで扱うことのできるファイル形式に変換するために、PLATEAU GIS Converterを利用することができます。このコンバータを使えば、CityGMLをGeoJSONやShapefileに変換することが可能です。

GUIアプリをインストールすることもできますが、コマンドラインで利用することができるようにしておくと便利かもしれません。

brew install rustup-init
rustup-init  
cd ~/GitHub/
gh repo clone Project-PLATEAU/PLATEAU-GIS-Converter

system2関数を使って、RからPLATEAU GIS Converterを実行することができます。 ここではCityGMLのうち建築物モデルをGeoJSONに変換しています。

citygml <- "~/Downloads/40100_kitakyushu-shi_city_2020_citygml_6_op/udx/bldg/50306659_bldg_6697_op.gml"
geojson <- "~/Documents/R/PLATEAU/Building.geojson"
command <- paste("cd ~/GitHub/PLATEAU-GIS-Converter/nusamai;cargo run --release --", citygml, "--sink geojson --output", geojson)
system2("/bin/zsh", args = c("-c", shQuote(command)))

GeoJSONを読み込んで、建築物を地図上に表示してみます。 色は建築物の高さです。

library(sf)
Linking to GEOS 3.11.0, GDAL 3.5.3, PROJ 9.1.0; sf_use_s2() is TRUE
library(mapview)
bldg3d <- read_sf("~/Documents/R/PLATEAU/Building.geojson/Building.geojson")
sf_use_s2(FALSE)
Spherical geometry (s2) switched off
bldg2d <- st_centroid(bldg3d)
Warning: st_centroid assumes attributes are constant over geometries
Warning in st_centroid.sfc(st_geometry(x), of_largest_polygon =
of_largest_polygon): st_centroid does not give correct centroids for
longitude/latitude data
mapview::mapview(bldg2d, zcol = "measuredHeight")

建築年で色を変えてみます。

mapview::mapview(bldg2d, zcol = "yearOfConstruction")

何かの分析に使えるでしょうか?