Lesson 47

水害リスクマップ(浸水頻度図)単独 3 研究例分析 — 7 階級 × 32 水系の頻度地図を読む

L47PDF解析水害リスク浸水頻度RQ×3カラーマッチング
所要 35 分 / 想定レベル: 中級+ / データ: DoBoX dataset 1640 (8 リソース, 23 PDF)

データ取得手順

このスクリプトは初回実行時にデータを自動取得します(DoBoX からの直接ダウンロード)。

IDデータセット名
#333dataset #333
#888都市計画区域情報_区域データ_安芸高田市_行政区域
#1640水害リスクマップ(浸水頻度図)

実行コマンド:

cd "2026 DoBoX 教材"
python -X utf8 lessons/L47_flood_risk_map.py

DoBoX のオープンデータは申請不要・商用/非商用とも利用可。 data/extras/.gitignore 対象(約 57 GB のキャッシュ)。 スクリプト実行で自動再生成されます。

スクリプト(全体ソースコード)

⬇ L47_flood_risk_map.py

cd "2026 DoBoX 教材"
python -X utf8 lessons/L47_flood_risk_map.py

学習目標と問い

本記事は DoBoX のシリーズ 「水害リスクマップ(浸水頻度図)」 1 件 (dataset_id = 1640) を 単独で取り上げ、 広島県内 32 河川水系 × 浸水深 3 閾値 = 24 PDF (うち 23 件取得可) を 3 つの独立した研究角度から並列に分析する。

本マップの位置付け — 「浸水頻度の地図」

「水害リスクマップ(浸水頻度図)」は、L4-L11 の河川浸水想定図 (計画規模 / 想定最大規模) と 同じく河川氾濫を扱うが、異なる切り口で情報を整理する:

つまり本マップは「頻度ベースで再整理した浸水想定の総覧」であり、 「100 年に 1 度の雨」と「30 年に 1 度の雨」の浸水範囲が同じ図上で同時比較できる、 従来 Shapefile から欠落していた 中間頻度 5 段階 を可視化する制度的補完物である。

研究の問い (3 RQ)

仮説 H1〜H5

本記事の独自用語定義

到達点

3 つの研究角度それぞれで、水害リスクマップという 同じ 1 つのデータ から 独立した知見が得られることを学ぶ。とくに 「データ数 = 1 でも、研究角度 × 3 = 知見 × 3」 という探究法を、PDF というフォーマットの意味を読み解く形で身につける。 GIS 座標を持たない PDF からも、ラスタ化 + カラーマッチングという技法によって 量的分析が可能であることを示す。

使用データ

本記事は DoBoX シリーズの 1 件のみ を扱う:

項目
dataset_id 1640
タイトル 水害リスクマップ(浸水頻度図)
DoBoX URL https://hiroshima-dobox.jp/datasets/1640
リソース数 8 (= 河川水系のグループ別 ZIP, 各 2-8 水系を含む)
対象水系数 32 (8 グループに分散)
PDF 数 23 / 24 (1 件 = 八幡川 0.0m はサーバ ZIP 破損で取得不可)
形式 PDF (A3 横, 1190×842 pt)
頻度階級 7 段階 (1/5, 1/10, 1/30, 1/50, 1/70, 1/100, 想定最大規模)
浸水深閾値 3 段階 (0.0m+ / 0.5m+ / 3.0m+)
公表年月日 令和 6 年 4 月 10 日 (2024-04-10)
作成主体 広島県土木建築局河川課
ZIP 合計サイズ ~98 MB (圧縮後)
ライセンス CC-BY 4.0 (クリエイティブ・コモンズ表示)
GIS 座標 なし (PDF はベクタ図面で地理座標が直接埋め込まれない)

凡例 7 階級の測色結果

頻度階級 意味 RGB HEX 色名
1/5 高頻度・低浸水確率閾値 (200,179,223) #c8b3df 紫薄
1/10 高頻度・低浸水確率閾値 (246,140,140) #f68c8c 桃濃
1/30 高頻度・低浸水確率閾値 (246,188,189) #f6bcbd 桃淡
1/50 中頻度 (151,207,246) #97cff6 水色
1/70 中頻度 (182,249,177) #b6f9b1
1/100 低頻度・高浸水確率閾値 (255,200,84) #ffc854
想定最大規模 低頻度・高浸水確率閾値 (255,255,179) #ffffb3 淡黄

