【Windows Powershellで】G空間情報センターの法務省登記所備付地図データのダウンロードURLを調べる（G空間情報センターのAPI利用）

（2023-09-06： API Keyを使ってのダウンロードの記載などを少し追記しました。）
# はじめに
## ポイント
この記事は、**WindowsのPowerShellだけで、G空間情報センターから2023年の地図XMLファイル全部（約2000ファイル）をダウンロードする**方法のメモです。**Linux環境は不要です。**

↓こんな感じで
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/8f1768f7-5fc5-b6c9-ebd4-088231fca6f7.png)

↓どんどんファイルをダウンロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/0b771167-b235-5059-9f5f-3a37d64d6bf8.png)



## 作業の動機
昨年度から、地番の地図データ、正確には法務省の登記所備付地図データがG空間情報センターから公開されました。形式は地図XMLの形でダウンロード出来ます。毎年更新した地図データが公開されるという話を聞いていましたが、今年も令和5年8月31日に更新された地図データ（令和５年２月時点とのこと）が公開されたそうです。法務省さんとG空間情報センターなどの関係者の皆様、ありがとうございます。

法務省HPでのお知らせ：　https://www.moj.go.jp/MINJI/minji05_00494.html

私も筆データを使いたいのですが、地図XMLのデータは法務局ごとにダウンロードしていく必要があるので、G空間情報センターからクリックすると手間がかかります。なんとかAPIやコマンドを使って（楽に）ダウンロード出来ないだろうかと考えて、少し試してみました。

なお、昨年公開された登記所備付地図データは変換ツールを使ってGeoJSONやShape形式にしたものもありますが、私のターゲットは地図XML形式です（任意座標系のデータも必要なため）。今回の記事でも登記所備付地図データのことを地図XMLという場合がありますのでご注意ください。

## 全国の登記所備付地図の電子データ　について

* **根拠法令** は、不動産登記法（平成１６年法律第１２３号）で、第１４条第１項及び第４項に規定する地図及び地図に準ずる図面に係る電子データ
* **縮尺は不動産登記規則第10条2項にあるとおりで**、
    * 市街地域は **250分1** 又は **500分1**
    * 村落・農耕地域は **500分1** 又は **1000分1**
    * 山林、原野は **1000分1** 又は **2500分1**
