オフラインで経緯度から住所地名(そこまで正確でなくともよい)に変換するシステムを作るための調査記録。
国土地理院が公開する街区レベル位置参照情報を調べた。
2023年度のものを使用する。
提供形式
提供されているのは都道府県別のZipファイルで、圧縮後のファイルサイズはそれぞれ1M~11MB、合計で132MB。
各Zipにはデータ形式を説明するテキスト文章と街区データのCSVファイルがある。
展開後のCSVファイルは8~215MB、合計1.96GBになる。
データ形式
CSVにはヘッダに続いて以下の項目が格納されている。詳細は同梱されているHtmlで確認できる。
列名 | カテゴリ | 型 |
都道府県名 | 地名 | string |
市区町村名 | 地名 | string |
大字・丁目名 | 地名 | string |
小字・通称名 | 地名 | string(空有) |
街区符号・地番 | 地名 | string |
座標系番号 | 座標1 | string |
X座標 | 座標1 | float (少数桁6) |
Y座標 | 座標1 | float (少数桁6) |
緯度 | 座標2 | float (少数桁1) |
経度 | 座標2 | float (少数桁1) |
住居表示フラグ | 数値 | |
代表フラグ | 数値 | |
更新前履歴フラグ | 数値 | |
更新後履歴フラグ | 数値 |
分析
地名、および座標2を対象に分析する。座標1は座標2から計算により算出できる。
緯度経度と平面直角座標の相互変換をPythonで実装する #Python - Qiita
方法
解像度を知るために、各項目のユニーク値、及び複合ユニーク値の数を調べる。
最初はデータベースに格納してから分析しようとしたが、効率よく処理できなかったので、pandasで直接処理することにした。(とてもはやい)
都道府県単位で処理し、最後にすべて結合した全国の値を調べた。
評価
全国
列名は変な英語になっているが以下の通り
- prefecture 都道府県ユニーク数
- records CSVのレコード数
- city 市町村ユニーク数
- block 大字ユニーク数
- unit 小字ユニーク数
- parcel 地番ユニーク数
- lat 経度ユニーク数
- lon 緯度ユニーク数
- location [経度,緯度]複合ユニーク数
- municipality [都道府県,市町村]複合ユニーク数
- district [都道府県,市町村,大字]複合ユニーク数
- レコード数(都道府県、市区町村、大字、小字、地番の複合ユニーク数)は1957万6027件である。
- cityは別都道府県同一名市町村があるため、municipalityより少ない。
- block,unit,parcelはレコード数に対して1%以下である。大字、小字、地番は全国に同じものがたくさんある。
- lat,lonの数が異なる。同一緯度に存在するレコードが存在する。
- locationの数がrecordに対して少ない。同じ場所に複数のレコードが登録されていることがある。
- lat,lon,locationの数が異なる。同一緯度、又は直線上に、地番が同一でないレコードが存在する。
- municipalityの数が自治体の数1718よりも少ない。データが整備されていない自治体がある。
考察
おまけ
CSVを置いておくのでご自由にお取りください。
gist.github.com