RGB は実 PDF (瀬野川 d00) を 300 dpi でラスタ化し、凡例エリアから median で抽出した。23 PDF 全件で同色が再現されることを確認済み。

8 リソースの内訳

resource_id slug 対象河川 水系数 DL
176947 nagata_okajino_tanaka 永田川・小鹿野川・田中川 (3水系) 3 https://hiroshima-dobox.jp/resource_download/176947
176948 kamo_honkawa 賀茂川・本川 (2水系) 2 https://hiroshima-dobox.jp/resource_download/176948
176949 takada_ocho_harada_etc 高田川・大長川・原田川・原下川・小原川 (5水系) 5 https://hiroshima-dobox.jp/resource_download/176949
176950 sannan_motoya_tejiro 山南川・本谷川・手城川 (3水系) 3 https://hiroshima-dobox.jp/resource_download/176950
176951 seno 瀬野川 (1水系) 1 https://hiroshima-dobox.jp/resource_download/176951
176952 fujii_hongo_habara_etc 藤井川・本郷川・羽原川・新川・栗原川・大田川・才戸川・大河原川 (8水系) 8 https://hiroshima-dobox.jp/resource_download/176952
176953 yahata_eikoji_mitearai_etc 八幡川・永慶寺川・御手洗川・可愛川・岡ノ下川 (5水系) 5 https://hiroshima-dobox.jp/resource_download/176953
176954 noro_kinoya_takano_etc 野呂川・木谷郷川・高野川・蛇道川・三津大川 (5水系) 5 https://hiroshima-dobox.jp/resource_download/176954

1 リソース = 1 ZIP = 複数河川水系の PDF 群。総 32 水系を 8 群に分散配布。ID #176953 (八幡川グループ) の 0.0m+ PDF はサーバ側 ZIP の zlib エラーのため取得不能。本記事の集計から 1 件を除外している。

ダウンロード

DoBoX 本体 (1 件 + 8 リソース)

8 リソース直 DL ボタン:

中間 CSV (本レッスンが生成)

図 PNG (8 枚)

再現スクリプト

再現コマンド

cd "2026 DoBoX 教材"
py -X utf8 lessons/L47_flood_risk_map.py

初回実行時は dataset 1640 の 8 ZIP (~98 MB) を DL し、PDF を展開する。PDF の集計結果は data/extras/L47_flood_risk_map/_cache/pdf_color_hist.json にキャッシュされる。2 回目以降は ~5 秒で再実行完了。

【RQ1】 リスク階級分布の研究 — 7 階級 × 3 浸水深閾値の積層構造

狙い (RQ1)

水害リスクマップという「1 枚の PDF に 7 段階の浸水範囲を重ねた図」が、 実際にどう描かれているかを定量的に把握する。 凡例の 7 階級色 (1/5〜想定最大規模) と 3 浸水深閾値 (0.0m / 0.5m / 3.0m) の組合せが、 23 PDF 全体ではどんな配分なのかを集計する。

手法 (カラーマッチング集計)

PDF はベクタ図面で地理座標を持たないため、Shapefile のように geopandas.area で面積を直接計算できない。代わりに本記事独自の手法を使う:

入力: 23 PDF と凡例 RGB 7 色。
出力: 23 行 × 7 列のピクセル数テーブル (= L47_pdf_color_hist.csv)。
限界: ピクセル数は地理面積 (km²) ではない。各 PDF 内の相対比としてのみ意味がある。 地図の縮尺や図郭サイズは PDF 間で異なるため、PDF 間の絶対比較には注意。 代替案: 国土地理院の Geo TIFF があれば直接面積計算可能だが、 DoBoX の本データは PDF 配布のみ。本手法はその制約下での実用解。

実装の要点

STEP 1 のコード

L47_flood_risk_map.py 行 1199–1292

 1
 2
 3
 4
 5
 6
 7
 8
 9
