見出し画像

【実習編】レゴマップを作ろう

 I. はじめに

レゴマップのレゴとは「LEGO」、すなわち、子どもから大人まで人気のあのブロックのおもちゃのことです。そして、レゴマップはメッシュの真ん中にスタッド(丸いでっぱりのこと)を描いてレゴブロックを模したものです。

メッシュマップで良くないか?という意見には「ごもっとも」と返すほかありません。レゴマップは、レゴ好きな人たちによる遊び心で描かれている地図デザイン方法です。日本では使用されている場面をほとんど見かけませんが、海外ではそこそこ人気があります。今回は、そんなレゴマップの作成方法について紹介します。


II. データの準備

まず、レゴマップで表現する主題を決めましょう。標高や土地利用、気温、人口、地価など、メッシュマップで描かれる主題を選ぶのが良いでしょう。この note では、標高を使ってレゴマップを作ってみたいと思います。

1. 標高データの入手

まず、標高データの取得です。標高データの代表的なものといえばDEM(Digital Elevation Model:数値標高モデル)です。DEMは、基盤地図情報や各地のオープンデータポータルサイトなどから入手できます。
ただし、基盤地図情報は 10m 間隔、オープンデータは 5m や 1m 間隔のものが多く、非常に高精度、逆に言えばデータ容量が大きいファイルであり、レゴマップ作成に使用するにはオーバースペックです(※1)。

※1 もちろん、これらのデータを使用しても問題ありません。ちょっと処理が重く時間が掛かるだけです。

そこで、今回は地球地図の標高ラスターデータを使用します。このデータはGeotiff で公開されており、ダウンロードすればすぐに利用できます。下記のリンクにアクセスしましょう。

標高の項目から、日本が含まれているエリア
標高第2版データ1-4 -90N°~0°, 90E°~180E° (Geotiff 282MB)
をクリックして、Geotiffをダウンロードします。

画像1

Geotiff を QGIS に読み込むと、日本を含むアジア地域の標高が表示されます。この Geotiff の1ピクセルが表す大きさは、日本付近では約400mになります。

画像2

---   ---   ---   ---   ---   ---   ---   ---

2. 範囲データの準備

範囲データは、レゴマップのベースとなるメッシュデータを作成する際に、その範囲指定のために使用します。ここでは、福島県のポリゴンデータを準備します。

国土数値情報の行政区域データから福島県のシェープファイルをダウンロードします。

画像3

福島県のシェープファイルをQGISに読み込むと、下図のようになります。プロジェクトの座標系に地理座標系が適用されているので、福島県の形状が東西方向に伸びています。

画像4

---   ---   ---   ---   ---   ---   ---   ---

3. メッシュの作成

最後に、メッシュデータを用意します。外部からGISデータをダウンロードする場合は、e-Stat や G空間情報センター が利用できます。これらのウェブサイトが提供するメッシュデータは、標準地域メッシュの仕様に沿って生成されています。

一方、QGISの機能を使ってメッシュデータを作成することも出来ます。この機能で作成するメッシュデータは標準地域メッシュの仕様に沿わないので、他のGISデータの組み合わせて利用する場合には、メッシュがきれいに重ならずオーバーレイ分析が行いにくいといった不都合が生じることがあります。しかし、今回のようにデザインマップとして利用する場合には問題ありません。メッシュサイズを自由に指定できる点もメリットです。

メッシュサイズを距離単位で指定するためには、プロジェクトの座標系を投影座標系に指定しておかなければなりません。QGISウィンドウの右下にある「EPSG」をクリックし、平面直角座標系第9系(JGD2011 Japan Plane Rectangular CS IX、EPSG:6677)を選択しましょう。

画像5

続いてメッシュの作成です。メニューバーの「ベクタ」から「調査ツール」→「グリッドの作成」を選択し、グリッドの作成ウィンドウを表示させます。

画像6

グリッド作成ウィンドウの設定は下図の通りです。
まず、「作成するグリッドの種類」で長方形を選択します。「グリッドの範囲」では右のボタンをクリックし、「Calcurate from Layer」から福島県のレイヤを選択します。水平方向の間隔、垂直方向の間隔では、それぞれメッシュの幅を設定します。ここでは 5km メッシュを作成するため、右のボタンから単位を「キロメートル」に変更し、枠には「5」を記入します。

画像8

グリッド作成ウィンドウの [ 実行 ] ボタンをクリックすると、メッシュが福島県を包含する長方形の領域に生成されます。このうち、福島県のレイヤと重なるメッシュを取り出して、それをレゴマップに使用するメッシュとしましょう。

