[ DATT-A9DARXすっとこジャム > 地形にカンパイ - A列車で行こう9・Exp. ]

最終更新:2022年6月25日


地形の特徴・地形の複雑度

(初版公開:2020年5月29日、改訂:2022年5月11日)

PCゲーム「A列車で行こう9」のゲーム画面では、プレーヤーが開発に取り組むゲーム内の空間(「マップ」)全体を俯瞰する「サテライト」と呼ばれる子画面が用意されている。標高によって色分けされ、建物や線路などが種類ごとに色分けされて示される。ゲーム中に表示させておくことによって、列車がどこを走っているという運行状況を一覧したり、クリックして目的の地点にすばやく移動することに使える。さらに、「サテライト」を上を北に固定する設定と、視点(※3DCGでいう「カメラ」)の向きにあわせて回転させる設定とを切り替えることができ、列車に乗車している気分で「マップ」を鑑賞できる「車窓モード」(※なぜか車窓」とはいうが運転台からの前方のビュー)で「サテライト」を回転させれば、カーナビのような感覚が楽しめる。

「A列車で行こう9」の「サテライト」は、セーブロードの画面ではゲームの進行状況を示すサムネイルの役割を持たされている。公式ガイドブック(全4冊)の「マップ攻略」でも「サテライト」の画像が掲載され、文字では「産業構成比」「都市情報」「資金」「交通施設」と「主な施設」が列挙されている。しかし、そのマップがどんな地形なのかを数量的に示すには至っていない。あくまで「サテライト」の画像(標高を色分けして示したもの)を見よということにされている。人の目で画像を見ているだけでは『データ』ではない

「A列車で行こう9」というゲームの中ではなぜか「サテライト」という呼びかたではあるが、これは地形図である。建物や線路などがない状態では、マップ全域の土地の高低や起伏を正確かつ完全に読み取ることができる。ここでは、この「サテライト」の画像をキャプチャ(※Windowsの通常の操作である[Print Screen]キーを使用)して『データ』をつくってみよう。
※諸般の事情により、セーブ・ロードの画面に表示される256×256ピクセルの状態でキャプチャする。「建造物初期化」を実行しておく。こんなことをしなくても済む「ハイトマップのエクスポート」が追加されることに期待しておく。

サテライト


▲スクリーンショットからトリミングして、このような256×256ピクセルのPNG画像を用意してほしい

サテライトのヒストグラム

heightpixels
2308
22014
21024
20037
19034
18055
170118
160122
150198
140247
130334
120443
110536
100686
90728
80774
70824
60966
501061
401111
301282
201513
101497
032523
-33364
-102099
-201896
-301240
-40728
-50570
-60594
-70804
-809106
  1. 「40m四方」を「1ピクセル」で表現したハイトマップである
    ※「40m四方」の中に、標高を持つ点が「10m」間隔で9個あるうち、「40m四方」ごとに、その中で左上(? あるいは絶対値の最大?)などの代表の1点だけを取って描画されているとみられる
  2. 「高さ」の値は「-80m」から「230m」まである
    ※「サテライト」で描画されるとき「10m」単位に丸められている
  3. 「0m」の地点を「平地」とする
    ※「20m」などの高さで平らな土地があっても、ここでいう「平地」には算入しない
  4. 「平地の輪郭」(「砂浜」)は「平地(%)」に算入し、「水面(%)」には算入しない
    ※プレーヤーがゲーム内で建物を配置するときに、建物の一部が「0m」の地点にかかっていれば「水面」にもかかる位置で配置できることから、このように数えることとした
    ※便宜上、「-3m」という高さの値を持たせた
サンプルデータ
マップコンストラクションで作成したマップの「サテライト」の画像のピクセルの色を読み取って数値化したデータ
その他のマップについてはこちらこちらから

多変量データに変えよう

このままでは「サテライト」の画像と同じく、割合(面積)を見て何か言うことしかできない。地形の特徴をあまさず表現する「多変量データ」にしていこう。1つ1つの「変量」は、アンケートの設問のようなものと思ってもよい。「あなたはどんな人ですか」と聞かれても答えに窮すが、具体的な設問が9つあって順番に答えると「こんな人です」ということが浮かび上がるイメージだ。

ここでは「このマップはどんな地形ですか」ということが知りたいので、「サテライト」の画像を人の目で見たときに読み取ることができるさまざまなことがらを、地形データ(ハイトマップ)を使って表現していく。このデータには「平面の座標」と「標高」という、実質的に2種類の情報しか含まれていないので、この情報から言えることだけを言うことになる。


▲色はこちらを参考にした

colorpixels
#58575751827.9%
#87878744206.7%
#b4b4b430104.6%
#dbdcdc3588754.8%平地
#1bacfa793112.1%水面
#1293f9910613.9%

これらを組み合わせ、なるべく重複しないよう考えたのが、以下の9つの変量である。とりうる最大値で割る「正規化」をしておこう。

※すべて文字で書いていることをお許しいただきたい。「/」は割り算の記号である。分数のように見て、「/」の左側を分子、右側を分母と思ってもらいたい。