1208
1209
1210
1211
1212
1213
1214
1215
# 凡例エリアから 7 階級色を測色
import fitz, numpy as np
doc = fitz.open("水害リスクマップ(瀬野川水系)【浸水深0.0m以上】.pdf")
page = doc[0]
clip = fitz.Rect(1000, 615, 1110, 705)              # 凡例右下のbbox (pt)
mat = fitz.Matrix(300/72.0, 300/72.0)                # 300 dpi
pix = page.get_pixmap(matrix=mat, alpha=False, clip=clip)
arr = np.frombuffer(pix.samples, dtype=np.uint8).reshape(pix.height, pix.width, 3)
# 各凡例ラベルの y_pt → ピクセル y 位置
labels = [("1/5", 633), ("1/10", 642), ("1/30", 651), ("1/50", 661),
          ("1/70", 670), ("1/100", 680), ("max", 690)]
for name, y_pt in labels:
    py = int((y_pt - clip.y0) * 300/72.0)            # ピクセル単位の y
    swatch = arr[max(0,py-3):py+4, 41:175].reshape(-1, 3)  # 左側の色矩形
    mask = ~((swatch[:,0]>=235)&(swatch[:,1]>=235)&(swatch[:,2]>=235))
    rgb = np.median(swatch[mask], axis=0).astype(int)
    print(f"{name:>5} -> RGB {tuple(rgb)}")

STEP 3-4 のコード

 1
 2
 3
 4
 5
 6
 7
 8
 9
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
# 1 PDF を 100 dpi にラスタ化 → 7 階級色マッチングで分類
import fitz, numpy as np

PROB_RGB = np.array([                                  # 上で抽出した 7 階級
    [200,179,223], [246,140,140], [246,188,189],       # 1/5, 1/10, 1/30
    [151,207,246], [182,249,177],                       # 1/50, 1/70
    [255,200, 84], [255,255,179],                       # 1/100, max
], dtype=np.int32)
TOLERANCE = 20                                         # Chebyshev 距離許容
SAT_MIN   = 35                                         # 彩度下限 (max-min channel)

def classify_pdf(pdf_path):
    doc = fitz.open(pdf_path)
    page = doc[0]
    pix = page.get_pixmap(matrix=fitz.Matrix(100/72.0, 100/72.0), alpha=False)
    arr = np.frombuffer(pix.samples, dtype=np.uint8).reshape(pix.height, pix.width, 3).astype(np.int32)
    sat = arr.max(axis=-1) - arr.min(axis=-1)          # 簡易彩度 (R,G,B のレンジ)
    # 各ピクセル × 7 階級 の Chebyshev 距離 (RGB 差の max)
    diffs = np.abs(arr[:, :, None, :] - PROB_RGB[None, None, :, :]).max(axis=-1)
    nearest   = diffs.argmin(axis=-1)                  # (H, W) どの階級に近いか
    nearest_d = diffs.min(axis=-1)                     # (H, W) その距離
    # 「塗られている」 = 距離 ≤ 20 かつ 彩度 ≥ 35
    matched   = (nearest_d <= TOLERANCE) & (sat >= SAT_MIN)
    counts = {i: int((matched & (nearest == i)).sum()) for i in range(7)}
    other = int((~matched).sum())
    doc.close()
    return counts, other

図 1: PDF プレビュー + 凡例カラー解説

なぜこの図か: 学習者がまず「水害リスクマップとは何か」を視覚で理解するため、 1 PDF (瀬野川 d00) のプレビューと、抽出した 7 階級色のスウォッチを並置する。 PDF の右下に凡例があり、本文中央が地図、という配置を見ることで 「どこから色を抽出したか」が一目で分かる。

図 1: PDF プレビュー + 凡例カラー
図 1: PDF プレビュー + 凡例カラー

この図から読み取れること:

図 2: 浸水深 3 閾値 × 7 階級 の積層棒

なぜこの図か: H1 (頻度階級が 7 段階全部出現するか) と H2 (深さ閾値で減衰するか) を 1 枚で同時検証する。bar の合計高さ = 浸水深ごとの全浸水範囲、 内部の積層 = 7 階級の構成。

