Upgrade to Pro — share decks privately, control downloads, hide ads and more …

来たぞ登記所備付XMLデータ(1) / moj map xml data digest

sakaik
February 17, 2023

来たぞ登記所備付XMLデータ(1) / moj map xml data digest

2023/02/16 オンラインにて「法務省 登記簿備付地図XMLデータ」について、私がここまで学んだこと、試みたことを発表するイベントを開催しました。
手がけてから2週間(その時点でデータ公開から10日ほど過ぎていたので、遅いスタートではありましたが)という短い時間ながら、活発な情報流通の波に乗って膨大な知識(当社比)が貯まりました。いったんそれらを吐き出しておきたく、興味はありながらもまだこのデータに手を出していない人に向けて説明する機会といたしました。 その発表資料です。

■ 来たぞ!登記所備付地図XML (1)
~ sakaik がこれまでに知った範囲の情報と見てきたファイルフォーマットについて解説する回
https://connpass.com/event/275338/

sakaik

February 17, 2023
Tweet

More Decks by sakaik

Other Decks in Technology

Transcript

  1. 今日のおしながき 1. これなんなの 2. どんな取り組みがなされてるの 3. ファイルフォーマットの詳解とデータ量の凶暴さについて 登記所備付地図データXML 1,2 は、この数週間で先達の皆さんに教えていただいたことや公

    知の情報を私なりに理解した内容をお話します。 3 は、私が見てきた XMLファイルの中身について紹介をしたい と思います。ここが今日の中心です。
  2. 自己紹介 • 坂井 恵 (さかいけい) • @sakaik • 有限会社アートライ •

    日本MySQLユーザ会 副代表 • OSGeo.JP 運営委員 • 測量士補 みんなが このデータを使って地図に載せている中、 ひたすら、データファイルを見続けている 今回の地図XMLに関しては、
  3. 今回公開されたコレ、なんなの 登記所備付地図 • 登記所? • 登記? • 地図? 本日の参加申込者アンケート Q:

    登記所(法務局)に行ったことがありますか(n=44) 2 日常的に。 7 何度も。 12 行ったことはある 23 一度もない 事後補足:こんな話をしました - 登記所では、法人と不動産(土地など)の情報を管理しているんだよ - 法人や不動産の「登記簿謄本」を取得できる(個人の「住民票」みたいなもん) - 土地の謄本には、住所や面積等があるだけで、その住所が具体的にドコの場所かどんな形かは記 されていない - 「不動産登記法」で、登記所に別途地図を備え付けることが決められている - (その「地図」にも、14条地図とか公図(地図に準ずる)とかあるんだけど今回は説明割愛) - 今回公開されたのは、その「備付地図」をデジタル化したもの
  4. 地図で見る試みのひとつを紹介 • 今ここ何番地? (法務省地図 on MapLibre) • by 土地家屋調査士 白土洋介氏

    • https://office-shirado.github.io/Moj_Maps/ • MapLibreを使って開発(開発早かった!) ※今日は データのビジュアライズ 例として、「今ここ何番地?」を 使わせていただきます。 ありがとうございます。
  5. 登記所備付地図XMLデータを入手しよう • 本家は、「G空間情報センター」 • 欲しい地域のZIPファイル(1)をひとつひとつダウンロード • ZIPファイル(1) の中に ZIPファイル(2)がたくさん •

    ZIPファイル(2)の中にひとつの XMLファイル • 今回は kuwanauchi からの入手をお勧め • 二重ZIPを展開済で扱いやすい • 2023年2月初旬時点で全部揃っていることを確認済 • お手軽に入手: git clone しよう • → 坂井のリポジトリ scriptフォルダ内 に clone_kuwanauchi.txt もあるのでよしなに
  6. 地図XMLファイルを見てみよう • XMLファイルの概要 • 基本情報 • 空間属性(あとで) • 主題属性(あとで) •

    図郭* ※テキストエディタで、実際のファイルを見てみましょう 事後補足:テキストエディタで実際のXMLファイルを 開いて、<地図>~</地図> および、その中に含まれ るXML要素について説明しました。結構階層が深い のだということを見てもらえたと思います。
  7. 「位置の情報」の基本 • 「緯度経度」 • 測地系色々 • 日本は主に JGD2011 (2001年にTokyoからJGD2000に移行) •

    GPSとかは WGS84 • 「地理座標系」と「平面直角座標系」 • 地球は丸い → 地理座標系(緯度経度) • でも計算大変なので平面で考えるよ→平面直角座標系(メートル) ここでちょっと基礎知識注入
  8. 平面直角座標系 • (細かい話は抜きにして) • 前提条件として、 • 球面を平面で表すのだから、絶対に歪む • 要するにメルカトル(横メルカトル) •

    (グリーンランドが大きくなるアレ。ただし筒の向きは横向きにする) • 中心から遠くになるほど歪みは大きい • 実用上問題がない範囲をひとつのエリアとして定義 • 日本を19のエリアに分割 • 中心点から、北に何メートル、東に何メートル、という2つの数字で位 置を表す
  9. もうひとつの座標系:任意座標系 • 外の世界とのつながりを意識せ ず、「この図の中の世界」だけ で辻褄の合った座標値 • このままでは、地図上に乗せる ことはできない(「外の世界の 座標」に変換する情報は何も 持っていない)

    • 歴史的経緯より、これはやむを 得ないこと 事後補足:「地租改正」からミャクミャクと続く地図 データのお話を少ししました。 事後補足:最初のほうで「データがないように みえるエリア」というのは、コレのことでした。
  10. 筆情報 • <主題属性> の中に<筆>のブロッ クがたくさんあります。 • ひとつの筆の情報は以下のもの • 大字 のコードと名前

    • 丁目 のコードと名前 • 地番 のコードと名前 • 予備用のコード • 座標値種別:「測量成果」or「図上測量」 • 形状: ポリゴン(面)のID その他「精度区分」などがあります
  11. 筆 ~ データを追ってみよう • ID "H000000131" の筆情報を 追いかけてみよう。なお、この ファイルは冒頭で「任意座標 系」であることが示されている

    • 右図のような大字、地番を持つ ことがわかる • 実際に測量したものではなく図 上で位置を求めたものであるこ とがわかる • この筆は "F000000131" とい う形らしいぞ
  12. 面 ~ データを追ってみよう • F000000131 は、GM_Surface内のPolygon定義であることがわかる • このポリゴンは、C832 / C833

    / C834 / C835 / C836 の5つの線に囲ま れていることがわかる(ゼロ省略表記しました) • さしあたって "C000000832" を追ってみよう
  13. 仕上げ ~データを追ってみよう • 他の線も同様に調べると、線を構成する点は、 • C000000833 は P000000446, P000000418 •

    C000000834 は P000000418, P000000329 • C000000835 は P000000329, P000000401 • C000000836 は P000000401, P000000445 • これらの点は、 • P000000418 X,Y = -57.300, 96.360 • P000000329 X,Y = -54.663, 93.782 • P000000401 X,Y = -52.075, 94.783 となる。(取り囲む形を表しているので、ひとつ前の線の終点が次の線の視点となっていることに注目) このことから、筆 id="H000000131"は、 (-54.769, 102.405), (-59.512, 100.760), (-57.300, 96.360), (-54.663, 93.782), (-52.075, 94.783), (-54.769, 102.405) で囲まれたポリゴンを示していることが分かる (ぐるりと回って最初の点に戻っていることに注目)
  14. できちゃった・・・・ 平面直角座標→緯度経度 事後補足:式を解読できたので、そりゃ実装したくなり ますよね。イベントの前の晩に数時間かけて書いちゃ いました(笑)。この関数、後ほど皆さん自由に使っても らえるように私のGitHubで公開します。 一番大変なのがデバッグでした(1カ所数字が間違 えていたのと、1カ所演算子を間違えていた(*とすべ きところ**になっている箇所があった)という、式をひと つひとつ見比べながらの地味なデバッグでした)。

    あ、あと。これから自分でも実装しようと思っている方。 国土地理院の式には、与えられる原点の角度につい て、度→ラジアン への変換をわざわざ式の中に書い てくれている部分と、その変換がない(ラジアンを前提 として変数を使用している)箇所が混在しているので、 注意が必要です。(ρ'' が関係する箇所です)
  15. F000000168 $ grep 'F000000168' 12chiba_* | grep '12227-0443-27' 12chiba_surface.csv:12227-0443-27.zip F000000168

    C000002407 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002408 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002409 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002410 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002411 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002412 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002413 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002414 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002415 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002416 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002417 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002418 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002419 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002420 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002421 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002422 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002423 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002424 12chiba_surface.csv:12227-0443-27.zip F000000168 C000002425
  16. sakaik@saty6:/mnt/f/work/houm_mapxml/outtsv$ grep -e '12227-0443-27' 12chiba_* | grep -e 'C000002407' -e

    'C000002408' -e 'C000002409' -e 'C000002410' -e 'C000002411' -e 'C000002412' -e 'C000002413' -e 'C000002414' -e 'C000002415' -e 'C000002416' -e 'C000002417' -e 'C000002418' -e 'C000002419' -e 'C000002420' -e 'C000002421' -e 'C000002422' -e 'C000002423' -e 'C000002424' -e 'C000002425' 12chiba_curve.csv:12227-0443-27.zip C000002407 P000001478 12chiba_curve.csv:12227-0443-27.zip C000002407 P000001471 12chiba_curve.csv:12227-0443-27.zip C000002408 P000001471 12chiba_curve.csv:12227-0443-27.zip C000002408 P000000704 12chiba_curve.csv:12227-0443-27.zip C000002409 P000000704 12chiba_curve.csv:12227-0443-27.zip C000002409 P000000705 12chiba_curve.csv:12227-0443-27.zip C000002410 P000000705 12chiba_curve.csv:12227-0443-27.zip C000002410 P000000706 12chiba_curve.csv:12227-0443-27.zip C000002411 P000000706 12chiba_curve.csv:12227-0443-27.zip C000002411 P000000707 12chiba_curve.csv:12227-0443-27.zip C000002412 P000000707 12chiba_curve.csv:12227-0443-27.zip C000002412 P000000708 12chiba_curve.csv:12227-0443-27.zip C000002413 P000000708 12chiba_curve.csv:12227-0443-27.zip C000002413 P000000709 12chiba_curve.csv:12227-0443-27.zip C000002414 P000000709 12chiba_curve.csv:12227-0443-27.zip C000002414 P000000710 12chiba_curve.csv:12227-0443-27.zip C000002415 P000000710 12chiba_curve.csv:12227-0443-27.zip C000002415 P000000711 12chiba_curve.csv:12227-0443-27.zip C000002416 P000000711 12chiba_curve.csv:12227-0443-27.zip C000002416 P000000712 12chiba_curve.csv:12227-0443-27.zip C000002417 P000000712 12chiba_curve.csv:12227-0443-27.zip C000002417 P000000713 12chiba_curve.csv:12227-0443-27.zip C000002418 P000000713 12chiba_curve.csv:12227-0443-27.zip C000002418 P000000714 12chiba_curve.csv:12227-0443-27.zip C000002419 P000000714 12chiba_curve.csv:12227-0443-27.zip C000002419 P000000715 12chiba_curve.csv:12227-0443-27.zip C000002420 P000000715 12chiba_curve.csv:12227-0443-27.zip C000002420 P000001472 12chiba_curve.csv:12227-0443-27.zip C000002421 P000001472 12chiba_curve.csv:12227-0443-27.zip C000002421 P000001479 12chiba_curve.csv:12227-0443-27.zip C000002422 P000001479 12chiba_curve.csv:12227-0443-27.zip C000002422 P000001497 12chiba_curve.csv:12227-0443-27.zip C000002423 P000001497 12chiba_curve.csv:12227-0443-27.zip C000002423 P000001496 12chiba_curve.csv:12227-0443-27.zip C000002424 P000001496 12chiba_curve.csv:12227-0443-27.zip C000002424 P000001495 12chiba_curve.csv:12227-0443-27.zip C000002425 P000001495 登場する C0000xxxx
  17. sakaik@saty6:/mnt/f/work/houm_mapxml/outtsv$ grep -e '12227-0443-27' 12chiba_* | grep -e 'C000002407' -e

    'C000002408' -e 'C000002409' -e 'C000002410' -e 'C000002411' -e 'C000002412' -e 'C000002413' -e 'C000002414' -e 'C000002415' -e 'C000002416' -e 'C000002417' -e 'C000002418' -e 'C000002419' -e 'C000002420' -e 'C000002421' -e 'C000002422' -e 'C000002423' -e 'C000002424' -e 'C000002425' 12chiba_curve.csv:12227-0443-27.zip C000002407 P000001478 12chiba_curve.csv:12227-0443-27.zip C000002407 P000001471 12chiba_curve.csv:12227-0443-27.zip C000002408 P000001471 12chiba_curve.csv:12227-0443-27.zip C000002408 P000000704 12chiba_curve.csv:12227-0443-27.zip C000002409 P000000704 12chiba_curve.csv:12227-0443-27.zip C000002409 P000000705 12chiba_curve.csv:12227-0443-27.zip C000002410 P000000705 12chiba_curve.csv:12227-0443-27.zip C000002410 P000000706 12chiba_curve.csv:12227-0443-27.zip C000002411 P000000706 12chiba_curve.csv:12227-0443-27.zip C000002411 P000000707 12chiba_curve.csv:12227-0443-27.zip C000002412 P000000707 12chiba_curve.csv:12227-0443-27.zip C000002412 P000000708 12chiba_curve.csv:12227-0443-27.zip C000002413 P000000708 12chiba_curve.csv:12227-0443-27.zip C000002413 P000000709 12chiba_curve.csv:12227-0443-27.zip C000002414 P000000709 12chiba_curve.csv:12227-0443-27.zip C000002414 P000000710 12chiba_curve.csv:12227-0443-27.zip C000002415 P000000710 12chiba_curve.csv:12227-0443-27.zip C000002415 P000000711 12chiba_curve.csv:12227-0443-27.zip C000002416 P000000711 12chiba_curve.csv:12227-0443-27.zip C000002416 P000000712 12chiba_curve.csv:12227-0443-27.zip C000002417 P000000712 12chiba_curve.csv:12227-0443-27.zip C000002417 P000000713 12chiba_curve.csv:12227-0443-27.zip C000002418 P000000713 12chiba_curve.csv:12227-0443-27.zip C000002418 P000000714 12chiba_curve.csv:12227-0443-27.zip C000002419 P000000714 12chiba_curve.csv:12227-0443-27.zip C000002419 P000000715 12chiba_curve.csv:12227-0443-27.zip C000002420 P000000715 12chiba_curve.csv:12227-0443-27.zip C000002420 P000001472 12chiba_curve.csv:12227-0443-27.zip C000002421 P000001472 12chiba_curve.csv:12227-0443-27.zip C000002421 P000001479 12chiba_curve.csv:12227-0443-27.zip C000002422 P000001479 12chiba_curve.csv:12227-0443-27.zip C000002422 P000001497 12chiba_curve.csv:12227-0443-27.zip C000002423 P000001497 12chiba_curve.csv:12227-0443-27.zip C000002423 P000001496 12chiba_curve.csv:12227-0443-27.zip C000002424 P000001496 12chiba_curve.csv:12227-0443-27.zip C000002424 P000001495 12chiba_curve.csv:12227-0443-27.zip C000002425 P000001495 「浦安市鉄鋼通り2丁目 105-1」まとめ • 細かい座標は追っていないけど、たくさんの点によって成立し ていて、たぶん、カドマルの部分を細かく打ってるんだろう なぁと想像できます。 事後補足:当該部分拡大写真を載せました。確かにこ まかく直線が繋がることで、カーブを表していることが わかります。 一部で線が二重になっている箇所がありますが、これ は道路側と敷地側で別々の筆界線を採用しているの かなぁ、と想像。
  18. 坂井の取り組み • GitHub: 「登記所備付地図データダイ ジェスト」 • 地図に情報を載せるでもなく、 ひたすら、データだけを見て何 か面白い集計とかできないかな とやっています。

    • 単にDBに乗せて何かできない かなと思っていただけ 事後補足:集計した結果や抜き出したデータなどは、 すべて、 https://github.com/sakaik/kuwanauchi_xml_ digest/tree/main/text/ の中で公開しています。
  19. 楽しい世界へのお誘い • ぜひ、ご自身で触ってみてください • XMLファイルをダウンロードして何かするもヨシ • 他の人が用意してくれたファイルをスタート地点とするもヨシ • データの確認をしてみるのもヨシ •

    何かをまとめてみるのもヨシ • (今後出てくるであろう)任意座標データを補正する作業を手伝うもヨシ • まずは #amxproject をチェック • あなたも#amxprojectで情報発信(あるいは疑問をつぶやく) あなたのアウトプットが、 次のアウトプットを生み出すかもしれません