QGISを使って任意の市町村のCS立体図を作成する方法

『QGIS』を使って下記のような、任意の市町村のCS立体図を作成する方法をご紹介します。
![CSMap_ikeda,urahoro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/31656fac-158d-05a6-0bd5-9b577c8e874d.png)

**使用するQGISのバージョンは『3.10』です。**

# 元となるCS立体図をダウンロード

まずは作成したい市町村が属する地域のCS立体図を「G空間情報センター」のサイトよりダウンロードします。
https://www.geospatial.jp/gp_front/

サイトの検索窓に『CS立体図』と入力し、検索を行うと「全国_CS立体図_10m_〇〇」と、一覧で出てくるので
作成したい市町村が属する地域に該当する区域に該当するものを探して選択します。

今回はDEM(数値標高モデル)_10mメッシュデータを使用し、例として北海道の「池田町、浦幌町」を対象にCS立体図を作成していきますので、その地域に該当する「全国_CS立体図_10m_12」を選択します。

各地域のCS立体図は、地図上が碁盤の目状に細分化されたデータとなっているので、一覧の最下部にある
「インデックス図」を見て対象の地域が該当するデータをダウンロードしてください。

# QGISへの取り込み

ダウンロードしたCS立体図の圧縮ファイルを解凍すると、『tif』『tfw』の拡張子のファイルがありますので
『tif』ファイルをQGIS上にドラッグしてレイヤを追加します。(今回はデータを4つ取り込みます)

取り込んだレイヤが該当の地域に正しく表示出来ているかどうかは、
あらかじめオープンストリートマップや国土地理院地図などをレイヤに追加しておくとわかりやすいです。
正しく取り込みが完了すると下記のように表示されます。
![map_imported.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/0f3e44ca-81aa-7d23-acc4-d5df6846e9cd.png)


※レイヤにデータを追加した際に、「マップ上に表示されない」「地図に比べて小さく表示されてしまう」などの事象が起こった場合、ほとんどの原因がレイヤの『座標参照系(CRS)』の設定に誤りがある場合です。正しく表示されるように設定し直してください。

# レイヤの結合

今回取り込んだCS立体図は4ファイルなので、それぞれが別々のレイヤとして追加されています。
「ラスタ」→「その他」→「結合」を選択しダイアログを表示します。
![raster_other_marge.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/bac9b957-9f4c-013e-698b-93ca7b8f2ab9.png)

「入力ラスタ」に結合したいレイヤを全て選択します。
![dialog_marge_inputRaster.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/6c69e341-f839-8409-8bd3-09ace0894d7a.png)

「指定nodata値を出力に割り当てる[オプション]に「0」を設定します。

※未設定で設定した場合、出力したレイヤに黒い領域が表示されるため、
不要な場合は「0」を設定することで黒い領域を表示せずに出力できます。

**参考画像**
![marge_black.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/dc8d2602-6e73-a615-3ca2-381df6d98ca5.png)

「実行」ボタンを押下して結合を開始します。結合したレイヤが追加されます。
![marge.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/b2643651-1136-bf61-9090-4a1f021b1157.png)

# 切り抜きたい市町村のベクタデータをダウンロード

国土交通省のGISホームページから、切り抜きしたい市町村のデータをダウンロードします。
https://nlftp.mlit.go.jp/

今回は行政区域のデータを使用して切り抜きを行います。
TOP > 国土数値情報 > 行政区域データ　にページ移動し、地域が北海道、年度が一番新しいデータをダウンロードします。
データはシェープファイルで保存されます。


### 対象の地域でフィルター

ダウンロードしたシェープファイルをレイヤとして追加すると、下記のようにベクタデータとして取り込まれます。
![vector_imported.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/213ba521-b99c-3563-16df-c915c93165cd.png)

取り込んだレイヤで右クリックしメニューから「属性テーブルを開く」を選択、属性テーブルを表示します。
![sityouson_data.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/9d9ae793-053f-3bf8-aace-4449b9aa82b8.png)

テーブルから分かるように、市町村情報はカラム『N03_004』にあると確認出来たので、それをもとにフィルターを行います。
再度右クリックでメニューを表示し「フィルター」を選択します。
クエリビルダのダイアログが表示されるので、「池田町、浦幌町」のみを出力するようフィルタ式を書いてテストを押下します。

フィルタ式が正しい場合は、対象の地域のみでフィルターが行われるので「OK」を押下して確定してください。
![query_builder.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/1177ea95-4e85-cd56-1cf9-2518ffc46315.png)
![query_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/ceef84b1-0933-439d-0c94-1b8059f7461f.png)

### エクスポート

フィルタしたデータをエクスポートします。
属性テーブルを表示し、上部のメニューから「全てを選択」を押下し、対象の地域を選択状態にします。
選択状態となったら、右クリックのメニューから「エクスポート」>「選択地物の保存」を選択し保存を行います。
「形式」はシェープファイルを選択し、「ファイル名」に任意の名前を、
「保存されたファイルを地図に追加する」をチェックして、保存を行ってください。
![outputFiles.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/4d46209d-2871-ffac-40ea-aa4505a0f2bb.png)

レイヤに保存したベクタデータが追加されるので、これで切り抜きする市町村データの準備が出来ました。

# 対象の地域で切り抜き(クリップ)

用意したベクタデータを使用してCS立体図より、必要な地域に切り抜きを行います。
「ラスタ」→「抽出」→「マスクレイヤによる切り抜き」を選択しダイアログを表示します
![clip_dialog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/911ef1cc-0a31-ac3d-8369-e76d6b6db979.png)

「入力レイヤ」に切り抜きを行うラスタデータを指定し、
「マスクレイヤ」に対象の市町村でエクスポートしたベクタデータを指定し、「実行」ボタンから切り抜きを開始します。
出力されたレイヤを確認すると、「池田町、浦幌町」の箇所だけ切り抜きされたレイヤが出力されています。
![clip_output_file.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648579/4f32fca3-c811-7af5-5dd3-1476b275ed86.png)