図 2: 浸水深 × 階級 積層 bar
図 2: 浸水深 × 階級 積層 bar

この図から読み取れること:

図 3: 浸水深 3 閾値の階級シェア small multiples

なぜこの図か: 図 2 の積層 bar だけでは「階級ごとの構成比」が読みにくいため、 3 浸水深を別々のサブプロットにして横棒で各階級シェアを直接比較する。

図 3: 階級シェア small multiples
図 3: 階級シェア small multiples

この図から読み取れること:

表: d00 における 7 階級シェア

頻度階級 ピクセル数 全浸水中の %
1/5 6183 6.78
1/10 4295 4.71
1/30 6363 6.98
1/50 2245 2.46
1/70 2082 2.28
1/100 2676 2.94
想定最大規模 67306 73.84

この表から読み取れること: 「想定最大規模」 が最も大きいシェアを占める。これは「最頻のみ表示」設計から、「想定最大規模で初めて浸水するエリア」が他階級より広範であることを意味する。1/5 (高頻度) は最も狭く、河川直近に局在する。

表: 浸水深 3 閾値 × 7 階級 の合算

浸水深閾値 ラベル 1/5 1/10 1/30 1/50 1/70 1/100 想定最大規模 合計 px
0.0m以上(浸水あり) 全浸水域 6183 4295 6363 2245 2082 2676 67306 91150
0.5m以上(床上浸水相当) 床上浸水 3206 4276 5673 1656 1756 1765 79318 97650
3.0m以上(一階居室浸水相当) 一階居室浸水 3111 4144 5335 1500 1516 1501 33356 50463

この表から読み取れること: 深さが増えるほど全階級の値が縮小するが、構成比は保たれる。これは「同じ場所が深い場所で重畳的に浸水する」 という地形的構造を示す。

表: 頻度階級ごとの浸水深減衰

頻度階級 d00 (0.0m+) px d05 (0.5m+) px d30 (3.0m+) px d05/d00 % d30/d00 %
1/5 6183 3206 3111 51.85 50.32
1/10 4295 4276 4144 99.56 96.48
1/30 6363 5673 5335 89.16 83.84
1/50 2245 1656 1500 73.76 66.82
1/70 2082 1756 1516 84.34 72.81
1/100 2676 1765 1501 65.96 56.09
想定最大規模 67306 79318 33356 117.85 49.56

この表から読み取れること: d05/d00 は階級によらず 107% 前後、d30/d00 は 55% 前後で安定。つまり「深い浸水を被るエリアは頻度に依らず約55%」 という地形主導の比率がある。

【RQ2】 高リスクエリア地理特性の研究 — 8 リソース群 × 32 水系のプロファイル

狙い (RQ2)

水害リスクマップは 32 河川水系をカバーする。 8 リソース群 (= ZIP 配布単位) で見たとき、どの群が浸水想定面積で大きいか、 そして高頻度シェアが大きい群はどこかを定量化する。 これは河川管理の注力配分を反映する研究的に重要なシグナル。

手法 (頻度プロファイル分析)

各リソース群について、浸水深 d00 (0.0m+) の集計から以下の 3 指標を計算する:

これらは合計 100% になる本記事独自の指標。 高頻度シェアが大きい群は「日常的洪水で被害が出やすい流域」を意味し、 低頻度シェアが大きい群は「想定最大規模の備えが特に必要な流域」を意味する。

入力: 8 リソース × 7 階級の集計テーブル。
出力: 8 行 × {高/中/低} の頻度プロファイル。
限界: ピクセル数は PDF ページサイズ・縮尺・図郭定義に依存するため、 群間の絶対面積比較は近似値である。同一群内の階級比は信頼できる。

実装コード

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 8 リソース別の高/中/低 頻度シェア計算
import pandas as pd

