waigani's diary

QGISを中心にFOSS4Gをいじくる

QGIS 2.0のココが好きだ(10個で止めとく)

この記事はFOSS4G Advent Calendar 2013 11/30のものです。

20112012とみなさんのご協力で開催することが出来ました。ありがとうございます。一部にご好評につき、本年も開催させていただきます。
今年もあと一ヶ月、毎日ジオジオしましょう。

本来は12/1から開始ですが、祝 FOSS4G勉強会@函館 開催と致しまして11/30からスタートと致します。

本日のコンテンツ

本年の話題と言えば、私的にはQGIS 2.0です。
QGIS 2.0で日本語もほぼ問題なく使えていますし、便利な機能がたくさん増えています。新機能について詳しくはQGIS Manual内のWhat's new in QGIS 2.0を見てましょう。
まだまだQGIS 2.0の使用感を伝える記事は少ないですよね、このアドベントカレンダーを機会に少しでも充実させたいと思っております。

新機能+αで勝手に叫ばせていただきます。QGIS 2.0のココが好きだ。

  1. QGIS 2.0のラスタリサンプリングが好きだ
  2. QGIS 2.0のカラーレンダリング混合モードが好きだ
  3. QGIS 2.0のコントラスト強調しておいてくれるのが好きだ
  4. QGIS 2.0のpythonコンソールが好きだ
  5. QGIS 2.0のプロセッシングが好きだ
  6. QGIS 2.0のアトラスが好きだ
  7. QGIS 2.0のダイアグラムが好きだ
  8. QGIS 2.0のベクトルに複数スタイルを付けられるのが好きだ
  9. QGIS 2.0のドキュメント日本語化が好きだ
  10. QGIS 2.0の日本語対応が大好きだ!

1.QGIS 2.0のラスタリサンプリングが好きだ

ラスタレイヤを表示する際のリサンプリング方法を指定出来るのはご存知でしょうか?
QGISに読み込む前の画像を100%の解像度で表示した場合、このように表示されるとします。

これをQGISで表示した場合、スケールによって拡大・縮小・また投影法の違いで変換されて表示されます。
この時、表示される画像の各ピクセルの値(色)を、元画像から求める処理が入ります。それがリサンプリングです。一番簡単な処理は"最近傍"で、表示される画像の各ピクセルに対応する元画像のピクセルを1つ決めてその値を持って来ます。
下図向かって左の画像を50%に縮小した場合、1つ飛ばしのピクセルを持ってくる形になります。

ただコレだと画像が見難くなる場合があります、他のリサンプリング方法として縦横のピクセルも参照して加重平均から求める方法や、周囲のピクセルも参照して求める方法などが使用されます。他のリサンプリングで同じく50%縮小すると下図のようになります。例が悪いので見やすいかは微妙ですが。

さてQGISで実装されているリサンプリング方法を比べてみましょう。
ラスタレイヤを読み込み、レイヤのプロパティを表示→スタイルを選択します。一番下にリサンプリングの選択肢が出てきます。

拡大、縮小の際のリサンプリング方法を選択することが出来ます。実際に表示した結果が下記になります。キュービックは使った画像が悪いですね。

  • 拡大時
最近傍 バイリニア キュービック
  • 縮小時
最近傍 平均

QGISでラスタを表示した際に、元画像に比べて汚く表示されるなと思った際は、リサンプリング方法を変更してみましょう。

2.QGIS 2.0のカラーレンダリング混合モードが好きだ

QGIS 1.8では下記のような2レイヤを重ねて表示する場合、上に表示されるレイヤに透過率を設定して表示していました。

透過率50%を設定

透過されることで本来クロで表示したかった場所も一様に透過されて薄くなってしまうなど、表現が制限されてしまいます。

QGIS 2.0ではレイヤの重ね合わせの際の色の混合モードが選べるようになっています。
レイヤのプロパティを表示→スタイルを選択します。中段にカラーレンダリングの選択肢が出てきます。

各選択肢の説明は省きますが、幾つかの処理結果だけ。

乗算 オーバーレイ

折角作った表現です、キレイに表示しましょう。

3.QGIS 2.0のコントラスト強調しておいてくれるのが好きだ

QGIS 1.8でありがちだったのが、DEMファイルを開いたら、あれ?一色??と途方にくれるという状況でした。
毎回一瞬ドキッとしちゃいますね。

これ、コントラスト強調を設定してあげないとダメなんですね。

でもQGIS 2.0では、ファイルを開いた状態でちゃんと設定してくれる、うれしい。

4.QGIS 2.0のpythonコンソールが好きだ

QGIS 2.0からPythonコンソールが思いっきりパワーアップしています。
これを使っている人はまずいないので、この感動を伝えるのが難しいのですが、アツく語ります。