メニューバーの「ベクタ」から「調査ツール」→「場所による選択」を選択します。

画像7

選択する地物のレイヤにはメッシュレイヤを選択します。空間的関係には「交わる」を選択し、比較対象に福島県のレイヤを指定します。これで、福島県のレイヤと重なるメッシュを選択状態にできます。[ 実行 ] ボタンをクリックしましょう。

画像9

メッシュレイヤを右クリックして「エクスポート」から「選択地物の保存」を選択、選択領域を新しいファイルとして保存・レイヤに追加します。

画像10

---   ---   ---   ---   ---   ---   ---   ---

4. 標高データをメッシュに付与

メッシュデータを使って標高を表現するために、ラスターが持つ標高値をメッシュに付与しなければなりません。付与する方法はいろいろ考えられますが、ここでは「ゾーン統計量(ベクタ)」という機能を使用します。

メニューのプロセシングからツールボックスを表示させ(または [ Ctrl ] + [ Alt ] + [ T ] )、ラスタ解析の中にある「ゾーン統計量(ベクタ)」を実行します。

画像11

ゾーン集計では、次のように設定します。「入力ラスタ」には標高ラスターレイヤを選択、「ゾーンのベクタレイヤ」には福島県のメッシュレイヤを選択します。標高ラスターは単バンドのラスターデータのため、対象バンドはデフォルトのままで問題ありません。「出力カラム名」には「標高」や「DEM」等を適当に入力しておきます。

「計算する統計量」では、メッシュレイヤに付与する標高値の決め方を指定します。今回用意したメッシュは 5km 間隔です。一方、ラスターは1ピクセルが約 400m です。そのため、1つのメッシュ内に複数ピクセル存在し、どのピクセルの値をメッシュレイヤに付与すればよいか決定できません。そこで、計算する統計量では、付与する値を1つに決める方法を選択します。ここでは「平均」を選択しました。[ 実行 ] ボタンをクリックして、処理を開始しましょう。

画像12

ゾーン集計実行後に福島県メッシュの属性テーブルを開くと、標高値のフィールドが追加されたことを確認できます。この値を使って、レゴマップを作成していきましょう。

画像13


III. メッシュをレゴ風にスタイル設定する

それでは、メッシュレイヤのスタイルを設定し、レゴブロック風のデザインにしましょう。

まず、地形を表現するための階級区分を設定します。好みに合わせて自由に設定してOKですが、階級数が多いと、後の設定が大変になります。ここでは下図のように設定しました。配色は後の工程で設定するので、現段階では適当でも構いません。

  -9999 -  0   : #aeefd5
    0 - 100   : #f5ff63
   100 - 400   : #1cac00
   400 - 800   : #deaa00
   800 - 1200 : #8c654c
 1200 - 1773 : #ebe9eb

画像14

続いて、レゴブロック風のデザイン設定です。ここでのポイントは、各階級ごとに設定を行うことです。一括して設定できないので注意して下さい。

シンボルのスタイルはレイヤプロパティから設定するのが一般的ですが、レイヤパネルの各階級をダブルクリックしてもシンボルセレクタウィンドウを表示させることができます。

画像15

シンボルセレクタを開いたら、右上の [ + ] ボタンをクリックしてシンボルレイヤを3つ追加します。各シンボルレイヤは上から順にスタッド、スタッドの影、ブロック、ブロックの影を表現するために使用します。

画像16

スタッドを表現する最上位のレイヤを設定しましょう。一番上のシンボルレイヤをクリックして選択状態にし、シンボルレイヤタイプをプルダウンメニューから「中心点塗りつぶし」に変更します。すると、レイヤがポイントスタイルに変更するので、シンプルマーカーを選択してポイントのスタイル設定ウィンドウに切り替えます。

画像17

ポイントのスタイル設定では、次のように設定します。「大きさ」は、単位を「縮尺済みメートル」に変更し、数値を1500~5000程度の範囲で変更します(※2)。環境やメッシュサイズによって最適の数値は異なります。幾つかの数値を試しながら大きさを調整します。「塗りつぶし色」は階級区分で割り当てたい色に変更します。「ストローク色」は、黒色で透明度を70~80%に指定します。「ストローク幅」は0.1とし、非常に細い線で描きます。

※2 1500~3000という数字は、今回の5kmメッシュに合わせた数字です。作成したメッシュサイズに合わせて適切な値に調整してください。以降に登場するオフセットの数字も同様です。

