地番区画データ取得ライブラリ
登記所備付地図データ(地図XMLファイル)から地番ごとの区画形状データ(ポリゴンデータ)を抽出するとともに、
利用しやすい座標系に変換して可視化するために開発したPythonライブラリです。
経緯
所有地が複数の地番で構成され共用部分や私道持分などがある場合に、
ご近所を含む地番区画を分かりやすく可視化できると良い(気分的にスッキリするし代替わり時に円滑に引き継げる)。
- 法務省がG空間情報センターで登記所備付地図データ(地図XMLファイル)を公開しており誰でも取得できる。
- 登記所備付地図データには公共座標系と任意座標系の二種がある。
- 国は公共座標系のデータ整備を推進しており、郊外地域の整備はある程度進んでいるが、都市部での整備はあまり進んでいないのが実情である。
- 公共座標系のデータは一般的な地図アプリケーションで表示できる。
- 公共座標系の地図XMLファイルを一般的な地図アプリケーションで扱えるGeoJSON形式に変換するツールをデジタル庁が公開しているとともに、 G空間情報センターに変換済のGeoJSON形式データも公開されている。
- 公共座標系の地図XMLファイルをそのまま表示できる地図アプリケーションもある。
- 任意座標系のデータは原点位置と方角が適当な座標系で表現されているため、一般的な地図アプリケーションで表示できない。
- 一部の地図アプリケーションでは任意座標系のデータをマッピングして地図上に表示する機能を有しているが、 この機能を他に組み込んで利用したり、表示された地図を自由に二次利用できない (よく分からないが、AIを利用した画期的な技術で実現したらしい)。
- 当方居住地の地図XMLファイルをダウンロードして確認したところ、残念なことに任意座標系のデータで一般的な地図アプリケーションで表示できなかった。
- 地図XMLファイルの中身を確認したところ、さほど複雑ではなく解析ソフトウェアを簡単に実装できそうであった。 そこで、任意座標系の地図XMLファイルから地番ごとの区画形状データ(ポリゴンデータ)を抽出するとともに座標系を合わせ込む機能を有するライブラリを開発し、 所有地を分かりやすく可視化することにした。
LandShapeクラス
- 地番区画データ取得ライブラリで利用可能なただ一つのクラス
- LandShape(xmlpath, chiban_set)
- コンストラクタ: 地図XMLファイルを解析して指定された地番の区画形状データを抽出する
-
- 引数
- xmlpath: 地図XMLファイルパス
- chiban_set: 対象の地番リスト
- raw_shape()
- 区画形状データ(ポリゴンデータ)を地図XMLファイル座標値(元データ形式)で取得する
- norm_shape(min, max)
- 区画形状データ(ポリゴンデータ)を指定値域に正規化した座標値で取得する
-
- 引数
- min: 正規化座標の最小値
- max: 正規化座標の最大値
- fit_shape(src_pts, dst_pts)
- 区画形状データ(ポリゴンデータ)を指定した四辺形に合わせるよう射影変換した座標値で取得する
-
- 引数
- src_pts: 地図XMLファイルにおける四辺形四隅の頂点座標リスト
- dst_pts: src_ptsの座標変換後の頂点座標リスト
地図XMLファイル座標値を取得
- 指定した地番の区画形状データ(ポリゴンデータ)を地図XMLファイル座標値(元データ形式)で取得する
from landshape import LandShape
xmlpath = (地図XMLファイルパス)
chiban_set = (対象の地番リスト)
land = LandShape(xmlpath, chiban_set)
rawshape = land.raw_shape()
print_shape(rawshape)
正規化した座標値を取得して可視化
- 指定した地番の区画形状データ(ポリゴンデータ)を値域[10, 490]に正規化した座標値で取得する
from landshape import LandShape
xmlpath = (地図XMLファイルパス)
chiban_set = (対象の地番リスト)
land = LandShape(xmlpath, chiban_set)
normshape = land.norm_shape(10, 490)
print_shape(normshape) - 取得した区画形状データ(ポリゴンデータ)座標を500x500サイズのキャンバスに描画する
小さい画面で利用される場合はスクロールまたは画面全体を縮小してご確認ください
- 地番区画データ描画ライブラリを利用して描画する方法は 所有地を可視化する を参照
Googleマップに合わせるように射影変換した座標値を取得して可視化
- 指定した地番の区画形状データ(ポリゴンデータ)をGoogleマップに合わせるよう射影変換した座標値で取得する
from landshape import LandShape
xmlpath = (地図XMLファイルパス)
chiban_set = (対象の地番リスト)
land = LandShape(xmlpath, chiban_set)
src_pts = (地図XMLファイルにおける四辺形四隅の頂点座標リスト)
dst_pts = (Googleマップにおける四辺形四隅の頂点座標リスト)
fitshape = land.fit_shape(src_pts, dst_pts)
print_shape(fitshape) - 取得した区画形状データ(ポリゴンデータ)座標をdst_ptsに合わせたサイズのキャンバスに描画する
小さい画面で利用される場合はスクロールまたは画面全体を縮小してご確認ください© Google
- 指定住所居住者が所有する土地を赤系の色で塗りつぶす機能を追加した例は 所有地を可視化する を参照
(参考)登記所備付地図データ(地図XMLファイル)を取得する方法
- G空間情報センターにログインする(事前にユーザー登録が必要)
- [データセット]を選択、市区町村レベルの目的住所を入力して検索する
- [登記所備付地図データ]を選択
- ファイル名末尾の年号が新しいzipファイルを選択し[ダウンロード]
- [利用規約を承諾する]とダウンロードが始まる
- ダウンロードしたzipファイルから、対象ファイルを特定するためのcsvファイルを取り出す
- csvファイルを開き、目的住所で検索して対象のzipファイル名を確認する
- ダウンロードしたzipファイルから、対象のzipファイルを取り出し解凍すると目的の地図XMLファイルが得られる
今後について
- ご要望があれば、必要なファイルを提供させて頂くとともに、機能の改善や強化を検討したいと考えていますので、お気軽にご連絡ください。
- 現状のライブラリは地図XMLファイル仕様のすべてをサポートできていない可能性があり、場所によっては区画形状データの抽出に失敗するかもしれません。 失敗する地図XMLファイルが見つかればライブラリを改修したいと考えていますが、これまで失敗する地図XMLファイルに遭遇していないため現状のままになっています。 どなたかが本ライブラリを試してみて失敗する地図XMLファイルを教えて頂けると助かります。
- ご指定場所の地番区画を可視化したHTMLファイルを作成させて頂くことも可能です。作成したHTMLファイルはWEBブラウザで表示できます。