国土交通省が公開している「国土数値情報」は、土地利用・交通網・公共施設などの GIS データの宝庫です。「ここに新しい店を出して大丈夫か?」を、勘ではなくデータで答えるための強力な道具になります。
国土数値情報の主要レイヤー
| データ | 形式 | 用途 |
|---|---|---|
| 土地利用細分メッシュ | GeoJSON | 周辺の住宅地・商業地比率 |
| 公共施設 | Shape | 駅・学校・病院との距離 |
| 交通網(鉄道・道路) | Shape | アクセス評価 |
| 災害想定区域 | GeoJSON | リスク評価 |
| 人口メッシュ | GeoJSON | 商圏人口 |
立地評価レポートの自動生成
- 1対象座標(出店候補地)の入力
- 2周辺500m圏の人口・年齢構成集計(人口メッシュ)
- 3最寄駅・交通網からの距離計算
- 4競合・補完施設の分布チェック(公共施設)
- 5災害リスク評価(浸水・地震想定)
- 6総合スコアと推奨アクションを Markdown レポート化
データの入手 ─ 国土数値情報のダウンロード
国土数値情報には公開 はなく、データセット単位での ZIP ダウンロードが基本です。https://nlftp.mlit.go.jp/ksj/ から必要なレイヤーを選び、Shape または GeoJSON 形式で取得します。今回使う4レイヤー:
- 1kmメッシュ(平年値・将来推計人口)([最新版] G02 / 商用可・属性表示)─ 商圏人口集計
- 鉄道(駅)N02(CC BY 4.0)─ 最寄駅・路線数
- 洪水浸水想定区域 A31(CC BY 4.0)─ 浸水リスク
- 用途地域 A29(CC BY 4.0)─ 商業地域比率
# 1km メッシュ(人口)curl -O https://nlftp.mlit.go.jp/ksj/gml/data/mesh1000/G02-25_GML.zipunzip G02-25_GML.zip -d data/mesh
# 鉄道(駅)curl -O https://nlftp.mlit.go.jp/ksj/gml/data/N02/N02-23/N02-23_GML.zipunzip N02-23_GML.zip -d data/station
# 洪水浸水想定(東京)curl -O https://nlftp.mlit.go.jp/ksj/gml/data/A31/A31-13/A31-13_13_GML.zipunzip A31-13_13_GML.zip -d data/flood
# 用途地域(東京)curl -O https://nlftp.mlit.go.jp/ksj/gml/data/A29/A29-19/A29-19_13_GML.zipunzip A29-19_13_GML.zip -d data/zoning国土数値情報のファイルURLは年次更新でパスが変わります。実装前に必ず https://nlftp.mlit.go.jp/ksj/ でデータ番号と最新バージョンを確認してください。本番では URL を環境変数や設定ファイルに切り出し、バージョン更新時に容易に差し替えできるようにしておくのが鉄則。
GeoPandas で読み込み・空間演算
import geopandas as gpdfrom shapely.geometry import Point
# 候補地(渋谷駅近く)candidate = Point(139.7016, 35.6584)candidate_gdf = gpd.GeoDataFrame(geometry=[candidate], crs="EPSG:4326")
# 平面直角座標系(9系:関東)に変換して 500m バッファcandidate_proj = candidate_gdf.to_crs(epsg=6677)buffer_500m = candidate_proj.buffer(500)
# ----- 1) 商圏人口(500m 圏内の人口メッシュを合算)-----mesh = gpd.read_file("data/mesh/G02-25_5339_pop.geojson").to_crs(epsg=6677)nearby = mesh[mesh.intersects(buffer_500m.iloc[0])]pop_total = nearby["POP2020"].sum()print(f"500m圏 人口(2020年): {pop_total:,.0f}人")
# ----- 2) 最寄駅(鉄道レイヤから最近傍) -----stations = gpd.read_file("data/station/N02-23_Station.geojson").to_crs(epsg=6677)distances = stations.distance(candidate_proj.iloc[0].geometry)nearest = stations.iloc[distances.idxmin()]print(f"最寄駅: {nearest['N02_005']} ({distances.min():.0f}m)")
# ----- 3) 浸水想定区域に含まれるか -----flood = gpd.read_file("data/flood/A31-13_13.geojson").to_crs(epsg=6677)in_flood = flood.contains(candidate_proj.iloc[0].geometry).any()print(f"洪水浸水想定区域: {'該当' if in_flood else '該当なし'}")
# ----- 4) 用途地域 -----zoning = gpd.read_file("data/zoning/A29-19_13.geojson").to_crs(epsg=6677)hit = zoning[zoning.contains(candidate_proj.iloc[0].geometry)]zone_name = hit["A29_005"].iloc[0] if not hit.empty else "不明"print(f"用途地域: {zone_name}")
# ----- 5) 500m 圏内の商業地域比率(用途地域カバー率) -----buffer_geom = buffer_500m.iloc[0]in_buffer = zoning[zoning.intersects(buffer_geom)].copy()in_buffer["clip_area"] = in_buffer.intersection(buffer_geom).areacommercial = in_buffer[in_buffer["A29_005"].str.contains("商業", na=False)]ratio = commercial["clip_area"].sum() / buffer_geom.areaprint(f"500m圏の商業地域比率: {ratio:.1%}")`pip install geopandas shapely fiona pyproj` ─ macOS/Linux なら GDAL を別途インストール(brew/apt)。 では `!apt-get install -qq libgdal-dev && pip install -q geopandas` の順。
でレポート生成(前段の数値を渡す)
ここまでで「商圏人口・最寄駅距離・浸水該当・用途地域・商業地域比率」など事実ベースの数値が揃いました。あとはこれを Claude Code に渡して、経営層向けに整形してもらいます。 に判断は任せず、数値計算は自分のコードでやる ─ これが現代の安全な使い方。
前段の geopandas 計算で得られた以下の数値を元に、経営層向けの立地評価レポート(1ページ Markdown)を生成してください。**数値は変更せず、解釈とアクション提案のみを書いてください**。
## 入力数値(geopandas 計算済み)
- 候補地: 緯度 35.6584, 経度 139.7016(渋谷駅近く)
- 業態: カフェ(席数20)
- 500m圏 人口(2020): 18,400人
- 20-40代比率: 62%
- 最寄駅: 渋谷駅(280m)
- 路線数: 9(JR・京王・東急・東京メトロ・複数)
- 浸水想定区域: 該当なし
- 用途地域: 商業地域
- 500m圏の商業地域比率: 88%
- 競合カフェ(500m圏): 4店舗(うち大手チェーン3)
## 出力
- スコア(5軸 × 各 0-100)の評価表
- 総合判定(A/B/C)
- 推奨アクション
- リスクと差別化案
- 1ページ Markdown レポート(経営層向け)## 立地評価レポート
### 総合判定: **A(出店推奨)**
### スコア
| 軸 | スコア | 所感 |
|---|---|---|
| 商圏人口 | 92 | 500m圏内 18,400人、20-40代 62% |
| 交通アクセス | 88 | 最寄駅 渋谷駅 徒歩4分、複数路線 |
| 競合・補完 | 71 | 競合カフェ4店舗(飽和ぎみ)、補完施設多数 |
| 災害リスク | 65 | 浸水想定軽微、震度5強想定 |
| 用途地域 | 95 | 商業地域比率 88% |
| **総合** | **82** | |
### 推奨アクション
- **出店推奨**、ただし競合飽和を考慮した差別化が必要
- ターゲット: 20-30代女性(商圏でこの層が多い)
- 営業時間: 平日朝7時開店推奨(通勤層のニーズ強い)
- 災害リスクは軽微だが BCP 計画を推奨
### 比較競合との位置関係
- 既存A店舗から徒歩8分以内(競合あり)
- カニバリ予測: -15%(許容範囲)
→ `reports/2026-08-shibuya-location.pdf` を生成しました(経営層向け1ページ)。データ取得の留意点(2026年5月時点)
国土交通省「国土数値情報」は GIS データの集合体。各データセットごとに CC BY 4.0 / 商用可(個別条件) / 非商用のみ などライセンスが異なる。商用利用を予定するなら、データダウンロード前にそのデータの「使用許諾条件」を必ず確認。
- 提供形態: バルクダウンロード(GeoJSON / Shapefile)が中心。API はなし。
- 料金: 無料。
- CC_BY_4.0(商用可): 行政区域・土地利用メッシュ・地価公示・鉄道データなど。属性表示があれば商用利用 OK。
- CC_BY_4.0(一部制限): 森林地域・農業地域・土砂災害警戒区域など。条件付き商用利用。
- 非商用のみ: 警察署・消防署・郵便局・文化施設の位置情報など。教育・研究目的限定。
- 版(バージョン): 同じ「行政区域」でも 平成XX年版 / 令和X年版 で内容・ライセンスが異なる場合あり。最新版が新しいライセンスに移行していることが多い。
- 属性表示: 「出典:国土数値情報(〇〇〇〇データ)」のような形で明記。
- データ更新: 2026年4月時点で「鉄道データ」「行政区域」「地価公示」などが新着。年1回更新が多い。
- 仕様変更: 国は予告なく仕様変更・データ削除を行う可能性あり。本番運用にはダウンロードしたファイルを自社環境に保管しておくのが安全。
国土数値情報: https://nlftp.mlit.go.jp/ksj/ / 各データセットページに「使用許諾条件」のリンクあり。商用利用前にライセンスマトリクスをExcelに整理しておくのが、後々の事故防止になります。
次回予告
EP.05 では、 × 自社配送ログで配送ルート最適化する方法をお届けします。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。