最終更新:2025-12-30

1 はじめに

  • 阿部洋輔「夜間光を可視化する」を参考にして、VIIRS夜間光データから得たラスターデータを用いて、夜間光をRで可視化する。
  • VIIRS夜間光データ(Annual VNL V2)を用いる。Colorado School of Mines(コロラド鉱山大学)の Payne Institute for Public Policy が夜間光データを提供している。
  • Visible Infrared Imaging Radiometer Suite (VIIRS) Nighttime Lights (VNL) データセットは、Earth Observation Group (EOG) によって生成されている。
  • このデータは、2012年から2021年にかけての年間グローバル夜間光の時系列データである。一貫した処理方法で生成されており、経年比較が可能である。
  • 日光・月光・雲を除去した後、野火などの外れ値を除外している。
  • V2では12ヶ月の中央値を基準に外れ値を除去し、複数年のデータを使用して統一的な検出閾値を設定することで、年度間の一貫性を確保している。
  • コロラド鉱山大学は以下の2つのデータを提供している。
  1. DMSP夜間光データは、1kmの解像度で1992-2013年のデータを提供。
  2. VIIRSデータ夜間光データは、500mの解像度で2012年以降のデータを提供。

https://eogdata.mines.edu/products/vnl/#annual_v2

1.1 概要

項目 内容
ファイル形式 Tilegz (gzipped)
ファイル内容 average, average-masked, cf_cvg, cvg, max, median, median-masked, min
配信設定 vcmslcfg (利用可能な場合)

1.2 仕様

項目 仕様
ファイル形式 GeoTIFF
ユニット (average, average-masked, max, median, median-masked, min) nW/cm²/sr
座標参照システム (CRS) EPSG:4326 (Geographic Latitude/Longitude)
空間解像度 15 arc second (~500m at the Equator)
タイル処理 No
カバレッジ範囲 180W, 75N, 180E, 65S

1.3 ファイルの説明

ファイル名 説明
average 年間平均の夜間光強度
average-masked マスク処理済みの平均値(ノイズ除去)
cf_cvg クラウドフリー・カバレッジ
cvg カバレッジ情報
max 最大値
median 中央値
median-masked マスク処理済みの中央値
min 最小値

2 ダウンロード手順

  1. Earth Observation Group (EOG) – VIIRS Nighttime Lights data https://eogdata.mines.edu/products/vnl/
  2. Annual VNL V2 — Elvidge, et al. (2021)によるデータ。
  3. “Go to Download V2.1” をクリック。
  4. メールアドレス登録。
  5. 2021年へ移動。

  1. ノイズやエラーが除去された年間平均の夜間光強度データ(298M)をダウンロードする。
  • VNL_v21_npp_2021_global_vcmslcfg_c202205302300.average_masked.dat.tif.gz

  • ダウンロードして解凍されたファイル(VNL_v21_npp_2021_global_vcmslcfg_c202205302300.average_masked.dat.tif)は、11.61GBと巨大なデータである。
  • 以下では、このデータを日本に絞り、軽量化する。

3 Rでの読み込み

  • terraパッケージのrast関数を用いて、GeoTIFF形式のデータを読み込む。
library(terra)
## terra 1.8.86
NightLight2021 <- terra::rast("VNL_v21_npp_2021_global_vcmslcfg_c202205302300.average_masked.dat.tif")

4 可視化

terra::plot(NightLight2021, range = c(0.01, 100))

5 日本のデータに絞る

# 日本の範囲を指定
japan_extent <- ext(122, 153, 20, 46)
# 日本の範囲でクロップ
NightLightJapan <- terra::crop(NightLight2021, japan_extent)
# プロット
terra::plot(NightLightJapan, range = c(0.01, 100))

# 保存
terra::writeRaster(NightLightJapan, "Data_output/NightLightJapan2021.tif", overwrite=TRUE)
## Warning: PROJ: proj_create_from_name: Cannot find proj.db (GDAL error 1)

参考文献