【注意】このゲームでの「空間」は現実とは異なり、“地球の丸み”がない。現実の地図(地理院地図)やGISとの間でのデータ交換などは行なわせないことを強く推奨する。ここは数学らしく取り組むことに徹し、このゲームでの「空間」の(数学上の)表現に沿って、いわば『このゲーム限りのGIS』を自作するような取り組みをさせたい。その上で、現実の地図やGISにおける実務的な種々の工夫や計算上の注意などにつなげてほしい。

フリーの統計解析環境「R」を用いても算出できるが、ここでは自作のツール「点・望・山(M243-11Y)」および「PAL8-CNV ~ぱるはちこんぶ~」を用いた。

多変量解析をしてみよう

ここで得た「V1」から「V9」までの各変量間における相関係数行列を以下に示す。当然ながら「V7」「V8」「V9」の3変量は互いに相関係数が高い。次に「V2」と「V6」の相関係数が高い「V1」とほかの8変量との間では、極端に低い相関係数は出ない。(「V1」「V5」「V8」の間で互いに相関係数が高いと見ることもできる。)「V7」「V8」「V9」の3変量と、ほかの「V1」を除く5変量との間では、「V5」と「V8」、および「V3」と「V7」の相関係数が高い。一方、「V5」と「V7」の間では相関係数が最も低い

V1V2V3V4V5V6V7V8V9
V11
V2-0.3121
V3-0.3670.1491
V40.485-0.3690.4851
V5-0.603-0.054-0.127-0.5661
V6-0.1910.7690.277-0.113-0.2631
V7-0.246-0.2850.4560.302-0.006-0.2351
V8-0.522-0.0270.226-0.310.554-0.2160.4541
V9-0.425-0.0890.392-0.0180.267-0.2280.8360.8241

次に、「R」の「rpart」を使って「回帰木」を作成した。

「V2」から「V8」までの変量を使って「V1」を説明する回帰分析の結果を「木」のかたちで示したものだ。最下段で8つに分かれる。これを左から(「V1」が小さい順に)「Type A」「Type B」「Type C」「Type D」「Type E」「Type F」「Type G」「Type H」と便宜的に呼ぶこととし、地形の特徴とした。この8つの中では、「V1」が小さい順のほかに順序はない。

「回帰木」は、(1)すでによくわかっているデータ(※1)を使って作成し、(2)よくわからないデータ(※2)が「木」のどこに分類されるかすでによくわかっているデータどれと似ているか)を調べるという使い方をする。
※1 「トレーニングデータ」「正解データ」「教師データ」などと呼ぶ
※2 「テストデータ」「学習に用いないデータ」などと呼ぶ。

ここ(※自作のツール「点・望・山(M243-11Y)」)では、この(1)すでによくわかっているデータとして、このゲームに搭載された機能である「地形の自動生成」を使用して生成した地形データの中から、人の目で見て選んだ20個の地形データを使用した。

※「回帰木」の最下段の通りに並べた。なお、「回帰木」の最下段の枠の中の数字は、そこに分類されたデータにおける「V1の平均」である。「木」のかたちで表示する都合上、「V1」の大小が入れ替わって並んでいる部分もある。

※「V1」から「V9」までの変量は、この数字の順に思いついたわけではない。なるべくプレーンなものを前のほうに、もはや屁理屈ではというようなものを後ろのほうに並べた。そのようにして「V1」になったものを、被説明変数(目的変数)にすることにしたという順番である。

ここで「V1」という変量だけを単独で見ることを地形の複雑度と呼ぶこととした。「V1」の値を対数的に5つの区間に分け、低いほうから「Poor」「Average」「Good」「Excellent」「Too Complicated」というラベル(値の区間の名前)を与えた。

ゲームとしてのプレイアビリティは、地形の複雑度が「Good」なら問題なく、「Excellent」なら特別に優れ、そのほかは「Good」より劣ると判断してよい。「プレイアビリティが低い(線路や建物の配置の自由度がなさすぎるありすぎる)」ということは『難易度が高い』(考えることやすることがたくさんある)ということであり、決して「つまらない」とか「取るに足らない」とは限らない。もちろん、マップのよしあしは地形の特徴と一体で考えるべきもの。地形の特徴地形の複雑度が意味のあるかたちでつりあっていれば楽しいつりあっていなければ楽しくない、と考えるとよい。

