Queria

e-Stat 国勢調査の町丁字等別境界データに含まれる87件の未割当ポリゴンを特定する

Data usedqueria/e_stat

e-Stat の令和2年国勢調査 町丁字等別境界データは、全国約22万区画のポリゴンを収録した空間データの定番です。しかしこのデータには、定義書では想定されていない87件のレコードが含まれています。定義書は HCODE=8101 を「町丁字等」と定義していますが、KEY_CODE が都道府県コード(2桁)のみとなるケースについての記載はなく、補足説明にも言及がありません。

町丁字コードが不完全なため統計データとの結合ができず、空間結合やジオコーディングで意図しない集計ズレを引き起こす可能性があります。この記事では、SQLでこれらのレコードを特定し、その空間的な特徴を可視化します。

境界データの構造

町丁字等別境界データの各レコードには、ポリゴン(境界形状)とともに以下のフィールドが設定されています。

フィールド 内容 例
KEY_CODE 町丁字コード(PREF + KEYCODE2) 13101001000
KEYCODE2 マッチング番号 101001000
HCODE 分類コード 8101=町丁字等、8154=水面調査区
PREF_NAME / CITY_NAME / S_NAME 名称 東京都 / 千代田区 / 永田町
JINKO / SETAI 人口・世帯数 3056 / 2049
AREA 面積(㎡) 523849.2

KEY_CODE は都道府県コード(2桁)と KEYCODE2 を連結した値で、統計データとのリンクキーになります。通常は9桁(大字・町)または11桁(字・丁目)です。

未割当ポリゴンの特定

HCODE=8101(町丁字等)のレコードのうち、KEY_CODE が都道府県コード(2桁)しかないものを抽出します。これらは KEYCODE2 が NULL のため、統計データと結合できません。

全87件が該当します。すべてのレコードで S_NAME(町丁字名称)が NULL、JINKO(人口)と SETAI(世帯数)が0です。S_AREA・KIHON1・KIHON2 もゼロ埋め(000000・0000・00)で、町丁字への帰属情報が一切ありません。

これらのレコードに共通する特徴をまとめます。

  • KEY_CODE が都道府県コード(2桁)のみ。KEYCODE2 が NULL
  • HCODE = 8101(町丁字等)。水面調査区(8154)ではない
  • 人口0、世帯数0、名称なし。ただしジオメトリ(形状)は存在する
  • S_AREA・KIHON1・KIHON2 がすべてゼロ埋め

市区町村別の分布

87件がどの市区町村に集中しているかを確認します。

那智勝浦町(12件)、塩竈市(8件)、長崎市(5件)が上位で、沿岸部・離島の市区町村に多い傾向があります。一方で、群馬県伊勢崎市・埼玉県新座市・栃木県小山市・川崎市多摩区といった内陸部の市区町村にも存在します。

グラフに示す通り38の市区町村にわたって分布しており、特定の地域だけの問題ではありません。

地図で確認する: 塩竈市の例

未割当ポリゴンが空間的にどこに位置するかを確認するため、8件が集中する宮城県塩竈市を地図で表示します。地図描画にはカラム名が正規化された stg_census_boundary テーブルを使います。赤色が未割当ポリゴン、青色が通常の町丁字ポリゴンです。

赤色の未割当ポリゴンは沿岸部に集中しており、通常の町丁字ポリゴン(青色)がカバーしていない海岸線沿いの細い領域に対応していることがわかります。

これらの未割当ポリゴンは、町丁字等の調査区に含まれなかった残余領域と考えられます。沿岸部では海岸線と町丁字境界の間、内陸部では道路や河川沿いの空間に対応するケースが見られます。

面積の分布

87件の面積は一様ではありません。元データの AREA フィールド(図郭から算出された面積)で分布を確認します。

大半は1万㎡以下ですが、高知県須崎市のように1,000万㎡(約10km²)に達するものもあり、小さな町丁字よりも広い面積を持つケースがあります。面積の大きいものは、市区町村の沿岸部や離島全体を覆うような残余領域です。

用途に応じたフィルタリング

未割当ポリゴンを含めるべきかどうかは、分析の目的によって異なります。

町丁字等の統計データと結合する場合は、KEYCODE2 が NULL のレコードを除外する必要があります。

-- KEYCODE2 が存在するレコードのみ使う
SELECT * FROM e_stat.boundary.raw_census_boundary WHERE KEYCODE2 IS NOT NULL;