* **フォーマット**は地図XMLフォーマット
    * どんなスキーマか、法務省が定義を公開しています。　( https://www.moj.go.jp/content/000116464.pdf )下の図を眺めていると、何となく構造が見えてきます。(下図： 地図XML（総務省）より図１)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/e85506f7-fa2e-d62c-7317-241d0778bb02.png)　

* ダウンロードは **G空間情報センター** から可能です。
    * G空間情報センターのユーザー登録、ログインが必要
    * データは無料で利用できる。（図証明書・図面証明書に代替するものではない）
    * 利用規約はデータダウンロード時に確認できる。
    * 2022年度の公開、2023年度の公開の2つのバージョンがある


## 私の環境
* Windows 10
  * GoogleChrome
  * Windows PowerShell

# 方針の検討
まず、G空間情報センターでデータベースを確認し、その後にG空間情報センターのAPI（CKANのAPIベース）を試してデータを見ながら方針を探ります。


# 実施結果
## STEP 1: G空間情報センターのHPでデータを確認
G空間情報センターのページでは[法務省登記所備付地図データのダウンロード手順](https://front.geospatial.jp/moj-chizu-xml-download/)が詳しく紹介されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/98535ede-cb99-1a90-fde0-0f632e96d7b1.png)


都道府県　→　区市町村・法務局出張所名　と選んで、利用規約を承諾した上でダウンロードします。ダウンロードにはG空間情報センターへのログインが必要ですので、アカウントがない場合は作成しておきましょう。


通常のダウンロードは以下の様なページからダウンロードします。ここではファイル名をよく理解したいと思いいくつかのページを見ています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/05634418-a01a-533d-7db1-a675cf95b24f.png)

* 最初の5桁は市長村（区）を表すコードのようです。全国地方公共団体コードの5桁目までなのかな、というような印象があります。
* 次の4桁は法務局のコードのようです。例えば、上図の新潟市北区のデータは新潟地方法務局（1100）から出ているデータですが、もう一つ新潟地方法務局新発田支局（1102）から出ているデータがありました。
* 最後の4桁はG空間情報センターから公開された年度かなと思います。


##  STEP 2: G空間情報センターのAPIを確認

### APIのマニュアル
G空間情報センターはCKANベースの用ですが、APIのマニュアルも公開されています。
[How to use](https://front.geospatial.jp/how_to_use/)のページからAPIマニュアルがあります。
APIマニュアル：　https://front.geospatial.jp/wp-content/uploads/2022/03/gic-api.pdf

### APIの実験

例えば、 https://www.geospatial.jp/ckan/api/3/action/package_search?q=(tags:法務省%20AND%20title:新潟市) とすると（％20は半角スペースのことです）、以下の様な反応があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/050e4189-c73b-8916-2571-d233d1851cd4.png)
結果を眺めます。JSONなので、いろいろと見てみたいと思います。

PowershellでAPIからJSONデータを受け取り、検索結果をいろいろと見てみました。

```PowerShell
$jsonData = (curl.exe 'https://www.geospatial.jp/ckan/api/3/action/package_search?q=(tags:法務省%20AND%20title:新潟市)' | ConvertFrom-JSON)
Write-Host ($jsonData.success)
Write-Host ($jsonData.result)
Write-Host ($jsonData.result.results)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/06ca4e2d-756a-f649-cd0a-452cc4931d8d.png)

なお、APIを探検するに当たり、以下の二つの記事が大変参考になりました。ありがとうございます。

https://qiita.com/tkhrmeme/items/6992de0bc7d134f500b5

https://qiita.com/tkhrmeme/items/2581cdf684369b9961b4



##  STEP 3: APIで2023年度地図XMLのダウンロードURLを取得
いろいろと見てみましたが、最終的にはAPIでpackageを検索するのではなくて、リソースを検索した方がデータセットにたどり着きやすいかなと考えました。

packageだと一つの法務局に、3つのリソース（利用規約、2022年度のデータ、2023年度のデータ）が入っているので、APIでの検索で上手く2023年のリソースだけに絞れなかったためです。（私の実力では・・・）


以下の様にすることにしました。

```Powershell
$jsonData = (curl.exe 'https://www.geospatial.jp/ckan/api/3/action/resource_search?query=name:-2023.zip&limit=2005' | ConvertFrom-JSON)
Write-Output ($jsonData.result.results.URL) | Out-File url2023.txt
Write-Output ($jsonData.result.results.name) | Out-File name2023.txt
```

(ポイント)
* 2023年度の地図XMLを検索しますが、「-2023.zip」で終わるリソースは2023年のXMLデータだけらしく、この条件でぴったり検索出来ました。（ラッキー）
* limitを2005にしているのは、適当な数で読んだ後に、Write-Host ($jsonData.result.count)をすると2005になっているからです（下図）。このとき、私の環境だとlimitを指定しないと10レコードくらいしかリソースが出てきませんでしたのでレコードの数だけlimitで数を指定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/6a7dc8fd-a78d-a8a3-ae19-621cf723b96c.png)
* APIをcurl.exe（Powershellなのでcurlでない）でアクセスしてJSONデータを受け取り、検索結果のリソースのもつデータのURLとデータの名前をOut-Fileとして書き出します。

出力したurl2023.txtは以下の様な感じです。ダウンロード用のURLがわかりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/b577ecf5-7304-822b-57e9-99423959c987.png)

##  STEP 4: データのダウンロード
前のステップまでで2005ファイルのURLがわかったので、それぞれに対して以下のコマンドでダウンロード出来るはずです。

```
curl.exe -LO (ファイルのURL)
```

しかし、G空間情報センターからのダウンロードでは、リクエストヘッダに自分のAPI-KEYを入れておく方が良いです。

:::note info
G空間情報センターからのデータダウンロード
センターのウェブサイトからダウンロードするときにはログインが必須ですが、コマンドだとログインしなくてもダウンロード出来ます。この点についてG空間情報センターに問い合わせて確認したら、おおむね以下の様なお返事でした。
* ウェブブラウザからのアクセスと、APIで操作の違いがあるのは事実。
* 法務省地図XMLのダウンロードに際し、利用規約を確認しておく必要がある。
* コマンドベースでのダウンロードには特にルールはないが、リクエストヘッダにAPI Keyを入れておいてほしい。
:::


自分のAPI KeyはG空間情報センターにログインしてすぐの画面で確認出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/35b16661-e313-0243-dc02-92cfcb4f60a6.png)

確認したAPI Keyを使って以下の様にダウンロードします。-Hオプションで多分API Keyを送れていると思うのですが。。（間違えていたら教えてください。）

```
curl.exe -LO -H"X-CKAN-API-Key:<自分のAPI Key>" https://www.geospatial.jp/ckan/dataset/...(対象ファイルのURL)
```

ダウンロードしてきたURLリストの前に、curl.exe -LO -H"X-CKAN-API-Key:<自分のAPI Key>"を貼り付けてコマンドを準備します。私は最初の "https" を "curl.exe -LO -H"X-CKAN-API-Key:<自分のAPI Key>" https"に置換する方法でコマンドを準備しました。下の絵では、私のAPI Keyなので黒塗りにしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/9b0f081e-7165-8db7-fec9-43d58542ff5e.png)

PowerShellにコピペするとダウンロードが始まります。最後の一行は自分でエンターキーを押さないといけない時もあるかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/8f1768f7-5fc5-b6c9-ebd4-088231fca6f7.png)

フォルダにファイルが入っていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679143/0b771167-b235-5059-9f5f-3a37d64d6bf8.png)

:::note info
ダウンロードの時間
ファイルサイズ、通信環境の違いやPCの処理速度にもよると思いますが、私の環境だと55ファイルで20分くらいでした。全体（2000ファイル）をダウンロードするには単純計算だと800分（≓13時間）くらい必要そうです。
G空間情報センターへのアクセスが集中しても困りますから、Kuwanauchiプロジェクトの成果を利用するなど、分散型のデータ配布・データ利用も少し意識することが大事かもしれませんね。
https://github.com/amx-project/kuwanauchi
:::


# まとめ
この記事では法務省登記所備付地図データのダウンロードURLの調べ方をメモしました。ラッキーなことに、2023年、2022年共に『-2022.zip』か『-2023.zip』を名前に含むリソースを検索すると出てきます。

URLからは普通にcurlでダウンロード出来そうですが、API-KEYをきちんと付してダウンロードする方法がよいです。

他の方の取組みも参考にさせていただきましたが、今回、Linuxコマンドや関係ツールがなくても、Windows PowerShellの環境だけでもダウンロード出来るようしたのが工夫した点です。

なお、地図XMLのデータの利用に関しては、データの利用規約をきちんと確認して利用するようにしましょう。

# 参考にしたページなど
以下のページなどをみました。ありがとうございました。
* G空間情報センター: https://front.geospatial.jp/
* 法務省のアナウンス：　https://www.moj.go.jp/MINJI/minji05_00494.html
* PowerShellでの変数定義： https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_variables?view=powershell-7.3 
* PowerShell JSONを読み込む/出力する： https://itsakura.com/powershell-json
* G空間情報センターでCKAN APIを使ってみる（入門編）： https://qiita.com/tkhrmeme/items/6992de0bc7d134f500b5
* G空間情報センターでCKAN APIをつかってみる（応用編）： https://qiita.com/tkhrmeme/items/2581cdf684369b9961b4