はじめに
この記事ではQGISを用いた森林の可視化の方法を紹介します。衛星画像は2013年から使用可能なLandsat-8(解像度30m)及び2016年から使用可能なSentinel-2(解像度10m)を使用しました。
分析環境
ウェブから衛星画像を入手し、無料の地理情報システム「QGIS」を使用して解析しました。
手順
- EarthExplorerでLandsat画像の入手
- Copernicus Open Access HubでSentinel画像の入手
- Landsat画像のカラー合成表示
- Sentinel画像のカラー合成表示
- Landsat画像とSentinel画像の比較
1. EarthExplorerでLandsat画像の入手
EarthExploreで「Landsat」画像を入手します。
条件:
・Date Range: 09/01/2022-09/30/2022(2022/09/26の画像を入手)
・Cloud Cover Range: 0 - 20 %
・Path: 179
・Row: 064
・Product Type: Landsat8-9 OLI/TIRS C2 L1
画像を入手する際、全てのバンド(B1~B11)を入手しました。
2. Copernicus Open Access HubでSentinel画像の入手
Copernicus Open Access Hubで「Sentinel」画像を入手します。
条件:
・Sending period: 2022/01/01-2023/01/09(2022/09/26の画像を入手)
・Product Type: S2MSI1C
雲が20%以下の画像はなく、雲の設定をせずに検索した画像のうち、雲が相対的に少ない、かつコンゴ民主共和国キクウィット中心部の画像を入手しました。
3. Landsat画像の可視化
QGISを起動し、入手した画像をQGISの地図ビューにドラッグします。とりあえず全てのバンド(B1~B11)を選択します。
1. 4つのバンド(B2~B5)を重ねてマルチレイヤにします。
①メニュー>ラスタ>その他>結合
②入力ラスタ選択→ファイル名に☑
③「各ファイルを別のバンドに格納する」に☑
④出力のデータ型は「Uint16」を選択
⑤出力レイヤ→フォルダを選択しファイル名を入力(例:「Landsat8_20220926_B2-5_merge.tif」)
⑥「実行」をクリック
2. カラー合成を行います。レイヤをダブルクリックして、レイヤプロパティ>シンポロジを開き、以下のように設定します。
True(トゥルー)カラー合成画像
肉眼観察に近い画像の再現になります。
①レンダリングタイプ→「マルチバンドカラー」
・赤のバンド:バンド3
・緑のバンド:バンド2
・青のバンド:バンド1(Gray)
②コントラスト→「最小値から最大値までの範囲に引き延ばす」
③最小/最大設定>累積範囲→「2%~98%」、精度→「実際の値(低速)」
④「OK」をクリック
3. 画像の周りには黒く表示されている箇所(配信範囲)があります。この箇所には0というデータが入っています。この黒く表示される部分を消します。レイヤをダブルクリックして、レイヤプロパティ>透過性を開き、以下のように設定します。
①追加のnodata値→0
②「OK」をクリック
黒い部分が消え、より鮮明な画像になりました。また画像から深い緑の部分が森林のようです。
4. ヒストグラムを確認します。レイヤをダブルクリックして、レイヤプロパティ>ヒストグラムを開き、「ヒストグラムの計算」をクリックします。各バンドごとに最小~最大のピクセル値が表示されます。
5. カラー合成の変更を行います。
レイヤをダブルクリックして、レイヤプロパティ>シンポロジを開き、以下のように設定します。
False(フォールス)カラー合成画像
RGBのうちRに近赤外バンドのデータを割り当てて表示。植生が多い場所を「赤」で強調します。
①レンダリングタイプ→「マルチバンドカラー」
・赤のバンド:バンド4
・緑のバンド:バンド3
・青のバンド:バンド2
②コントラスト→「最小値から最大値までの範囲に引き延ばす」
③最小/最大設定>累積範囲→「2%~98%」、精度→「実際の値(低速)」
④「OK」をクリック
並べてみると、左の画像では雲の影響で霞んでいてよくわからない箇所も、右の画像によって赤い部分=森林と推察できるかと思います。
4. Sentinel画像のカラー合成表示
QGISを起動し、入手した画像をQGISの地図ビューにドラッグします。とりあえず全てのバンド(B1~B12)を選択します。
1. 4つのバンド(B2,B3,B4,B8)を重ねてマルチレイヤにします。
①メニュー>ラスタ>その他>結合
②入力ラスタ選択→ファイル名に☑
③「各ファイルを別のバンドに格納する」に☑
④出力のデータ型は「Uint16」を選択
⑤高度なパラメータ>nodata値として扱うピクセル値→0
⑥出力レイヤ→フォルダを選択しファイル名を入力(例:「Sentinel_20220926_B2-4_8_merge.tif」)
⑦「実行」をクリック
上記のLandsat画像と比べると、粒感がかなり異なり、さらによく見えるかと思います。これだけでも緑が濃い箇所=森林と思われる地域が特定できるかと思います。
2. カラー合成を行います。レイヤをダブルクリックして、レイヤプロパティ>シンポロジを開き、以下のように設定します。
True(トゥルー)カラー合成画像
①レンダリングタイプ→「マルチバンドカラー」
・赤のバンド:バンド3
・緑のバンド:バンド2
・青のバンド:バンド1
②コントラスト→「最小値から最大値までの範囲に引き延ばす」
③最小/最大設定>累積範囲→「2%~98%」、精度→「実際の値(低速)」
④「OK」をクリック
False(フォールス)カラー合成画像
他の設定は上記と同じ。
・赤のバンド:バンド4
・緑のバンド:バンド3
・青のバンド:バンド2
この画像によって、緑地(植生があるが森林ではない)と森林(特に赤い部分)と思われる地域がわかるかと思います。
5. Landsat画像とSentinel画像の比較
Landsat画像とSentinel画像を拡大して比較してみました。全体的にそれほど違いはないように見えますが、よく見るとSentinel-2の方がやはり粒感が細かく、相対的に細部がよりわかりやすいと感じました。
左がLandsat8, 右がSentinel2
左がLandsat8, 右がSentinel2
おわりに
今回はQGISを使って簡易的に森林と思われる地域を可視化してみました。目視でも複数の合成画像を作成することによって、森林と思われる地域を特定できることがわかりました。
なお、ここでは述べていませんが、画像を入手する際に雲の影響をあまり受けていない画像を見つけるのに時間がかかりました。他方で、Google Earth Engineでは一瞬である期間の画像のうち雲の影響をあまり受けていない画像を表示させたり、合成画像を作成することができます。QGISはコードを書く必要がないのでとても簡単に操作できますが、時間がかかるのが難点です。
次回はGoogle Earth Engineを使用した場合の森林の可視化方法を紹介したいと思います。