-- または KEY_CODE の桁数で判定する
SELECT * FROM e_stat.boundary.raw_census_boundary WHERE LENGTH(KEY_CODE) > 2;

一方、市区町村の空間カバレッジを正確に把握したい場合や、ポリゴン間に隙間がないことを前提とした面積計算を行う場合は、未割当ポリゴンを含めたほうが適切です。

未割当ポリゴンが影響する処理

未割当ポリゴンの存在を意識しないと、以下の処理で想定外の結果が生じることがあります。

  • 空間結合(Spatial Join): ポイントデータが未割当ポリゴンにヒットし、町丁字名・人口が NULL になる
  • 統計データとのリンク: KEY_CODE で結合すると、都道府県単位のレコードが意図せずマッチする
  • 逆ジオコーディング: 座標から町丁字を特定する際に、未割当ポリゴンが返されて「該当なし」に見える

GIS実務への活用

この記事で確認したポイントは、以下の業務で役立ちます。

  • 空間結合の設計: 未割当ポリゴンの存在を前提に、結合結果の NULL チェックや除外条件を検討する
  • 境界データの品質検証: 新しい年次のデータを取得した際に、同様のレコードがないかチェックする
  • 空間データのETLパイプライン: 目的に応じたフィルタリングをパイプラインに組み込む

このデータの読み方と注意点

本記事は、e-Stat の統計地理情報システム(統計GIS)で公開されている令和2年国勢調査の町丁字等別境界データを 2026-07-11 時点で取得して検証しています。対象は全国約22万区画で、47都道府県すべてを含みます。

未割当ポリゴンの抽出条件は、HCODE = 8101(町丁字等)かつ LENGTH(KEY_CODE) = 2 の2つです。水面調査区(HCODE = 8154)は定義書に記載のある正規の区分なので、条件から外して数えていません。KEY_CODE の桁数で判定しているのは、通常の町丁字が9桁または11桁になるのに対し、未割当のレコードでは KEYCODE2 が NULL になって都道府県コードの2桁だけが残るためです。塩竈市の地図では、比較のために通常の町丁字ポリゴン側を LENGTH(key_code) > 2 で抽出し、同じ市の中で未割当ポリゴンとの位置関係が見えるようにしています。地図表示だけはカラム名を正規化した stg_census_boundary を使い、それ以外は原データのカラム名を保った raw_census_boundary を参照しています。

このデータで分かるのは、該当するレコードが存在することと、その形状・面積・所在市区町村までです。これらのポリゴンが何を表しているのかは、定義書にも補足説明にも記載がないため確定できません。記事中で「町丁字等の調査区に含まれなかった残余領域」としているのは、位置と属性から読み取れる解釈であって、公式な説明ではありません。件数と分布は令和2年のデータに固有のもので、別の年次では件数も対象市区町村も変わります。面積は元データの AREA フィールドの値をそのまま使っており、ジオメトリから再計算した測地面積とは一致しません。

こうした落とし穴は、データ全体を見渡して初めて気づけるものです。Queriaは、国勢調査の小地域境界データをはじめとする官公庁のオープンデータについて、カラム名を正規化し、テーブルやカラムの意味をメタデータとして添えた形で公開しています。境界データの取得や前処理に時間を取られず、空間分析そのものに集中できます。

Dig deeper with an AI agent

Add the Queria skill to Claude Code or Codex and paste the prompt below. It works in a terminal or in the remote view on your phone or browser.

For example, you could explore “未割当ポリゴン(HCODE=8101でKEY_CODEが2桁)を都道府県別に集計して、面積の合計が大きい都道府県を出して”.

Using Queria's open data, analyze the following: 未割当ポリゴン(HCODE=8101でKEY_CODEが2桁)を都道府県別に集計して、面積の合計が大きい都道府県を出して
Reference (this article): https://queria.io/showcase/census-boundary-gap-polygons.md
Use the Queria skill (https://docs.queria.io/queria-skill) if it is installed; otherwise connect with uvx queria.
Start in a terminal (CLI)
claude "Using Queria's open data, analyze the following: 未割当ポリゴン(HCODE=8101でKEY_CODEが2桁)を都道府県別に集計して、面積の合計が大きい都道府県を出して
Reference (this article): https://queria.io/showcase/census-boundary-gap-polygons.md
Use the Queria skill (https://docs.queria.io/queria-skill) if it is installed; otherwise connect with uvx queria."