まずメニューから"プラグイン"→"pythonコンソール"を選んで、pythonコンソールを表示してみましょう。

アイコンが色々出てくる!この時点でうれしくなりますね。でも注目するのは上部のwindowsに表示されているココ、

## 詳しい情報とメソッドのリストが必要な場合は help(iface)とタイプして下さい

QGIS 1.8の時の表示とくらべてみましょう、

このコンソールからQuantum GIS環境にアクセスするためには
qgis.utils.ifaceオブジェクト(QgisInterfaceクラスのインスタンス)を利用して下さい.

何度打ったかわからない

iface = qgis.utils.iface

をタイプしなくていい!いきなりifaceでいいんです。これはうれしい。

続いてアイコンの方を見てみましょう。"C"っぽいアイコンをクリックしてみると、

出てくるのは外部パッケージのインポートメニュー。正直わざわざこのために何行コード書いたんだ?とかも思うわけですが、痒いところに手が届く配慮です。

さらに"エディタの表示"をクリックすると、

エディタ出てくるし!1行づつ打っていた日々とはこれでサヨウナラです。フアィルに保存も出来る、ファイルを開くことも出来る。何行でも書けちゃう。

さて開発するかと、タイプを始めると、なんと選択肢が出てくるではありませんか。コードの自動補完付きです。

ここまで用意されたら開発に挑戦するしか無いですね。みなさんも一度この感動を味わってみてください!

5.QGIS 2.0のプロセッシングが好きだ

QGIS 1.8からあったのですが、SEXTANTEからプロセッシングと名前が変更になりました。
この機能一体何?と思うかもしれませんが、使い方を覚えるととても便利なものです。
手抜きして以前書いた文章から引用。

SEXTANTEはQGISで使える様々な解析機能をまとめるためのフレームワークです。GRASS,SAGAなどで提供される解析機能を、SEXTANTEを通して統合してシームレスに使用することが出来ます。注意する点としては、SEXTANTE自体はフレームワークなので、各々の解析機能(GRASSやSAGA)は別にインストールされている必要があります。

それぞれ別にある解析機能を統一されたユーザインタフェースで使用することが出来るようになりました。統一されていると何が良いかって、処理を繋げていけるところです。


ユーザインタフェースを少し見て行きましょう。プロセッシングツールボックスを立ちあげてみます。

"Simplified interface"と表示されています。これを"Advanced interface"に変えてみましょう。

用意されている各解析機能がどのアプリケーションから来ているかによって、グループ分けした状態で表示されます。プロセッシングが様々なアプリケーションから提供される機能で構成されてることが分かります。


QGISの基本機能で用意されているベクトルレイヤのクリップ機能を、比べてみましょう。
QGISのメニューから"ベクトル"→"空間演算ツール"→"クリップ"と選択します。

入力とするレイヤ、クリップ範囲を指定するレイヤ、出力ファイルを指定する各フォームが表示されています。
これをプロセッシングで見てみましょう。
"QGIS geoalgoritms"→"Vector overlay tools"→"Clip"を選択します。

表示されるダイアログを比べると、QGISメニューから選択したものと同じ入力項目ということが分かります。


プロセッシングに登録されている他の解析機能を選択しても、同じようなダイアログが表示されます。ユーザインタフェースの統一ってデザインのこと?と思ってしまうかもしれませんが、違います。(そうでもあるけど)
各機能から提供される解析機能の上に、プロセッシングがかぶさっている形になっていて、

  • 入力ファイル(もしくは入力レイヤ)
  • オプション

を渡してあげると、

  • 対象の処理を行ったファイル名

が返ってる、これの繰り返しを提供してくれます。入力・出力はファイル(レイヤ)だけではなく、値の入力・出力となる場合もあります。この流れにのせてしまえば、オリジナルの機能を追加することも出来ます。


さて統一されたインタフェースで、処理を繋げられるという点を見てみましょう。
メニューから"プロセッシング"→"グラフィカルモデラー"を選択しましょう。

ベクトルレイヤからランダムに図形を選択、選択した図形を別レイヤで保存という一連の処理をつなげてみます。
まず、"入力"タブから"Vector layer"を選択します。"Parameter name"はinputLayerとつけておきました。

入力レイヤが追加されました。

次に"アルゴリズム"タブに移り、"QGIS geoalgorithms"→"Vector selection tools"→"Random selection"を選択します。表示されたダイアログで"Input Layer"に入力として作成しておいたinputLayerを指定します。

次に"アルゴリズム"から、"Scripts"→"Example scripts"→"Save selected features"を選択します。表示されたダイアログで"input"にRandom selectionの結果を、"output"に何か名称をつけてここではoutputと入力しました。

