河川データの水域系別の色分けは以前からの課題であった.今回ヒントが得られたのでQGISの操作をあわせて紹介する.
河川データのダウンロード
河川データは国土数値情報の河川データが一部直っていた件で紹介した.流路のシェープファイルを1つのフォルダーにまとめておく.
QGISでの処理
ベクタレイヤの追加
「レイヤ」メニューの「レイヤを追加」から「ベクタレイヤを追加…」を選ぶ.
「データソースマネージャ」の「ソース」右端の「…」ボタンをクリックする.
「QGISがサポートするベクタデータセットを開く」ダイアログでシェープファイルを全て選択し「開く」ボタンをクリックする.
データソースマネージャで「追加」ボタンをクリックして「閉じる」ボタンをクリックする.
都道府県ごとに色分けされた状態である.
プロパティ
レイヤパネルに47個のレイヤが表示されている.ここから1つずつプロパティを変更していく.その前に河川データの属性テーブルの構造をおさらいする.
河川データの属性テーブルの構造
河川データの属性テーブルの構造は以前示した.ここで使いたいのは水域系コードであるW05-001である.これを識別子として計算のシードとする.
単一の数値から3種類の数値を計算する
水域系コードW05-001は1つの数値である.この数値から3種類の異なる数値を計算で導出したい.いくつか方法はあると思われるが,ここでは単純な計算を用いることにする.計算結果には制約があり,それは「0から255までの整数である」というものである.
- W05-001を128で除した余り
- 上記を255から引いた差
- さらに上記を引いた差
としてみる.
レイヤのプロパティを開く
「レイヤ」パネルのレイヤを右クリックして「プロパティ」を選ぶ.
「レイヤプロパティ」の「シンボロジ」を選んだところである.
デフォルトでは「単一定義」となっているが,これを「カテゴリ値による定義」に変更する.
「値(Value)」右端の「式ダイアログ」ボタンをクリックする.
「式ダイアログ」で「色」「color_rgb」を選ぶ.ここで先述した3つの数値を指定することになる.
一旦キャンセルしてプロパティに戻る.「値(Value)」をプルダウンすると使用可能な変数が表示されるので,W05-001を選ぶ.
続けてキーボードから「 % 128」とタイプする.イタリック体となり計算が成立していることが分かる.%は剰余を計算する演算子である.ここで式ダイアログに入る.
式ダイアログに変数が入った状態である.ここから中央に配置してある関数を選んでいくことになる.
式が完成した状態である.OKをクリックして式ダイアログを抜ける.
「値(Value)」に関数を用いた式が入力された状態である.
「分類」をクリックするとW05-001の値ごとにシンボルが振り分けられる.「適用」「OK」をクリックする.
上記の作業を47回繰り返すと下図のような水域系ごとに色分けされた河川の図が得られる.
これで完成かと思われたが,よく見てみると利根川水系など,都道府県の境界で色が異なるのが分かる.カラーランプにrandom colorsを指定しているのが原因かもしれないと考え,特定のカラーランプに変更してみたが,結果は思わしくなかった.これではだめである.
カテゴリ値による定義から単一定義に変更して,下図のように式を少し変更してみた.
結果はかえって良くないものであった.元のシードとしてのW05-001が近い水域は似たような色になってしまうことが原因である.
レイヤをマージしてみる
単一定義では隣接する水域系の色も酷似する.カテゴリ値による定義に戻したほうが良さそうである.かと言って都道府県ごとにレイヤが分かれていると配色が一致しない.ならばレイヤをマージすれば良い,と考えてマージしてみた.
しかし下図のようなエラーが発生し,マージできない.以前の記事ではマージできたのだが.
おそらくレイヤごとのデータ長の不一致が原因だろうと踏んで,属性のリファクタリングで不要な属性を削除することにした.
その後ベクタレイヤのマージを行うと,成功した.
レイヤプロパティ
「レイヤプロパティ」で「単一定義」から「カテゴリ値による定義」に変更する.
値(Value)にW05-001 % 255と記述する.% は剰余を求める演算子であり,任意の数値を 0 から 255 に量子化する処理である.
「分類」「適用」「OK」をクリックする.
結果
水域系により色分けされた河川が表示される.
別のデータから色分けした河川を示す.国土交通省の国土数値情報より加工したものと,若干異なる.原因は分かっていない.
まとめ
国土数値情報の河川データをダウンロードし,水域系ごとに河川を色分けした.ベクタレイヤのマージが必要であり,配色はある程度ソフトウェアに委ねる必要があった.
“国土数値情報の河川データを水域系別にQGISで色分けする” への1件の返信