1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QGIS上で道路周辺の夜間光の変化を見る

Last updated at Posted at 2024-04-15

1. はじめに

今回の分析対象はネパールのシンズリ道路です。
シンズリ道路については、JICAプロジェクト概要ページをご覧ください。

この道路の建設によって、対象地域の「経済活性化」が期待されていました。
そこで、衛星データ(夜間光)を活用して、道路による「経済活性化」を可視化してみたいと思います。

今回使用するツールはGoogle Earth Engine(以下、「GEE」)とQGISです。
GEE上で衛星データのインポート・成形・ダウンロードを行い、QGISでそのダウンロードしたデータを集計・可視化します。

最終的なアウトプットは下図になります。
このように図示することによって、どこでどのような変化があったのかがわかりますね。
ntl_change_nepal.png

さらに、シンズリ道路周辺に注目すると、道路沿いの町(特にドリケルやシンズリマディ)において夜間光量が増加しており、事業が町の「経済活性化」に貢献していることが示唆されます。
ntl_change_road.png

以下、上記の図を作成するための手順を紹介します。

2. 使用データ

今回の分析には、以下の衛星データを使います。

また、衛星データに加えて、以下の地理データも使います。

  • 行政区:Nepal - Subnational Administrative Boundaries

    • adm1:州レベル、adm2:県レベル、adm3:区レベル
    • データ最終更新日:2024年3月

  • 道路と町:無料公開データがないため、自作で対応します。

    • QGIS上でGoogle Mapのレイヤーを重ねて目視で道路と町を特定し、データを自ら作成します。
    • 作成方法については、こちら(過去の類似記事)をご覧ください。

3. 分析手順

3.1. 衛星データの収集

Google Earth Engineを使って、夜間光データを収集します。

まず、分析領域を設定します
国境データをGEEにインポートし、ネパールのみを選択します。

インポートのコードはこちら
sample.js
var dataset = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');//境界データを取得する
var nepal = dataset.filter(ee.Filter.eq('country_na', 'Nepal'));//ネパールのデータを取得する
// ('シェープファイル上の変数名', 'データ名')

Map.addLayer(nepal, {
  fillColor: 'b5ffb4',
  color: '00909F',
  width: 1.0,
},
'青:ネパール');
// {}:地図に表示される方法(色など)。デフォルトは黒

image.png

次に、事業実施前後の夜間光データをインポートします
各条件を次のように設定し、GEEに夜間光データをインポートします。

①事業実施前(2014年)
データ期間:2014-04-01, 2024-12-31
データ種類:avg_rad
分析領域:nepal(上記で設定した範囲)
統計量:mean(平均値を算出)

②事業実施後(2023年)
データ期間:2023-01-01, 2023-12-31
データ種類以下、同上

インポートのコードはこちら
sample.js
var pre_data = ee.ImageCollection("NOAA/VIIRS/DNB/MONTHLY_V1/VCMSLCFG") 
             .filterDate('2014-01-01', '2014-12-31')
             .select('avg_rad')
             .filterBounds(nepal)
             .mean();

var post_data = ee.ImageCollection("NOAA/VIIRS/DNB/MONTHLY_V1/VCMSLCFG") 
             .filterDate('2023-01-01', '2023-12-31')
             .select('avg_rad')
             .filterBounds(nepal)
             .mean();

最後に、夜間光の画像をエクスポートします
ネパールの国境に沿った画像にして(切り抜き)、エクスポートします。

エクスポートのコードはこちら
sample.js
// pre data
var pre_data_clip = pre_data.clip(nepal);

Export.image.toDrive({
  image: pre_data_clip,
  description: 'ntl_nepal_2014',
  folder: 'Nepal', // set a folder of your google drive
  region: nepal, 
  scale: 500, //resolusion of the image
  crs: 'EPSG:4326'
});

// post data
var post_data_clip = post_data.clip(nepal);

Export.image.toDrive({
  image: post_data_clip,
  description: 'ntl_nepal_2023',
  folder: 'Nepal', // set a folder of your google drive
  region: nepal, 
  scale: 500, //resolusion of the image
  crs: 'EPSG:4326'
});

上記のコードを実行すると、右側の「Tasks」画面で各ファイル名が表示されます。
ファイル名の「Run」ボタンをクリックすると、画面が表示されます。

その画面の設定条件を確認し、下の「Run」ボタンをクリックするとエクスポートが開始されます。

ダウンロードしたデータはGoogleドライブの任意のフォルダに保存されます。

