不動産情報ライブラリAPI　QGISで学校データ（学区・学校ポイント）を表示してみる

2024年4月1日に[不動産情報ライブラリ](https://www.reinfolib.mlit.go.jp/)が公開されました。
> 不動産情報ライブラリとは、不動産の取引価格、地価公示等の価格情報や防災情報、都市計画情報、周辺施設情報等、不動産に関する情報をご覧になることができる国土交通省のWEBサイトです。
https://www.reinfolib.mlit.go.jp/ より引用

国土交通省が管理している不動産取引価格や地価公示、防災関連情報などが、不動産情報ライブラリを通して公開されています。公開されたデータは不動産情報ライブラリのサイトで見たり、APIを通して利用することができます。
公開されている情報の中に小学校区や中学校区、学校ポイントなどもあり、この記事ではQGISを使って学校データを表示してみます。

## おことわり
本記事は手順や情報などの正確性や完全性を保証するものではありません。また、本記事の掲載内容を試したり、取り入れることで発生した不利益について、筆者ならびにマップマーケティング株式会社は一切責任を負いません。

## 事前準備
事前準備として必要なものはQGISのインストールと不動産情報ライブラリAPIの利用申請です。
### QGIS
https://www.qgis.org/ja/site/

フリーで使えるオープンソースのGISです。
今回使用したバージョンは3.34.0です。バージョンによっては画面や設定が異なるかもしれません。

### API利用申請
不動産情報ライブラリのサイトから利用申請を行ってください。申請後、5営業日ほどでAPIキーがメールで届きます。（申請の混雑状況によっては少し時間がかかるようです）

## 不動産情報ライブラリAPI
不動産情報ライブラリAPIの詳細については不動産情報ライブラリのサイトをご確認ください。

様々なデータがWeb APIで利用可能です。ポイントやポリゴン、ラインなどの位置情報を含むAPIはGeoJSONまたはpbf形式で取得することができます。
ドキュメントにはpbfについてバイナリベクトルタイルと記載されています。以下でベクトルタイルと出てきたらバイナリベクトルタイルのことだと思ってください。
この記事で扱うのは
- 国土数値情報（小学校区）API
- 国土数値情報（学校）API
の2つです。

## QGISで小学校区を表示
### OpenStreetMapを表示して表示したい場所に移動
![QGISでOpenStreetMapを表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2325378/30d2bbd2-2453-2bbb-193f-83ff30af82c6.png)
ブラウザパネルのXYZ TilesからOpenStreetMapをダブルクリックまたはレイヤーにドラッグアンドドロップします。
この手順は必須ではありませんが、小学校区ポリゴンだけではどこを表示しているのかわからなくなります。QGISの初期表示は世界地図レベルで表示されるので地図表示してないと分からないと思います。また、この後の手順でミスしてしまった場合の保険としての役割もあります。
OSMを表示して確認したい小学校区の場所に移動します。地図の移動だけではなく、地図縮尺を1:250000よりズームさせておきます。

![QGISでOpenStreetMapを表示した結果](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2325378/a13a6300-cd0b-9c12-67e7-951cdba6acd6.png)

## 国土数値情報（小学校区）APIへのベクトルタイル接続を作成する
### Vector Tiles > 新規一般接続
ブラウザパネルのVector Tilesを右クリックし、「新規一般接続」を選択
![Vector Tiles新規接続](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2325378/1f340b3e-5a88-6937-0b03-5c6cd03e14f5.png)
### ベクトルタイル接続を設定する
名前：任意の名前を入力
URL：`https://www.reinfolib.mlit.go.jp/ex-api/external/XKT004?response_format=pbf&z={z}}&x={x}&y={y}`
　表示する行政界を制限したい場合はadministrativeAreaCodeもURLに付け加える
最小ズーム：デフォルトの0のまま or チェックを外す
最大ズーム：デフォルトの14のまま or チェックを外す

:::note alert
小学校区や中学校区のズームレベルは11～15の範囲で指定可能ですが、ベクトルタイル接続設定で最小ズームレベルを設定しないでください。この画面の最小ズームレベルと最大ズームレベルの設定は、ズームレベルによる表示やリクエストの制限ではありません。
最小ズームレベルを仮に11と設定した場合、表示地図のズームレベルが1～10になった際に、表示地図領域をズームレベル11で取得したベクトルタイルで埋め尽くすように動作します。そのため、非常に多くのHTTPリクエストが発生します。

参考情報
https://github.com/qgis/QGIS/issues/54312
https://docs.qgis.org/3.34/ja/docs/user_manual/managing_data_source/opening_data.html#using-vector-tiles-services
https://docs.qgis.org/3.34/ja/docs/user_manual/working_with_vector_tiles/vector_tiles.html#rendering-properties
:::


![Vector Tiles接続設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2325378/78c9a0c1-5e32-0c41-543b-a7498669d0c9.png)
#### 認証情報を設定
＋ボタンをクリックして認証情報を設定します。
名前：任意の名称を入力
APIヘッダーを選択（デフォルト）
Header Key：Ocp-Apim-Subscription-Key
Headert値：発行されたAPIキーを入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2325378/52420e8f-8ea3-e1c8-63e7-5a6125428e50.png)

### ベクトルタイルをレイヤーに追加
ブラウザパネルのVector Tilesに追加したらベクトルタイル接続が表示されます。
ダブルクリックまたはレイヤーにドラッグアンドドロップするとレイヤーに追加され、OSMの上に小学校区が表示されます。
![Vector Tiles 認証設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2325378/77522f25-d1b5-9f01-335a-c61534518bd5.png)
![QGISで小学校区を表示した結果](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2325378/fd7b1e3d-0c76-735c-c790-18cd4070e696.png)

表示してみると、品川区や荒川区、船橋市などでポリゴンが表示されていません。全国全市区町村の小学校区が公開されているわけではないため、学区ポリゴンが存在しない自治体もあります。
また、各自治体ごとに利用条件も異なるため、注意が必要です。例えば東京都では新宿区や町田市、あきる野市、青ヶ島村では商用利用不可になっています。詳しくは国土数値情報のサイトを確認してみてください。

https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A27-v3_0.html

:::note info
そのままではタイルの外周なのかメッシュ状のラインとポリゴンも表示されてしまいます。hitsレイヤーのみを表示すればメッシュは表示されなくなると思います。
:::

## 学校ポイントデータを表示する
### 国土数値情報（学校）APIへのベクトルタイル接続を作成する
小学校区と同様に、国土数値情報（学校）APIに接続するベクトルタイルを設定します。
URLを`https://www.reinfolib.mlit.go.jp/ex-api/external/XKT006?response_format=pbf&z={z}&x={x}&y={y}`に変更するくらいでその他は小学校区と同様に設定します。
設定すると以下のようにポイントデータが表示されます。
![QGISで学校データを表示した結果](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2325378/451076b9-f60f-4091-192c-d7b2c0245489.png)

小学校区と元データが異なるため荒川区もデータがありました。学校データは使用許諾条件が非商用のため、商用利用できない点は注意が必要です。

https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-P29.html