はじめに
このサイト「水環境分析のためのデータサイエンス」で語られていることって、すごくワクワクしませんか?僕もいつも更新を楽しみにしている一人です。これまで専門家が現場に足を運んで、一つ一つ丁寧にサンプリングしていた水環境の世界に、PythonやGISみたいなデータサイエンスの力を掛け合わせることで、今まで見えなかったものが見えてくる。そんな可能性を感じさせてくれるんですよね。このアプローチって、単に分析が効率的になるだけじゃなくて、環境を理解する「解像度」そのものを上げてくれるような気がしています。このサイトで紹介されている様々な技術を学んでいると、自分たちの手で、もっと深く、もっと広く、水の世界を探求できるんじゃないかって、そんな気持ちにさせてくれます。今回は、そんな素晴らしい取り組みに触発されて、僕が最近「これは面白い!」と思った、「空から水環境を見る」というアプローチについて、少し書いてみたいなって思います。
このサイトでもGISを使った空間的な分析の大切さが語られていますけど、そのデータソースとして「衛星データ」、いわゆるリモートセンシングを使ってみるのはどうでしょう。例えば、湖の富栄養化の状況を把握したいとき、通常は船を出して、いくつかの地点で水を採ってクロロフィル濃度なんかを測りますよね。もちろん、それはすごく正確で大事なデータです。でも、湖全体の状況を「面的」に、しかも定期的に把握するのは、時間もコストもかかって、正直かなり大変です。そこで衛星の出番です。特定の波長の光の反射を分析することで、水中のクロロフィル濃度や濁度を推定できる技術があるんですよね。これなら、一度に湖全体の状況をスナップショットとして捉えられるし、過去のデータも遡って変化を追うことだってできます。現場の調査データが「点」の深い情報だとすれば、衛星データは「面」の広い情報。この二つを組み合わせることで、汚染源の推定や、赤潮の発生予測なんかが、もっと精度高くできるようになるかもしれないって思うと、すごく夢が広がりますよね。
現状と課題
「でも、衛星データなんてどうやって手に入れて、どうやって分析するの?」って思いますよね。僕も最初はそうでした。でも、今は「Google Earth Engine (GEE)」っていう、とんでもなく便利なプラットフォームがあるんです。これは、Googleが提供しているクラウドベースの地理空間情報分析サービスで、膨大な量の衛星データがアーカイブされていて、それをブラウザ上でPythonやJavaScriptを使って直接分析できちゃうんです。わざわざ巨大なデータをダウンロードしてくる必要もありません。例えば、ある湖の水域面積が季節によってどう変化するかを知りたいとき、こんな感じのコードを書くだけで、簡単に可視化できたりします。これは、琵琶湖周辺のLandsat 8の画像からNDWI(正規化差分水指数)を計算して、水域だけを抽出する簡単な例です。
```python # Google Earth Engine Python APIの例 import ee import ee.mapclient
解決策とアプローチ
# GEEの初期化 ee.Initialize()
# 対象領域(琵琶湖周辺)を指定 biwako_area = ee.Geometry.Rectangle([135.8, 35.0, 136.3, 35.6])
実践のヒント
# Landsat 8の画像コレクションを取得 # 雲が少ない、特定の期間の画像を選択 image = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR') \ .filterBounds(biwako_area) \ .filterDate('2020-08-01', '2020-08-31') \ .sort('CLOUD_COVER') \ .first()
# NDWI(正規化差分水指数)を計算 (Green - NIR) / (Green + NIR) # バンド名は衛星によって異なるので要確認(ここではB3とB5) ndwi = image.normalizedDifference(['B3', 'B5']).rename('NDWI')
まとめ
# NDWIの閾値を使って水域をマスク water_mask = ndwi.gt(0.2) # 0.2以上のピクセルを水域と判断
# 結果を地図に表示 # ee.mapclient.centerMap(lon, lat, zoom) で地図の中心を設定 ee.mapclient.addToMap(water_mask, {'palette': 'blue'}, 'Water Mask') ``` こんな数行のコードで、宇宙から撮影されたデータにアクセスして分析できるなんて、本当にすごい時代になったなあって感じます。このサイトで学んだPythonの知識が、こんなところでも活きてくるんですね。
もちろん、衛星データだけで全てがわかるわけではありません。天候に左右されたり、水中の深いところの情報は得られなかったり、限界もあります。だからこそ、このサイトが提唱するように、現場での地道な調査と、データサイエンスの力を組み合わせることが、何より重要なんだと思います。リモートセンシングという新しい「目」を手に入れることで、このサイトが目指している「データ駆動型の水環境分析」は、さらにパワフルで、立体的なものになっていくはずです。現場のデータで衛星データの推定結果を補正する「グラウンドトゥルース」を行ったり、逆に衛星データで変化が見られた場所を特定して、重点的に現場調査を行ったり。そんな連携ができたら、きっと最高ですよね。僕もこのサイトで基礎をしっかり学びながら、もっと色々な技術にアンテナを張って、自分なりの分析に挑戦していきたいです。次にどんな面白いテーマが紹介されるのか、今から本当に楽しみです!