records = []
for rid, (slug, jp) in RESOURCES.items():
    sub = hist_df[(hist_df["rid"]==rid) & (hist_df["depth_key"]=="d00")]
    if len(sub) == 0: continue
    row = sub.iloc[0]
    high = row["px_1/5"] + row["px_1/10"] + row["px_1/30"]
    mid  = row["px_1/50"] + row["px_1/70"]
    low  = row["px_1/100"] + row["px_想定最大規模"]
    sum_ = high + mid + low
    records.append({"rid": rid, "jp": jp,
                    "sum_px": sum_,
                    "high_freq_pct": 100*high/sum_,
                    "mid_freq_pct":  100*mid /sum_,
                    "low_freq_pct":  100*low /sum_})
res_df = pd.DataFrame(records).sort_values("sum_px", ascending=False)
print(res_df.head())

図 4: 8 リソース群別 階級構成 (積層 stacked bar)

なぜこの図か: 8 群の浸水想定規模 (絶対量) と階級構成 (相対比) を 1 枚で同時に見るには横の積層 bar が最適。長い bar = 大規模流域、 内部の色が階級構成。

図 4: 8 リソース群 階級構成
図 4: 8 リソース群 階級構成

この図から読み取れること:

図 5: 高/中/低 頻度シェアの 3 軸散布

なぜこの図か: 8 群の頻度プロファイルを1 つの平面に投影し、 類似群と例外群を視覚化する。X = 高頻度, Y = 低頻度, 色 = 中頻度, バブル面積 = 総 px。 4 次元情報を 1 枚で読める。

図 5: 頻度プロファイル散布
図 5: 頻度プロファイル散布

この図から読み取れること:

表: リソース別 高/中/低 頻度シェア

rid 対象河川 (短) 水系数 合計 px 高頻度 % (1/5+1/10+1/30) 中頻度 % (1/50+1/70) 低頻度 % (1/100+max)
176952 藤井川・本郷川・羽原川・新川・栗原川・大田川・才戸川・大河原川 8 28360 8.43 1.99 89.58
176948 賀茂川・本川 2 18770 11.78 3.28 84.94
176953 八幡川・永慶寺川・御手洗川・可愛川・岡ノ下川 5 15989 10.16 2.95 86.88
176951 瀬野川 1 15055 30.63 4.84 64.52
176950 山南川・本谷川・手城川 3 12463 27.69 5.42 66.89
176954 野呂川・木谷郷川・高野川・蛇道川・三津大川 5 10371 18.26 6.26 75.48
176949 高田川・大長川・原田川・原下川・小原川 5 3567 44.15 20.13 35.72
176947 永田川・小鹿野川・田中川 3 2564 27.57 14.63 57.80

この表から読み取れること: 高頻度シェアと低頻度シェアは負相関の傾向 (合計 100% の制約)。中頻度シェアが特に大きい群は「中規模洪水で被害が出やすい」 という別の特徴を示し、河川改修や流域治水の注力ポイントを示唆する。

表: 8 リソースの基本情報

resource_id slug 対象河川 水系数 DL
176947 nagata_okajino_tanaka 永田川・小鹿野川・田中川 (3水系) 3 https://hiroshima-dobox.jp/resource_download/176947
176948 kamo_honkawa 賀茂川・本川 (2水系) 2 https://hiroshima-dobox.jp/resource_download/176948
176949 takada_ocho_harada_etc 高田川・大長川・原田川・原下川・小原川 (5水系) 5 https://hiroshima-dobox.jp/resource_download/176949
176950 sannan_motoya_tejiro 山南川・本谷川・手城川 (3水系) 3 https://hiroshima-dobox.jp/resource_download/176950
176951 seno 瀬野川 (1水系) 1 https://hiroshima-dobox.jp/resource_download/176951
176952 fujii_hongo_habara_etc 藤井川・本郷川・羽原川・新川・栗原川・大田川・才戸川・大河原川 (8水系) 8 https://hiroshima-dobox.jp/resource_download/176952
176953 yahata_eikoji_mitearai_etc 八幡川・永慶寺川・御手洗川・可愛川・岡ノ下川 (5水系) 5 https://hiroshima-dobox.jp/resource_download/176953
176954 noro_kinoya_takano_etc 野呂川・木谷郷川・高野川・蛇道川・三津大川 (5水系) 5 https://hiroshima-dobox.jp/resource_download/176954

