可視領域分析を用いて西東京最強の夜景スポットを探す

# 1.はじめに
原付で街を夜中に放浪するのが趣味なのですが，いつの間にか目的が夜景スポット探しになっていました．道を行ったり来たり彷徨うのは趣があって良いですが段々とめんどくさくなってきたので，今回はPLATEAUの地理空間データを可視領域分析にかけてプログラムで夜景スポットを探していきたいと思います．

[Obserableでも記事](https://observablehq.com/d/010c869667b99181)を書いてます．Qiitaの方はテクニカルな部分を中心的に~
結果を見るのであればobserableの方が圧倒的に見やすいです！！

:::note info
かなり粗が多い分析ですが大学生の趣味程度なので悪しからず．何か提案や指摘があれば質問で教えていただけると幸いです🙇‍♂️🙇‍♂️
:::


# 2.目的
**PLATEAUの地理空間データを用いて夜景スポットを探す．**
1\. 東京タワーを観測点として可視領域分析．
2\.東京タワーから見ることのできる範囲を特定．
3\.標高が--m以上かつ先ほどの範囲を満たす領域を絞り込む
4\.道路や公園のラベルデータと照合し 3 で得た領域からさらに絞り込む
5\.

# 3.前提条件
* ソフトウェア
QGIS ver3.34.13-Prizen
-plugin
[QuickDEM4JP](https://qiita.com/nokonoko_1203/items/b99aa733cb215305f8aa)
[PLATEAU QGIS Plugin](https://www.mlit.go.jp/plateau/learning/tpc20-1/)
* ハードウェア
M2 MacBook Air 16GB

* 使用データ
[PLATEAU CityGML](https://www.mlit.go.jp/plateau/)
[国土地理院 数値標高モデル](https://fgd.gsi.go.jp/download/menu.php)

# 4.実装
## 4.1データのダウンロード
[国土地理院基盤地図情報ダウンロードサービス](https://fgd.gsi.go.jp/download/mapGis.php?tab=dem)から東京都全域をカバーするモデルをダウンロード.
[PLATEAU CityGML](https://www.mlit.go.jp/plateau/)から東京都全域のCityGMLをダウンロード．
ダウンロードしたPackDLMap.zipを解凍し,[QuickDEM4JP](https://qiita.com/nokonoko_1203/items/b99aa733cb215305f8aa)を使用してQGIS内にインポート．

## 4.2データの変換
QGISの中に先ほどダウンロードしたCityGMLをインポートします．
![スクリーンショット 2024-12-23 1.43.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/ad8dad3c-cd14-ee04-0a8f-0da4f2555c1f.png)


パッチ処理/ファイル選択　からインポートすると一度に複数のファイルをインポートできます．

![スクリーンショット 2024-12-23 1.41.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/bc72144c-50d2-eae2-178c-2ca5d5d4ee58.png)

これだと分かりづらいので左のメニューからXYZtiles\OpenStreetMapを選択し地図を重ね合わせます．

![スクリーンショット 2024-12-23 1.50.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/24bdad47-d2db-5213-0b64-32d26f925e55.png)


インポートしたらラスター化を行います．上部メニューにあるラスタ/変換/ベクタのラスタ化　から変換作業を行います．![スクリーンショット 2024-12-23 1.51.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/21d870df-0153-7e65-47a2-c3768f4a8717.png)
![スクリーンショット 2024-12-23 1.51.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/488ccda2-8ff6-6832-5c15-39fc7c1ad2a7.png)

## 4.3擬似DSMの作成
．
ラスター化を行なったら今度は国土地理院のDEMデータとPlateauの建物データをがっちゃんこして擬似DSMを作成します．

ラスタ→ラスタ計算機　で計算式を入力すれば良いです．
するとこんな感じで建物の高さ情報がラスターデータに追加されます．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/6f5aebd0-b589-44dc-aa1a-0794b41711ca.png)

## 4.4 可視領域分析の実施

その擬似DSMに対して可視領域分析を実施．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/20b5edc1-3c0e-4d46-8476-b9546b79e5e5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/a8e9a595-ea8e-44d0-a388-2f9e0eba5f37.png)

ここから可視領域分析を実行できるのですが私の場合は東京都全域を対象にしていたので処理が重すぎて動かなかったです😀
なのでターミナルからGDALの gdal_viewshedコマンド を実行しました．

```python:GDSL
gdal_viewshed \
-oz 0 \
-ox 139.745450 \
-oy 35.658599 \
-md 40000 \
-co COMPRESS=LZW \
-co TILED=YES \
/Users/USER/Desktop/Tokyo_DSM.tif \
/Users/USER/Desktop/viewshed_result.tif
```

起点を東京タワーに最大視野は40kmに設定．
実行結果はこんな感じ．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/38ef6e64-a562-47a3-a391-32b39586ebfa.png)

結構細く分析できますね．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/88b18159-d8bf-4c40-b19e-13c7865a2fbb.png)

## 4.5可視領域と後援データを照合し，夜景スポットを探す

東京都の公園のデータをプロット．

[国土数値情報ダウンロードサイト 都市公園データ](https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-P13.html)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/2e83814d-2a7d-429a-a9c8-9fe934d14540.png)

僕は西東京の夜景スポットを抽出したかったので対象範囲の公園のデータを抽出しました．青のプロットと黄色の可視領域が交差する部分をベクタ計算機の交差で計算．

この際に青色のプロットに対して10mのバッファを作成しました．交差判定にはばを持たせるためです．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/821a378d-f537-4c8e-8932-843a93b516bf.png)

こんな感じで交差した領域が地図上に残ります．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/d61e227f-1649-4193-b310-1010b9bd0239.png)

交差領域のレイヤを選択し属性テーブルを開くと東京タワーが見える公園をリスト化できます．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/d27e3a57-f256-49de-96a4-347ef1882ddc.png)

これをgoogle spreadsheetに貼り付けてデータの整形を行いました．

## 4.6実際に見えるのか！？
リスト化したデータを元にしてGoogleStreetMap APIを叩き，実際の風景を確認してみる．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/95a64781-e25a-4904-9774-77be863ed39f.png)

こんな感じで取得できました．[Obserable上の記事](https://observablehq.com/d/010c869667b99181)方が圧倒的に見やすいのでこちらの記事もぜひ．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728306/315b4a99-9305-4caa-803d-0547099a65e1.png)

# 5 結果
ただ公園の座標のズレやDSMに木々の影響を考慮できていない点などを踏まえるとかなりノイズの影響が強いので，可視領域分析のみを用いて夜景スポットを探すのは難しそうです．

今回のGoogleStreetMapの写真は点で取得しているのでもしかしたら写真上ではあんまりだけど近くを探索したらいいところがあったなんてこともあるかもしれません😀


[今回見つけた夜景スポット](https://www.google.com/maps/d/u/0/edit?mid=1HUHDIb0lccz38VG-KO3YSqsvgZL3FyQ&usp=sharing)