このたび法務省が公開している「登記所備付地図データ」のxmlファイルから基本情報を抜き出してCSV形式にした情報を、以下のGitHubリポジトリで公開しました。データだけでなく、様々な情報(スクリプトや感想やサマリのサマリなど)も併せて公開しているので、お楽しみいただければ幸いです。
github.com
きっかけ
Code for Japan主催、OSGeo.JP, UN Open GIS Initiative DWG7の共催で突然『緊急企画:法務省地図XMLハックナイト〜奥深き公図の世界にようこそ〜』というオンラインイベントが開催されました。イベントがアナウンスされたのが開催前日という、本当に「緊急企画」での開催でした。
https://amx-project.peatix.com/
私自身は、法務省が登記地図データをオンラインで、しかも誓約書等の面倒な手続きなしで利用できる状態で公開してくれたニュースは見て興味は持っていたものの、自分で触るには至っていませんでした。
このイベントで、たくさんの方がすでに触って楽しんでいること、公開されているXMLデータをより取得しやすくなるようリポジトリで整理してくれていること(負荷分散の面も)、などを知り、イベント最中にも早速ダウンロードして、話を聞きながら触ってみたといったところです。
今回公開しているもの
冒頭で紹介したリポジトリに、XMLデータのサマリ情報やその他さまざまな おもしろ(当社比)情報を公開しているので、ご覧ください。データの作り方や、簡単な集計をしてみた結果などを書いたファイルもあるので、特にこのブログでは再掲しませんが、ぜひご覧いただけましたら。
ファイルフォーマットについて
内容については、リポジトリを見てもらうことにして、ここで、初めて 法務省登記簿備付地図データを自分の目で見て(一応仕様書となる PDFファイルも参照して)、自分なりに理解したことを、概要レベルで簡単に紹介しておきます。
ファイル構成
法務省が公開しているデータは、
- 最終的な小さなエリアのXMLファイルをZIPにしたもの(1 zip で 1 xml)
- それをもう一段回大きなエリアごとに zip でまとめたもの(1 zip の中にたくさんのzipファイルがある状態)
- ひとつの県内に上気zipがたくさんあるので、それを都道府県ごとのリンク先からそれぞれダウンロードできる
という形になっています。全部を入手して、使いやすいように展開するまでに結構な手間がかかるので、1階層のzipの状態に展開して全国分を公開してくれているのが、kuwanauchi です。
https://github.com/amx-project/kuwanauchi
今回私もずいぶん助けられました。もとの公開状態だと、全部ダウンロードしてきて展開しただけで一仕事した気分になってしまったところですが、kuwanauchi のおかげで git clone するだけでいきなりスタート地点に立てたおかげで、その先の作業に集中することができました。
47都道府県ぶんの git clone は私のリポジトリでも公開しているのでご利用ください。
ファイルの中身の構造
ファイルはXML形式で、全体が<地図>~地図>で囲まれます。
その中に、各種基本情報(後述)、空間属性、主題属性、図郭のブロックが含まれます。
サンプル(雰囲気)を示すとこんな感じです(各要素の終端は省略している部分があります)。
<地図> <version>ver1.0</version> <地図名>日秀字観音前1179</地図名> <市区町村コード>12222</市区町村コード> <市区町村名>我孫子市</市区町村名> <座標系>任意座標系</座標系> <空間属性> <zmn:GM_Point id="P000000529">~~ <zmn:GM_Curve id="C000000001">~~ <zmn:GM_Surface id="F000000001">~~ <主題属性> <筆界点>~~ <筆界線>~~ <筆 id="H000000001"> ~~ <図郭>~~ </地図>
図郭情報はひとつのファイルの中に複数ある場合もあります(ゼロ個の場合もあります)。
今回私がダイジェストとしてまとめたのは、これらの情報から各ファイルの「version」「地図名」「市区町村コード」「市区町村名」「座標計」「公開日付」などの基本情報を抜き出したファイルと、図郭情報を抜き出したファイルの2つです。
基本情報のファイルには、図郭情報の数も含めておきました。
空間属性は、点と線と面のブロックに分かれていて、ざっくり言うと、各点(緯度経度またはXY)にIDをつけて、そのIDを使った線を定義してそれにも線IDをつけて、その線IDを使って面を定義して面IDをつけるという定義が延々と記述されているパートです。
主題属性は、点、線、面に意味を持たせるための対応付けを記述したものです。例えば点として定義されたID="P000000167"は「地籍図根多角点」ですよ、とか、線として定義された ID="C000000107"は「小字界線」ですよ、とか、筆情報として、大字・丁目・小字がコレコレは 面として定義された ID="H0000034" ですよ、とかそんな感じです。
図郭は見たところ、このひとつのXMLファイルを作成するために元にした紙の図面に関する情報かと思っているのですが、あってるかな。いつ作った、どんな縮尺でどんな紙に記述されていて、それぞれの図はどこかどこまでの範囲、のような情報が含まれています。ざっと眺めると歴史を感じることができるものあり、わくわくします。
おわりに
ということで、木曜日に「明日イベントやるよ」と知り、金曜夜にお話を聞きながら初めて地図XMLを実際に目にし、土日ほとんどをこのデータファイル群と戯れていました。仕事よりも集中していたかもしれない(笑)。 必要なのはファイル内の一部のデータだけなのに、python で xmltodict を使っておそらく無駄な部分の処理をいっぱいさせてしまったせいか、非常に処理に時間がかかるスクリプトになってしまい
(G空間で公開されているスクリプトがあるのは知っているのですが、自分で作ってみたかった)、一日中10スレッドくらい並行で処理を回す事をやっていました。ちょうど1年前に買った 12世代 i7くんの人生の中で一番仕事をした一日になったことと思います(笑)。
私はまだ、データをRDBMSにつっこんで概要の雰囲気を見た程度ですが、この膨大な面白そうなデータ、やはり地図に当てはめて見ていきたいですよね。 私自身の経験がその分野あまりないので、楽しみながら挑戦してみたいと考えています。みなさんも試されましたら、ご自身のブログなどでいろいろ教えてください!