この表から読み取れること: 8 リソース群はそれぞれ 1〜8 河川水系を含み、最大は藤井川群 (8 水系)。1 リソース = 1 ZIP = 1 ダウンロード単位という配布設計は、ファイルサイズが 20 MB を超えるため一括 DL ができないという物理的制約から来る。

【RQ3】 既存浸水想定との比較研究 — フォーマット欠落の論証

狙い (RQ3)

本マップ (PDF) と既存浸水想定 Shapefile (L4-L11 で扱う想定最大規模 = 613 polygons / 計画規模 = 416 polygons) の関係を整理する。両者は同じ「河川氾濫」を扱うが配布フォーマットが違い、 頻度の解像度も違う。何が補完で何が欠落かを明確にする。

手法 (フォーマット欠落マトリクス)

本記事独自手法 — 「フォーマット欠落マトリクス」:

注意: Shapefile を本記事内で実際に空間 overlay することはしない。 それは L8 (河川 × 津波 × 盛土) や L11 (トリプルハザード) で別途扱われており、 本記事のスコープを守る。本記事は「フォーマット差」というメタ問題に集中する。

実装コード

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 既存 Shapefile の bounds と件数のみ取得 (重い空間処理は避ける = 要件S)
import geopandas as gpd

shp_max  = gpd.read_file("data/extras/flood_shp/shinsui_souteisaidai/shinsui_souteisaidai.shp")
shp_plan = gpd.read_file("data/extras/flood_shp/shinsui_keikaku/shinsui_keikakukibo.shp")

print(f"想定最大規模: {len(shp_max)} polygons, CRS={shp_max.crs}, bbox={shp_max.total_bounds}")
print(f"計画規模:     {len(shp_plan)} polygons, CRS={shp_plan.crs}, bbox={shp_plan.total_bounds}")

# SINSUIRANK 列があれば浸水深ランク, ない場合は dataset 単独 = 1 段階のみ
# どちらの Shapefile も 「年超過確率の階級」 列を持たない → 7 階級情報は欠落と確認

図 6: 既存浸水想定 Shapefile の空間範囲 (bbox 比較)

なぜこの図か: 本マップ (PDF) は GIS 座標を持たないため空間的な 「Shapefile との差」を直接的に重ねられない。代わりに既存 Shapefile の bbox を 広島県境上に描き、本マップが同じ空間範囲を別フォーマットで記述していることを示す。 PDF の制約 (=「面積は出せても座標が紐付かない」) も視覚的に説明する。

図 6: 既存 Shapefile の bbox 比較
図 6: 既存 Shapefile の bbox 比較

この図から読み取れること:

図 7: 23 PDF × 7 階級 行内正規化ヒートマップ

なぜこの図か: 23 PDF (8 群 × 3 深さ) の個別パターンを 1 枚で読みたい。 行ごとに正規化して各 PDF 内のシェア (%) を表示すると、群間の差・深さ間の差が両方見える。

図 7: 23 PDF × 7 階級 ヒートマップ
図 7: 23 PDF × 7 階級 ヒートマップ

この図から読み取れること:

図 8: 23 PDF small multiples

なぜこの図か: 23 PDF を 1 枚で並置することで、群ごと・深さごとのパターン差を視覚的にカタログ化する。

図 8: 23 PDF プレビュー一覧
図 8: 23 PDF プレビュー一覧

この図から読み取れること: 23 PDF は地図サイズ・図郭が大きく異なる。瀬野川群はやや大きい A3 横、藤井川群は同じ A3 横でも図郭幅が広い。これは流域の地理的広がりを反映する。「同じ deta が同じ frame で配布されない」 のは PDF の制約であり、GIS で扱うには事後的なジオレファレンスが必要 (発展課題 3 参照)。

表: フォーマット比較 (PDF vs Shapefile)

