🚚

日本の町域一覧を作成してみた

2022/05/27に公開

こんにちは。地図パズル製作所の都島(みやこじま)です。今回は地図関連のネタとして、日本の町域一覧を作成する方法をまとめていきたいと思います。ちなみに、町域っていうのは、「東京都港区虎ノ門3-7-12」で言うところの「虎ノ門」のことになります。市区町村の一覧は総務省が出しているのもありますから、簡単に手に入れることができます。でも、町域の一覧っていうのは、ネットで調べてもこれっていうものがありませんでした。デジタル庁が出しているデータもありますが、利用規約が微妙ですね。ということで、今回は町域の一覧をどうやって手に入れられるか、作っていくかお話ししたいと思います。

とここで、まず、地図パズル製作所を知らない方向けに、地図パズル製作所の宣伝をさせていただきます。地図パズル製作所では、ブラウザでできる無料の地図パズルを公開しています。

https://chizu-puzzle.com

まだ、やったことのない方はぜひ日本地図の地図パズルに挑戦してみてください。10分以内でできたら上級者です!

https://chizu-puzzle.com/puzzles/japan02/

日本地図の地図パズル

※地理院タイルを加工して利用しています。

では、本題に入りましょう!

町域一覧ってどんな時に必要になるの?

私の会社は地図関連のデータを扱うことはあまりないので、仕事で町域一覧を使ったことはありません。でも、町域一覧を使うことでいろいろ仕事の幅が広がると思います。プログラマーの方だと、お客様に住所を入力してもらうときに、県の名前を入力したら市区町村の候補がでてきて、市区町村を入力したら町域の候補がでてきて、、なんてシステムを作ることがあると思います。こういうシステムには町域一覧が必要ですね。

他にも、、といろいろと挙げていこうと思ったのですが、これくらいしか思い当たりませんでした(笑) ちなみに、私は大学の課題で、「地名における漢字の都道府県別使用分布」というものを作りまして、そのときに必要になりました。ということで、地理好き、地図好きの皆さんもきっと必要なときがくるはず!と思っております。

町域一覧を作っていこう!

町域一覧は、郵便局が出している郵便番号一覧から作成します。ですが、郵便局が出しているものはいろいろ使いにくいところがあるので、住所.jp というところから取得するのが良さそうです。

http://jusyo.jp/

住所.jp から SQLite3 の全国版をダウンロードしてきて、zip を展開します。

と、この記事は初心者向けですし、プログラマーでない方もいらっしゃると思うので、SQLite3 とは何か?なぜ CSV 版ではなくて、SQLite3 を使うのかということを簡単に説明します。

SQLite3 は他のデータベースと比べて、とても簡単に使えるリレーショナルデータベース(一番一般的なデータベース)で、「SQL」というものを使って操作します。今回 CSV ではなくて、SQLite3 版を使うのは、この SQL が使いたいからで、SQL を使うことで簡単にデータを絞り込んだり、集計したりできます。(Google Spread Sheet には SQL みたいなものもあるので、CSV を Spread Sheet にインポートして操作するというのでもいいですね。エクセルにも同じようなのがあるのかもしれません。でも、そこ辺りは詳しくありません。)

では、次に SQLite3 のデータにアクセスするために、DB Browser for SQLite をインストールしていきましょう。下のリンクからダウンロードして、インストールしてください。

https://forest.watch.impress.co.jp/library/software/sqldbbrowser/

インストールできたら、DB Browser for SQLite を開いて、先ほど展開したフォルダの下にある sqlite3 ファイルを開きます。そして、「SQL実行」タブから次の SQL を実行します。この SQL を簡単に説明すると、郵便番号一覧には町域名が重複していたり、昔あった町域が残っていたりするので、そういうものを削除しています。

SELECT ken_name, ken_furi, city_name, city_furi, town_name, town_furi 
	FROM ad_address WHERE delete_flg = 0 AND town_name != "NULL"
	GROUP BY ken_id, ken_name, ken_furi, city_id, city_name, city_furi, town_id, town_name, town_furi
	ORDER BY ken_id, city_id, town_id

そうすると、町域一覧が表示されましたね!これで、町域一覧は作成完了です!

CSV に出力したい方は DB Browser for SQLite の「SQL実行」の下の、右から4番目のマークを押すことで、CSV に出力できます。

ちなみに、できあがった CSV はこんな感じです。最初の数行を表示します。

ken_name,ken_furi,city_name,city_furi,town_name,town_furi
北海道,ホッカイドウ,札幌市中央区,サッポロシチュウオウク,旭ケ丘,アサヒガオカ
北海道,ホッカイドウ,札幌市中央区,サッポロシチュウオウク,大通西,オオドオリニシ
北海道,ホッカイドウ,札幌市中央区,サッポロシチュウオウク,大通東,オオドオリヒガシ
北海道,ホッカイドウ,札幌市中央区,サッポロシチュウオウク,北一条西,キタ01ジョウニシ
北海道,ホッカイドウ,札幌市中央区,サッポロシチュウオウク,北一条東,キタ01ジョウヒガシ
北海道,ホッカイドウ,札幌市中央区,サッポロシチュウオウク,北二条西,キタ02ジョウニシ
北海道,ホッカイドウ,札幌市中央区,サッポロシチュウオウク,北二条東,キタ02ジョウヒガシ
北海道,ホッカイドウ,札幌市中央区,サッポロシチュウオウク,北三条西,キタ03ジョウニシ

GitHub にできあがった CSV を公開しています。ちなみに、こちらは、住所.jp の 2022/5/23 時点でのデータを利用して作成しています。

https://github.com/miyakojima385/choiki_csv

最後に

今日は日本の町域一覧を作成する方法について、まとめてみました。町域一覧を使うことがありましたら、ぜひ参考にしてみてください!

ツイッターもよろしくお願いします!

https://twitter.com/chizu_puzzle

アメブロもやってます!

https://ameblo.jp/chizu-puzzle

Discussion