ボロノイ図 (Voronoi diagram)

小金井市における各ポストの商圏

観光地理情報学特論Ⅰ 2017年度第5回
ある母点集合が与えられたとき，空間上の任意の点が最寄りの母点に帰属するようにしたときに得られる空間分割のこと．ティーセン分割ともいう
各地点の消費者が「最寄りの施設に行く」場合に生じる各施設の商圏（territory）の分布を示す

勢力圏・商圏の分析

DA
首都大学東京 都市環境学部 自然・文化ツーリズムコース
C

倉田 陽平

E

ykurata@tmu.ac.jp
B

TOKYO METROPOLITAN UNIVERSITY

ボロノイ図の性質①2ボロノイ図の性質②ボロノイ図の性質③• 実は自然界によく出現するパターンである• ボロノイ図の頂点は現状「最も不便な場所の候補」と解釈できる→新規立地のチャンス

3

岡部篤行・鈴木敦夫「最適配置の数理」より• ボロノイ領域の接する点同士を結んでいくと，「自然な形」の三角形網が得られる• これをドローネ三角網（Delaunay Triangulation）という
DDAA
CC

E
B

4

小金井市におけるポストの隣接関係

5

ArcGISでボロノイ図を描く（前準備）

1. Zドライブにある「ボロノイ図.lnk」をクリック• Zドライブにある16観光地理情報学特論Ⅰフォルダを各自のデスクトップにコピー• ArcGISを開いて、上記フォルダ内にある以下の順にファイルを地図に追加

2. 右側の青と赤のチェックをはずす
3. 自分の好きな地域にズーム
4. 適当に１０数個点を打つ（左クリック）– 八王子市町丁目別人口.shp– 八王子近辺の鉄道.shp– 八王子近辺の駅.shp– 八王子駅1km圏.shp（ただしアイコンが置かれた場所は点を打てない）

7

6

ボロノイ図を体験してみよう（人によっては「ボロノイ図」とだけ表示されているかも）岡部篤行・鈴木敦夫「最適配置の数理」より

E
B

青：ドローネ三角網（Delaunay Triangulation）
赤：凸包（Convex hull）
緑：ボロノイ図（Voronoi diagram）

89ArcGISでボロノイ図を描く

ArcGISでボロノイ図を描く（結果）各ボロノイ領域（＝駅圏）に何人住んでいるかを求めよう• ArcToolbox→解析ツール→近接→ティーセンポリゴ
ンの作成• 入力フィーチャを「八王子近辺の駅」、出力フィールドをALLに→OK

10

まず手始めに、八王子駅1km圏の人口を求めることを考える

1km圏の人口を近似的に求める方法• 1km圏に含まれる（within）町丁目を検索し、その人口の合計を求める→（）人• 1km圏に重なる（overlap）
町丁目を検索し、その人口の合計を求める→（）人• 上２つの平均を求める→（）人

13

1km圏に含まれる町丁目を検索しその人口の合計を求める• 「八王子市町丁目別人口」レイヤーを右クリック→属性テーブルを開く• JINKO（人口）フィールドを右クリック→統計情報• 合計値をメモ

12

11

1km圏に含まれる町丁目を検索しその人口の合計を求める• 選択→空間選択• ターゲットレイヤに「八王子市町丁目別人口」• ソースレイヤに「八王子駅1km圏）」• 空間選択方法に「<ターゲットレイフィーチャ>が<ソースレイヤフィーチャ>に含まれる」
• OK
1514

1km圏に重なる町丁目を検索しその人口の合計を求める

1km圏の人口をより正確に求める
方法（面積按分法）

先ほどのような空間検索で「<ターゲットレイヤフィーチャ>が<ソースレイヤフィーチャ>に重なる」を選択→
属性テーブルを開いて「統計情報」→合計値をメモ

1. 各町丁目について、八王子駅1km圏の円に重なる面積割合（0%～100%）を求める
2. 町丁目人口に面積割合をかける
3. 以上の合計を求める
たとえば，左の赤枠の町丁目が人口240人・面積1km2 、橙色部分の面積が0.7km2として橙色部分の人口は40人×70%=168人と推定

161718面積按分法①

面積按分法②

面積按分法③• 「八王子市町丁目別人口」レイヤーを右クリック→属性テーブルを開く• 左上のアイコン→フィールドの追加• 「ori_area」という名前のDouble型のフィールドを作成• 新しく追加されたフィールド「ori_area」を右クリック→ジオメトリ演算• プロパティ「面積」→単位「平方メートル」→OK→• ジオプロセシング→インターセクト• 入力フィーチャに「八王子市町丁目別人口」と「八王子駅1km圏」を登録→OK19