3.2. データ作成

分析領域を作成します
上記でダウンロードした行政区、作成した道路と町の地理データをQGISのメイン画面にドラッグ&ドロップして表示させます。
image.png

夜間光データを追加します。
ダウンロードした二枚の画像(事前と事後)をQGISのメイン画面にドラッグ&ドロップします。
image.png

夜間光量の変化を計算します。
「ラスタ」→「ラスタ計算機」を選択します。
image.png

以下の通り設定し、「OK」をクリックします。
式:"ntl_nepal_2023@1" - "ntl_nepal_2014@1"
バンド、演算子をそれぞれダブルクリックすると、式に反映されます。
出力レイヤ:"diff_ntl_nepal"という名前で任意のフォルダに保存
image.png
image.png

算出した夜間光量の変化を可視化します。
新しく追加された「diff_ntl_nepal」レイヤを右クリック→「プロパティ」→「シンポロジ」を選択します。

以下の通り設定し、「適用」→「OK」をクリックします。

  • レンダリングタイプ:「単バンド疑似カラー」
  • カラーランプ:Spectral→その上にある「カラーランプを反転」を選択
  • 分類モード:連続的
    image.png
    image.png
    image.png
    image.png

完了後の画像は以下の通りです。
image.png

なお、最小/最大範囲について、デフォルトは「範囲全体のすべての値を使用する」となっています。しかし、ごく少数の非常に小さい値や非常に大きい値があると、ラスタのレンダリングに悪影響を及ぼすことがあります。 外れ値があると、画像を可視化した際に、データの全体的な傾向やパターンが正しく表現されなくなります。

「ヒストグラム」でデータの分布を見たところ、ほとんどのピクセルが0-1の間にあり、最小値や最大値はほとんどないことが確認できます。
image.png

そのため、その影響を取り除くために、「最大/最小範囲」を以下の通り変更しました。

最小/最大範囲:平均 +/- 標準偏差 x2.0
→全体の約95%の範囲内の値のみを考慮したカラーテーブルを作成します。
image.png
image.png

3.3. 地図の作成

地図のレイアウト設定を行います。
「プロジェクト」→「新規印刷レイアウト」を選択し、印刷レイアウトのタイトル(好きな名前で構いません)を入力すると、地図の作成画面が現れます。
image.png

<地図レイアウト>
左のツールバーにある「新しい地図をレイアウトに追加」をクリックして、キャンバス上で適当にドラッグし、地図を追加します。
さらに、以下の通り設定し、緯度経度を追加します。

  • 右下ボックスの「アイテムプロパティ」→「フレーム」にチェック
  • 右下ボックスの「アイテムプロパティ」→「グリッド」→「+」(新規グリッドの追加)→作成したグリッド1を選択した状態で「グリッドの修正」を選択
    • グリッドタイプ:フレームと注記のみ
    • 座標参照系:「EPSG:4326」
    • 間隔: XとYどちらも5.0
    • フレームスタイル:外側に目盛り
      • 右側と上側のチェックを外す
    • 「座標を描画」にチェック
      • 左:水平
      • 右:無効
      • 上部:無効
      • 下部:水平
      • フォント:Arial, サイズ9
      • 座標精度 → 0

<凡例>
左のツールバーにある「「新しい凡例をレイアウトに追加」をクリックして、キャンバス上で適当にドラッグし、凡例を追加します。さらに、以下の通り設定します。

  • レイヤ上の凡例をクリック→右側の「凡例アイテム」→「リンク先地図の内側にあるアイテムだけ表示する」
  • 「自動更新」のチェックを外す→必要な凡例以外を削除(―)
  • diff_ntl_nepalのカラーパレットをダブルクリック→値を小数点第二位切捨てに修正
  • 「フレーム」にチェック

<その他>
左のツールバーにある「新しいスケールバーをレイアウトに追加」、「新しい方位記号をレイアウトに追加」をクリックして、それぞれキャンパスに適当にドラッグし、追加します。方位記号については、▼SVGパラメータ→塗りつぶし色:黒を選択します。

3.4. 地図のエクスポート

地図が完成したら、「レイアウト」→「画像としてエクスポート」を選択します。
image.png

まとめ

  • この記事では、衛星・地理データを活用して、事業による「経済活性化」を可視化してみました。
  • 事業実施前と比較すると、事業実施後は、シンズリ道路沿いの町(特にドリケルやシンズリマディ)において夜間光量が増加しており、道路が町の「経済活性化」に貢献していることが示唆されます。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?