この記事は、FOSS4G AdventCalenderの16日目の内容です。
FOSS4G2015Tokyoではprocessingを活用してみんなで課題解決をしましょう。といったセッションが開かれました。こうしたことから、自分も含めてprocessingをどう活用できるかは手探りな部分が多いのかもしれません。
事実「QGIS processing」なんかで検索したときに日本語の記事はあまり出てこないですし(探し方が下手とか言わない)、全体的にプログラマー寄りであったり、研究的であるような記事が多いような気がします(探し方がへt)。そもそもGISとはそういうものなのかもしれませんが・・・
QGISの使用用途
私のQGISの使用用途はもっぱら業務で使うことが多いです。そもそもQGISしか使ったことがないので、他に選択肢があまりありません。業務用途でGISを使う方法としては、データの整形であったり同じ処理を大量のデータに対して一括で行うためのバッチ処理であることが多いです。どちらの場合もGISである必要はないのですが、渡されたデータがGIS用のファイルだから仕方なくQGISで処理するというケースもあったりするのです。
○rcGIS?知らない子ですね、はは。
こうした作業はQGIS単独でできなくはないですが、processingを使うことによって結構便利にできるようになったりします。QGISの場合、できないことはプラグインを追加することで実現できたりすることが多いですが、たくさんあるプラグインの中から自分がしたいことと似ているプラグインを探すのは大変ですし、似たようなケースであるだけでピンポイントなケースとしてのプラグインは意外と少ないです、使ってみたけどコレジャナイ感むんむんです。さらに足を引っ張るのが社内のセキュリティ事情です。QGISは入れてもいいけどサードパーティーのプラグインは入れてちゃダメ、という会社は多いと思います。
こうした問題を解決してくれるだろうと信じているのがprocessingです。
今のところprocessingでやることは以下のようなところです。
- QGISのメイン機能と同じことをやる
- QGIS以外の機能を使う(比較する)
- コマンドを組み合わせてオリジナルのスクリプトを作る
- processingからバッチ処理
QGISのメイン機能と同じことをやる
QGISのメイン機能というか、もっぱらftoolsの方ではありますが、同じ機能は大抵登録されています。日本語で利用するときはftoolsの方が翻訳されてprocessingのどの機能と対応するのかわかりにくくなってしまっていますが「設定」→「オプション」
から「ロケール」
で「システムロケールを上書きする」
にチェックを入れて有効になるプルダウンでU.S. English
に設定してからQGISを再起動してみましょう。
英語版のQGISが立ち上がると思います。このとき、ftoolsの項目とprocessingの項目が一致するので、どれが同じ機能なのかが明白です。
もとに戻したいときは「Settings」→「Options」
と辿り「Locale」
で「Override system locale」
のチェックを外してQGISを再起動すれば元に戻ります。
そしてこれはFOSS4Gの会場で知ったことですが、メイン機能よりも出力形式が豊富にあるという不思議な恩恵を受けることができます。シェープファイルではカラムのバイト数制限の問題が・・・とお悩みの方はprocessingに切り替えるだけで幸せになれます。また、出力にはメモリレイヤやテンポラリとしての出力も可能なので動作確認だけしたいのに不用なファイルが増えるのはちょっと・・・なんて心配もありません。
QGIS以外の機能を使う(比較する)
QGISでできずとも他のソフトでできることもあるかもしれません。また、同じ機能がGRASS・SAGAとかにもあったりします。例えば、Dissolveとか検索しちゃったりなんかするだけでこんなに出てきます。
さらに余り好ましいことではないかもしれませんが、微妙に設定できるパラメータが違ったりして結果が異なったりするので自分の期待通りの結果を返してくれる機能を探すのもいいかもしれません。
ところで、QGIS以外の機能に関しては各ツールがインストールされていることが条件です。GDAL/OGR・GRASS・SAGAあたりはWindowsの場合はインストーラ使えば一緒にインストールすることができるのですぐ使えるようになりますが、OTB・LASToolsなどは別途自分で設定する必要があります。OTBはOSGeo4Wから入れることができるので比較的利用しやすいかと思います。OSGeo4Wから入れる場合、管理者権限で実行する必要があるかもしれないので注意が必要です。
R・・・は、ご存知の方いたら教えてください。
コマンドを組み合わせてオリジナルのスクリプトを作る
ここはチラシの裏にでも書いておきましょう。
processingからバッチ処理
公式ドキュメントに書かれていたりOSGeoのMLでも流れていましたが、processingの各コマンドはバッチで動かすことができるようになっています。このバッチの機能は単体のコマンドだけではなく自身で作ったモデルやスクリプトに対しても使えます。
ということは、何かしらのデータを整形して・・・整形した後にデータを集計して・・・集計した結果を何かしらの形で出力する。といったオリジナルのモデルも大量のデータを金曜日に動かして帰って月曜日に出社したら、はいできたー。なんてことも夢ではないかもしれません。
という、非常に自己満足度が高い内容になりましたが、少しでも使ってみようかなという気持ちになっていただけたらいいな、と思う次第であります。