面積按分法④20

面積按分法⑤• 「八王子駅1km圏_Intersection」が作成されるので、レイヤ名を右クリックし、属性テーブルを表示する• 先ほどと同じように、double型の「new_area」フィールドを作成→ジオメトリ演算により、インターセクト後の面積を求める

21

面積按分法⑥• 先ほどと同じように、double型の「estimated_JINKO」フィールドを作成• 今度は「フィールド演算」
により、以下の式で人口を求める

フィールド演算後、属性テーブルのestimated_JINKOを右クリック→統計情報→「合計値」は（）人

new_areaestimated_JINKO = JINKO× ori_area

22

では，いよいよ各駅圏に何人住んでいるかを求めよう

25

2324

駅圏人口の推定①

駅圏人口の推定②• ジオプロセシング→インターセクト• 入力フィーチャに「八王子市町丁目人口」と「八王子市近辺の駅_CreateThiessenPolygon」→結合する属性に「ALL」→OK• 新しくできたレイヤー「八王子近辺の駅_Intersect」の属性テーブルを開き、 double型のフィールド「new_area」を作成→ジオメトリ演算により面積算出• さらにdouble型のフィールド「estimated_JINKO」を作成→フィールド演算によって推定人口を算出

26

27

駅圏人口の推定③

駅圏人口の推定（結果）• 属性テーブルを閉じる• ジオプロセシング→ディゾルブ→入力フィーチャに「八王子近辺の駅_Intersect」、ディゾルブフィールドに「STN」、統計フィールドに「estimated_JINKO」、統計の種類に「SUM」を指定→OK

28

行ラベル
西八王子
南大沢
高尾
京王八王子
八王子狭間
めじろ台
京王堀之内
八王子みなみ野
小宮
北野
北八王子
長沼
山田
片倉
多摩境
高尾山
京王片倉
大塚・帝京大学
秋川
松が谷
武蔵引田
高尾山口
東秋留
中央大学・明星大学
平山城址公園
相原
武蔵五日市
拝島
武蔵増戸
清滝
橋本
相模湖
唐木田
多摩動物公園
多摩センター藤野熊川
昭島
総計

合計 / Est_Pop
108283
44556
40043
37575
31679
30749
27985
27282
26541
20270
20133
18065
16778
16089
14262
10444
10146
8705
8636
8407
7269
6499
6351
5869
5803
4244
3742
3189
3040
2338
1522
930
894
858
593
262
20
40580054• まずボロノイ図等によって、空間に分布する各施設の商圏（territory）を求める• 商圏が分かったら、そこの中にいる人口を面積按分法等によって推定する

29

現実には

• いままでの議論の問題点：
消費者は必ず自宅の最寄りの施設へ行くと仮定• この仮定が通用する業種は次のうちどれか？

商圏人口の推定（まとめ）ハフモデル（小売引力の法則）

各施設の魅力が非均質のときは，魅力と距離に応じて確率的に各施設を訪れる

コンビニ スーパーマーケット 郵便局
ファミレス 高級飲食店 家電量販店
小学校 温泉 ブランドショップ
確率67%
魅力度: 8
距離: 2km31

32

店舗Sjの魅力度

Ak dk

確率33%

ハフモデルに各地区人口をかければ、来店客数が予測できるハフモデルの一般化
A

PiからSjまでの距離2i

確率33%

j
地点Piの消費者がd ij
店舗Sjを選択する確率： pij 

店舗Sjの魅力

地点Piの消費者の=店舗Sjの引力

Piにおける店舗Sjの引力
地点Piの消費者が=店舗Sjに行く確率
P 周辺の店舗の引力の総和

魅力度: 1
距離: 1km•30

確率67%
魅力度: 8
距離: 2km33※地図の座標系の設定（うまく面積計算ができなかったときのために）• 「マップレイヤ」を右クリック→プロパティ• 座標系タブの中から，座標系選択→定義済み→Projected Coordinate System→NationalGrids→Japan→JGD 2000 Japan Zone 9を選択
• OK

地点Piと店舗Sjとの距離ik• 魅力度 ←売り場面積，価格設定…
• 距離 ←直線距離，ネットワーク距離，認知距離…
• λ←最尤法により推定（または2）34

魅力度: 1
距離: 1km

朝日折込マッピングシステム http://www.asa‐ori.co.jp/1291078472814/

3536