
【Tableau】サポートされているマップデータのみで完全な市区町村マップを表現してみた。
こんばんは、Tableau DATA Saber挑戦中のeightmanです。
備忘録を兼ねてNoteにTips等を記録していきたいと思います。
今回は、Tableauのサポートされているマップデータのみを使って、
不明な地理的位置を0(日本地図上の空白箇所を無くす)にして、マップ表現する方法をご紹介します。
国土地理院のジオメトリデータを使った方法は見かけるのですが、
意外と他のブログ等にも記載がない?と思うのです。
ぜひ、参考にしてみてください。
1.一般的な市区町村データを使ってマップ表現した場合
2024.12.31時点の全国市区町村の数は1741となります。(特別区23区含む)
1741の市区町村がリストされているデータを地理的役割「郡」に設定し、マップ表現すると・・・


上記の通り、47個も地理的位置が不明な市区町村名が存在してしまいます。
同じ名称も含めて47個なので、実際の空白箇所はそれ以上となっています。
これだと全国市区町村のデータをマップ上で表現することが難しいですね。
なぜ、47個の原因を探っていきます。
2.不明な地理的位置の原因
主な原因は大きく以下の4点です。
政令指定都市は「市」ではなく、「区」単位で認識するようになっているため、「認識不可」となっている。
※ただし何故か「仙台市」と「横浜市」は認識される。
→18名称が該当。町名が同じものについては地理的位置が特定できないため、「あいまい」となっている。
→22町の名称が該当。市名が同じ(府中市、伊達市)ものが「あいまい」となっている。
東京23区の3区(港、中央、北)が他政令市の区の名称と同じであるため、「あいまい」となっている。
→2市、3区の名称が該当。その他
①福岡県の「須恵町」は「須惠町」で認識するため「認識不可」となっている。
※正式名称は「須恵町」だが、住民基本台帳や戸籍では「須惠町」と表記するようです。
②福岡県の「那珂川市」が2018年まで「那珂川町」であったため、栃木県の「那珂川町」が「あいまい」となっている。
以下は、47の不明となったリストです。

3.対処方法
これらの原因に対処していく方法をご紹介します。
1.政令指定都市は「市」ではなく、「区」単位で認識するようになっているため、「認識不可」となっている。
・これについては、データソースの元々の「市区町村」データ以外に、
「政令市名称+区名称」(例:札幌市中央区)が入力されたデータが必要となります。
政令市以外の市区町村は、「市区町村」と同じデータを入力しておけばOKです。ここでは、「市区町村(政令市区あり)」という列項目にして、対応していきます。
(例)

新たに作成した「市区町村(政令市区あり)」のデータでマップ表示すると、

このように「区」単位でマップ表現することができるようになります。
ただ、今回の場合は政令市は「神戸市」、「京都市」のように「市」単位で表現したいので、元々の「市区町村」のデータ型を「地理的役割」→「次から作成」→「市区町村(政令市区あり)」に変更します。

変更した「市区町村」のデータでマップ表現をすると、以下のように「市」単位で政令市を表現することができるようになります。

これで1の原因については解消されました。
続いて2の原因への対処方法を見ていきます。
2.町名が同じものについては地理的位置が特定できないため、「あいまい」となっている。
・こちらについては、23通り54か所が該当します。
※上記で22通りと記載しましたが、「松前町」のみ北海道の松前町がそのままマップ表示されるため、地理的位置不明リストに松前町が現れませんが、愛媛県の松前町はそのままだとマップ上に表記されません。
これらについては、以下の通り「郡名+町名」を表記することで、
それぞれの位置関係が明確になりマップ表現することが可能となります。

「市区町村(政令市区あり)」項目にも同名称で表記しておく。
ちなみに、原因「その他」としていた、福岡県の「須恵町」は「須惠町」
と入力、栃木県の「那珂川町」は「那須郡那珂川町」と入力でOKです。
最後に、原因3へのの対処方法を見ていきます。
3.東京23区の3区(港、中央、北)が他政令市の区の名称と同じであるため、「あいまい」となっている。
・この原因については、なかなか解決方法が見出せず苦労しました。
試しに「東京都中央区」や「広島県府中市」と入力してもTableauは認識してくれませんでした。

試錯誤を繰り返した結果、以下の通り実施すると全てが解消されました。
各市区町村に対する都道府県データを用意する。
「市区町村(政令市区あり)」の地理的役割を「郡」にする。
「市区町村」の地理的役割を「次から作成」→「市区町村(政令市区あり)」にする。
「都道府県」の地理的役割を「都道府県/州」にする。
階層を作成し「都道府県」-「市区町村」-「市区町村(政令市区あり)」の順で階層構造にする。
「市区町村」でマップ表記する。
この時点で、地理的位置の不明は全て解消されます・・・・・・
ただし、この状態だと「都道府県」ディメンションをマークカードの詳細に入れてみるとわかりますが、「北海道伊達市」が「福島県伊達市」、
「東京都府中市」が「広島県府中市」と表記されてしまいます。

8.上記解消するため、「都道府県」と「市区町村(政令市区あり」の
ディメンションを「詳細」カードに入れることで正しく認識されるように
なります。
これでようやく完全な市区町村マップが完成です。

いかがでしたでしょうか。
データを作成するのは中々骨の折れる作業でしたが、
皆様が同じ思いをしないよう上記Vizと共にデータを公開します。
お役に立てれば幸いです。
今回は、Tableauでサポートされているマップデータのみで、
完全な市区町村マップを表現することに挑戦してみました。
これから継続的に投稿しようと思いますので、
よかったらまた覗きにきてください。