これはFOSS4G Advent Calendar 2014の記事です。
昨年の11月に西之島の噴火活動が活発になり、現在においても活動は続いております。私は昨年、最新のGIS技術とオープンデータを駆使して、西之島の将来予測を行いました。*1 *2 今回は、予測の検証のためQGISを利用したモニタリングと、それに伴い開発したシステムを紹介したいと思います。
おっぱい山のモニタリング
まずは、現状がどのようになっているかを確認するために、地理院標高タイルをMapproxy Pluginを利用して可視化しました(図1)。昨年行なったシミュレーション予測に大変近づいてきていることが分かります(図2)。
図1 西之島の現状(2014年12月4日) | 図2 昨年の予測(最終的にこうなる) |
何がどう近づいてきているのか分からない人のために図3を用意しました。
図3 現状と予測の重ね合わせ | 図4 Landsat8画像取得 |
現状が確認できたところで、その途中経過も確認します。Landsat-8直接受信・即時公開サービスで配信している画像をMapproxy Pluginの「Landsat8 GetData」機能を利用して取得します。撮影エリアを選択して属性情報からアクションを実行すると検索ウインドウが出ます(図4)。期間と雲量を指定すると、条件に一致する画像をすべて取得できます。また、その中から最も雲量の少ないバンドデータをWCSで取得することもできます。画像は各自確認ください。
おっぱい山の検知
自動検知システム
更なるおっぱい山の出現に備え、おっぱい山自動検知システムを開発しました。検知システムは地理院標高タイルとOpenCVおよびMapproxy Pluginを利用し作成しました。OpenCVについては「QGISでOpenCVリベンジ」と「OpenCVを使って顔認識プラグインを作ってみた」の記事を参考にし、標高タイルの表示方法はSimpleWCSServerを参考にしました。
仕組みは顔認識プラグインとほぼ同じですが、地理院標高タイルからリアルタイムに陰影図を作成し、その画像から検出することによって、日本全国の任意の場所を調査でき、さらに標高タイルの更新を即座に反映できるのが特徴です。また、標高タイルは基盤地図情報と比べ利用規約が比較的柔軟なのが嬉しい所です。今回は、おっぱい山を検出させるための学習ファイルの準備が間に合わなかったので、上半身を検出するためのカスケードファイルで代替しましたが、全く認識できていません(図5)。失敗の原因として、おっぱい山の教師データとなる画像の収集、閲覧に没頭しすぎてしまったことが挙げられます。今後は、流行りのdeep learnigの導入も視野に入れたいと思います。
目視による検知システム
自動検知システムの実現はまだ先になりそうなので、代わりに目視による検知システムを開発しました。Landsat-8直接受信・即時公開サービスで配信している画像を日本全国の範囲で合成し閲覧できる機能を「Landsat8 MapGenerator」機能として追加しました(図6)。
図6 Landsat8合成画像 | 図7 検索画面 |
図7のウインドウで検索条件を指定し「I'm Feeling Lucky」ボタンを押すことによって、条件に一致するデータの中から最も雲量のすくない画像を合成することができます。この画像を目視で観察することによって、広域におっぱい山を探索することが可能になりました。
ただ、わざわざQGISでやらなくても、Google Earthでいいんじゃないの?って思った方もいるかもしれません。そのとーりかもしれません。なのでGoogle Earthでは実装されていない機能「I'm Feeling Unlucky」ボタンを用意しました。検索条件の中から最も曇っている画像を合成します。結果を図8に示します。
図8 I'm Feeling Unlucky
今日は19年に1度の朔旦冬至らしいです。「陽極まれば陰となり、陰極まれば陽となる」ということで、衛星画像も晴れた日ばかりではありません。むしろ曇りの方が多いぐらいです。ただ、晴れの日も曇りの日もひたすら撮り続けるからこそ意味がある!そんな機能です。
ベクトルタイル表示機能
すでに、おっぱい山とは関係なくなってきてますが、ベクトルタイル表示機能もMapproxy Pluginに追加しました。こちらはMapnikのインストールが別途必要になりますが、この機能を使うと地理院ベクトルタイルやOSMベクトルタイルをTilemillのように好みのスタイルでレンダリングしながらQGISで表示させることができます。上で紹介した衛星画像だけでは場所が分かりにくいので、道路だけをレンダリングして重ねたりすると良いのではないかと思っています。(現在のところ、つくば周辺のみ表示できるようにしています。)
図9 道路中心線ベクトルタイル(MapBox風) | 図10 基盤地図情報ベクトルタイル(建物を立体的に) |
最後に
そういえばAdvent Calendarだったなと思い出したので、サンタさんを歩かせる機能を追加しました。ランダムウォークで地図上を動き回ります。
酔っ払ったおっさんがコスプレして徘徊してるだけのように見えるかもしれませんが...
しばらくは、東京都の三田周辺にいますので、探してみてください。
というわけで、ほとんどMapproxy Pluginの新機能紹介になってしまいましたが、ハッピー、メリー・クリスマス!