地形の
特徴
地形の
複雑度
V1 V2 V3 V4 V5 V6 V7 V8 V9 平地
(%)
水面
(%)
ひしめきMType DGood 0.12 0.05 0.35 0.12 0.31 0.20 0.73 0.16 0.45 32.5 5.4
エアポートMType DGood 0.14 0.08 0.46 0.11 0.31 0 0.38 0.15 0.27 53.3 8.2
あかりMType DAverage 0.06 0.33 0.44 0.04 0.43 0.40 0.39 0.15 0.23 52.2 33.4
メトロポリタンMType DExcellent 0.17 0.06 0.30 0.07 0.24 0.16 0.48 0.15 0.31 55.7 6.1
タ陽MType DPoor 0.04 0.13 0.49 0.05 0.36 0.40 0.53 0.32 0.42 70.8 13.0
エキスパァM.Type EPoor 0.03 0.31 0.29 0.02 0.12 0.52 0.36 0.58 0.44 57.2 31.0
一級河川の川リバーMType DGood 0.12 0.09 0.46 0.14 0.28 0.17 0.51 0.26 0.38 44.0 9.0
ゆだMType DGood 0.13 0.00 0.55 0.22 0.27 0 0.41 0.04 0.23 35.8 0.4
ネオン橋ブリヂMType HGood 0.09 0.05 0.39 0.06 0.46 0.16 0.15 0.13 0.06 68.9 5.0
かまちMType HAverage 0.06 0.02 0.47 0.08 0.62 0.01 0.12 0.07 0.05 70.8 2.3
三日月島MVType DToo
Complicated
0.35 0.33 0.57 0.17 0.08 0.40 0.27 0.19 0.23 20.9 32.6
10ヴォスMType FExcellent 0.17 0.34 0.30 0.03 0.24 0.07 0.04 0.11 0.07 47.8 34.1
ドリームMType APoor 0.04 0.08 0.49 0.03 0.58 0.16 0.29 0.59 0.39 82.9 7.7
マリネ屋MType FAverage 0.06 0.42 0.31 0.01 0.61 0.19 0.21 0.44 0.12 50.7 41.7
かけはMType DAverage 0.07 0.10 0.66 0.29 0.00 0.20 0.53 0.14 0.34 17.1 9.8
スタァライト川崎MType DAverage 0.06 0.01 0.56 0.22 0.14 0.01 0.28 0.16 0.20 40.6 1.0
ストライドMType HAverage 0.07 0.15 0.72 0.25 0.34 0.00 0.09 0.06 0.06 38.1 15.0
ハーイおばけMType EPoor 0.05 0.39 0.45 0.08 0.12 0.43 0.34 0.50 0.42 33.7 39.5

相違ありません


「探究型学習」と「工学」

多変量解析のおもしろさを伝える題材として「卵の形は産む数や環境要因、巣の特徴などと関係がない一方で、「ハンド・ウイング指数」が最も高い、つまり最も効率的に飛べる鳥は、卵の非対称性または楕円率が最も高いことがわかった」(2017年6月27日)がおすすめである。理科の単元にとらわれ、いわゆる重回帰分析だけで終わるような展開では物足りない。

Excelと高校の数学だけでできることしかしないという展開には感心しない。「地理探究」などの探究型学習に関連し、応用地質・みずほ情報総研・インキュビット「複数の地形的特徴から土砂災害の危険性がある地域を抽出するAIモデルを開発」(2019年9月2日)といったニュースを漠然と見るのでなく、具体的な計算や特徴量の用意のしかたをイメージさせる必要がある。ここでは人の目で見て人の頭で考えて(やっとのことで)9つの変量を得ているが、これを自動的に無理やり見つけてくれるのが「ディープラーニング」であるという説明のしかたもできる。

いわゆる空間統計学の教科書に則りながらの、工学の現場で通用する実際的な計算法については関知しない。それは工学であって理数探究ではない。プロの道具をおもしろがって勝手にいじるようなことはさせない。プロはそれをものすごく嫌う。

わたしたちは基本的に「R」を使うほかない。例えばExcelVBAやPythonでじぶんでコードを書く(生徒に書かせる)ためには、これ(黒板と紙に手で書ける数式)をぜんぶ自力で書いて説明して他人を納得させることができないといけない。

森の入り口は1本の木から

このページで「回帰木」という呼び方で紹介しているものは「CART法」という名前で発表されたもので、その考案者はのちに「ランダムフォレスト(Random Forest)」を提案している。特定の分野では「決定木」「決定木分析」と呼んできた(すべて手作業で作成する場合すら含む)が、わたしたちがこれから取り組む「理数探究」としては、数学と統計学の諸概念や用語に照らして一般化した呼び方である(応用には踏み込まない)「回帰木」という名前を使うことが強く望まれる。「CART法」は、与えた多変量データを総当たりで調べ尽くしてくれるアルゴリズムである。影響の大きいものだけを選択的に見ていく「変数選択法」による重回帰分析や手作業の混ざる「決定木分析」よりも、はるかにエレガントな方法であるといえる。半端な形ではあるが「ランダムフォレスト(Random Forest)」に通じてゆく、機械学習の入り口と捉えさせるようにしたいものである。よりクラスタリングに片足を乗せた実用的な方法として「ID3」「C4.5」の系統があるが、折衷的な方法であるので「理数探究」で取り上げるのは妥当でないと考えられる。幾何学へのいざないとしては「最小全域木(MST)」「アルファシェイプ(α-shape)」「凸包(convex hull)」などにつなげられるだろう。


参考文献


Rのハローワールド

公式ガイドブック対照表

路線図とマップコンストラクション


※ゲーム内の地形データの著作権はゲームソフトのメーカーに帰属すると思われます。


ARXすっとこジャム(30238) All Rights Reserved. ©2018-2022, tht.