画像18

単位を「縮尺済みメートル」とした理由は、下図を見るとよく分かると思います。下図の上段はシンボルサイズを2、単位をミリメートルとしたデフォルト設定です。下段はシンボルサイズを3000、単位を縮尺済みメートルに設定したものです。単位がミリメートルの時、ポイントは縮尺に依らず常に同じ大きさで表示されるため、メッシュとのバランスが縮尺に応じて変わってしまいます。一方、単位を縮尺済みメートルに変更すると、縮尺に応じてポイントの大きさも変化するのでメッシュとのバランスが保たれます。

画像19

次に、スタッドの影を表現する2番目のシンボルレイヤーの設定です。これもレイヤタイプを「中心点塗りつぶし」に変更し、そのポイントのシンプルマーカーの設定を変更します。

「大きさ」は、先ほどと同じスタッドの設定と同じ単位・大きさに設定します。すなわち、ここでは単位を「縮尺済みメートル」、数値を3000にします。「塗りつぶし色」は黒色に変更し、不透明度を70%程度に設定します。「ストロークスタイル」は「ペンなし」にします。

このままではスタッドの下に完全に隠れてしまっているので、「オフセット」の数値を変更して配置をずらします。単位を縮尺済みメートルに変更し、x、y の数値はどちらも150~300で調整します。

画像20

3つ目のシンボルレイヤは、ブロックを表現するシンボルレイヤとして利用します。設定は、「塗りつぶし色」を階級区分の配色に合わせて変更すればOKです。

4つ目のシンボルレイヤは、ブロックの影を表現するシンボルレイヤです。ここでは、「塗りつぶし色」は黒色に変更し、不透明度を70%程度に設定します。ストロークスタイルは「ペンなし」にします。また、「オフセット」の単位を縮尺済みメートルに変更し、x、y の数値を150~300で調整します。

画像21

これで、階級区分の1つの設定が完了しました。同じ操作を他の区分に対しても行えば、レゴマップが描けます。しかし、この操作を何度も行うのは大変です。そこで、シンボルのコピー&ペーストで手順を簡略化しましょう。

レイヤパネルで、先ほど設定した階級で右クリックして「シンボルのコピー」をクリックします。

画像22

そして、未設定の階級で右クリックし、「シンボルを貼り付ける」をクリックします。すると、先ほど設定したスタイルがペーストした階級にも適用されます。ただし、配色もコピーされるので、スタッドとブロックを描いている2つのシンボルレイヤについて、塗りつぶし色を変更します。

画像23

全ての階級を設定したものが下図になります。これで完成でも良いのですが、立体感を出すために、最後に描画順序の設定を行います。

画像24

福島県メッシュレイヤのプロパティを開き、シンボロジから「高度な設定」を開きます。

画像25

高度な設定では、各シンボルレイヤの描画順を指定できます。標高が低い方の階級から順に描画されるように指定することで、標高の高い階級の影の描画が低い階級にかぶるようになり、標高の高低関係に即した立体感を描画できます。

まず、「描画順序を有効にする」にチェックを入れましょう。すると、編集が有効化するので、描画順を数値で指定します。数値は行・列(横・縦)の順で大きくなるように入力します。

画像26

以上で、レゴマップが完成しました。描画順を設定したことで、標高の高い茶色の階級の影が、標高の低い緑色の階級に掛かり、高低差を演出できています。阿武隈川流域の低地や会津盆地が表現できてますね。影のオフセットの値を大きくすれば、より影を強調することができます。

画像27


IV. おわりに

今回はレゴマップの作成方法を紹介しました。正直なところ、レゴマップの実用性についてはかなり低いと思います。しかし、レゴマップを作るために使用したシンボル設定の工夫は、地図デザインを行う上で参考になります。

ここでは、メッシュレイヤの各階級でシンボルレイヤを追加する方法を用いてレゴマップを表現しましたが、他にもやり方はいろいろあると思います。例えば、メッシュの中心点のポイントデータを作成し、ブロック部分とスタッド部分を分けて描くこともできます。また、影の表現にシンボルレイヤではなく画像エフェクトのドロップシャドウを利用してもよいと思います。

1つのデザインを行うのに正解は1つとは限りません。いろいろなシンボル設定を試し、工夫していく中で、デザインスキルを磨いてきましょう。

記事の内容でもそれ以外でも、地理やGISに関して疑問な点があれば、可能な限りお答えしたいと思います。