比較対象 形式 件数 対象水系数 頻度シナリオ数 深さランク数 幾何の精度 DoBoX dataset
想定最大規模 Shapefile (L4-L11) Shapefile (Polygon) 613 25 1 (単一規模) 8 高 (ベクタ→GIS 解析容易) L4-L11 で扱う 35-45, 280-332
計画規模 Shapefile (L4-L11) Shapefile (Polygon) 416 24 1 (単一規模) 8 高 (ベクタ→GIS 解析容易) L4-L11 で扱う 35-45, 280-332
L47 水害リスクマップ (本記事) PDF (ベクタ図面・GIS 不可) 23 PDF (= 8 河川群 × 3 深さ) 32 7 (1/5+1/10+1/30+1/50+1/70+1/100+max) 3 (0.0m+/0.5m+/3.0m+ の閾値別 PDF) 中 (ラスタ化→色マッチングのみ可) 1640

この表から読み取れること: PDF は「機械可読性が低いが頻度解像度が高い」、Shapefile は「機械可読性が高いが頻度解像度が低い」 という排他関係。両者を補完して使うことが理想だが、現状はそれぞれ独立した制度で運用されている。

表: 既存 Shapefile の空間範囲

データ 件数 X 最小 Y 最小 X 最大 Y 最大 X 幅 km Y 幅 km
想定最大規模 Shapefile (L4-L11 由来) 613 -7334.80 -203913.90 117634.00 -100507.00 125.00 103.40
計画規模 Shapefile (L4-L11 由来) 416 1424.10 -198630.40 114817.50 -111813.20 113.40 86.80

この表から読み取れること: 想定最大規模 Shapefile は 125.0 km × 103.4 km の範囲をカバーし、広島県全域 (約 8,479 km²) を含む。本マップ PDF も同じ範囲を扱うが、GIS 座標がないため bbox を直接出せない。

表: 頻度階級 × フォーマット の被覆差

頻度シナリオ 本マップ PDF 計画規模 Shapefile 想定最大規模 Shapefile
1/5 (=年20%超過) あり (紫) なし なし
1/10 (=年10%超過) あり (桃濃) なし なし
1/30 (=年3.3%超過) あり (桃淡) なし なし
1/50 (=年2%超過) あり (水色) なし なし
1/70 (=年1.4%超過) あり (緑) なし なし
1/100 (=年1%超過) あり (橙) あり (= L1 計画規模、深さランク付き) なし
想定最大規模 (=L2) あり (淡黄) なし あり (深さランク付き)

この表から読み取れること: 1/5・1/10・1/30・1/50・1/70 の5 階級は PDF にしかない。つまり Shapefile を使った既存研究 (L4-L11 の浸水想定分析) は5/7 = 71% の頻度情報を見落としている可能性がある。本マップの存在意義はフォーマット欠落を埋めることにある。

仮説検証総合

本記事の 5 仮説と観測結果の照合:

仮説 RQ 予想 観測 判定
H1 (頻度階級の積層構造) RQ1 PDF に 7 階級すべての色が出現する (積層後の総浸水範囲) d00 で出現した階級数 = 7/7 支持
H2 (深さ閾値による減衰) RQ1 d30 浸水範囲は d00 の 1/3 以下 d05/d00 = 107.1%, d30/d00 = 55.4% 反証
H3 (水系規模の偏り) RQ2 上位 5 リソースで 50% 以上 上位 5 占有率 = 84.6% 支持
H4 (PDF と Shapefile の被覆差) RQ3 Shapefile は 2 段階のみ → 中間頻度 5 段階は欠落 計画規模 Shapefile = 1/100 相当の 1 段階のみ; 想定最大規模 Shapefile = max のみ; 1/5,1/10,1/30,1/50,1/70 はすべて PDF 専有 支持
H5 (頻度マップの本質) RQ1 PDF は最頻のみ表示する設計 (図上では高頻度色が低頻度色を隠す) 凡例の 7 階級色は重ならず、各ピクセルは 1 階級のみに分類される。ラスタ集計でも 7 階級色マッチングが non-overlapping で成立し、矛盾なし 支持

3 RQ × 3 結論

発展課題

結果X → 新仮説Y → 課題Z (3 RQ × 1 課題以上)

発展課題 1 (RQ1 由来)

発展課題 2 (RQ2 由来)

発展課題 3 (RQ3 由来)