次のようなモデルが出来上がります。

ベクトルファイルをあらかじめQGISで開いた状態で、実行する事が出来ます。
このように異なるアプリケーションから提供されている解析機能(ここではQGISの基本機能と、サンプルとして追加されているスクリプト)を繋げて実行することが可能です。もちろん、作成したモデルは保存しておくことができるので同じ処理を繰り返し使用することが出来ます。

みなさんも一度お試し下さい。

6.QGIS 2.0のアトラスが好きだ

プリントコンポーザに"アトラス"という機能が追加されているのをご存知でしょうか?
これ、範囲指定に使う図形のレイヤを指定しておくと、プリントコンポーザで指定したレイアウトを使って各図形範囲の出力図を作成出来るものです。

出力したいのは上から2つのラスタレイヤ(25000R, Texture)で、範囲の指定に行政区画のベクトルレイヤ(AdmArea)を読み込んでいるとします。

コンポーザを開いて、レイアウトを作りましょう。ここでは、地図の追加とラベル追加をしています。
地図はレイアウト内に表示する位置を決めるだけです。表示される縮尺等は範囲指定に使う図形で決まるので気にしておく必要はありません。
ラベルには"ラベルプロパティ"から"式の挿入"をして、属性を表示するように設定しました。


レイアウトを作り終わったら、"アトラスの作成"タブを選択します。
"範囲指定レイヤ"で行政区画のベクトルレイヤを、今回は範囲指定のレイヤは描画しないので"範囲指定レイヤを隠す"にチェックを入れます。

ここまでの設定が終わったら、"PDFとしてエクスポート"を選択してみましょう。出力先のフォルダを聞かれます。後は処理が終るのを待ちましょう。出力先に選んだフォルダにPDFがずらっと出来上がります。
PDFを開いてみると、各図形範囲で設定したレイアウトに従って出力が行われていることを確認出来ます。

これは本当に便利です!

7.QGIS 2.0のダイアグラムが好きだ

利用頻度が高いかと言われるとそうではないのですが、ダイアグラムも追加になっています。
QGIS 1.8では、パイチャートとテキストダイアグラムが作成可能でした。

QGIS 2.0では、これに加えてヒストグラムが作成出来ます。

北海道の男女人口比を描画してみると、

パイチャート
テキストダイアグラム
ヒストグラム

地味にこういった機能好きです。
カッコイイダイアグラム出来たら教えて下さい!

8.QGIS 2.0のベクトルに複数スタイルを付けられるのが好きだ

QGIS 2.0ではベクトルレイヤに対して複数描画スタイルを付けることが出来ます。
ポリゴンのレイヤを開いているとします。ベクトルレイヤのレイヤプロパティを開いて、スタイルを設定します。
シンボルレイヤ群のところを見てみましょう。一番上の"Fill"を選んでいる状態だと、下の"+"を押していくと複数のシンボルレイヤを追加することが出来ます。

追加されたシンプル塗りつぶしを選択して、パネル右からシンボルレイヤタイプの選択肢を表示してみましょう。

シンプル塗りつぶし以外を選択した際は、もう一段シンボルレイヤが表示されます。
例えばラインパターン塗りつぶしの場合、ここにいくつかのラインをその下に持つことが出来ます。

いろいろなシンボルレイヤがあるので是非試してみてください。

良くある例としては、一番下にオフセットをしたシンボルレイヤを設定して影を付ける、でしょうか。

こんな感じです。

これもカッコイイ表現作ったら教えて下さい!

9.QGIS 2.0のドキュメント日本語化が好きだ

何にもしてなくてごめんなさい。ユーザ登録すらしてない・・・

これに関しては、アドベントカレンダー中にどなたか触れると思いますので、trasifexのリンクの紹介だけに致します。
The QGIS Documentation translation project on Transifex

参加できる方は是非ご参加下さい。

10.QGIS 2.0の日本語対応が大好きだ!

QGIS 2.0の日本語対応に尽力してくれた皆様本当にありがとうございます。
皆様のお陰で快適に使わせて頂いております。
日本語対応のため各種ソースをcommitしていただいている赤木様、メニュー日本語化をして頂いている嘉山様、GDALの日本語対応をしていただいた沖様、その他関係者皆様、本当にありがとうございます。
QGISハックフェスタに参加されたGeoRepublicの皆様、羨ましい!

当然、QGIS開発コミュニティには大感謝です。
QGISに寄付するという手もありますので、みなさん何らかの貢献を致しましょう。
QGIS Gold Sponsorのアジア航測様ありがとうございます。

来年は私も少しでも貢献出来るように致します。

長文にお付き合いいただけありがとうございました。