1. はじめに
前回の記事でQGISで夜間光の変化を算出したのですが、結局Google Earth Engine一つに絞った方が効率的と考えています。。
今日はGoogle Earth Engineで夜間光データのインポート、変化の算出、可視化、ダウンロードまでやってみたので紹介します。
とはいっても、お客さんに出す最終的なアウトプットはQGISで加工することが多いのですが、できればGoogle Earth Engine一つで完結させたいなと思っています。。
2. コード
// 最新更新日: 2024/08/28
//1.ネパールの境界データをインポートして、地図に表示させる
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,
},
'青:ネパール');
// {}:地図に表示される方法(色など)。デフォルトは黒
// 2. 夜間光データのインポート
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();
// 3. 夜間光量の差を計算する
var diff = post_data.subtract(pre_data);
// 4. 解析結果の可視化
// 変化をマップに表示させる
Map.addLayer(diff.clip(nepal), {
min: -2,
max: 2,
palette: ['blue', 'yellow']
},
'夜間光量の変化');
// 5. 事業対象地域のインポート
var bphighway = ee.FeatureCollection('users/ishimotojuri/SindhuliRoad');
var town = ee.FeatureCollection('users/ishimotojuri/town');
// マップに表示させる
Map.addLayer(bphighway, {'color': 'black'}, '黒:シンズリ道路');
Map.addLayer(town, {'color': 'red'}, '赤:町');
Map.centerObject(bphighway,8);
// 6. 分析結果のエクスポート
Export.image.toDrive({
image: diff,
description: 'diff_ntl_nepal',
folder: 'Nepal',
region: nepal,
scale: 500, //衛星データの解像度
crs: 'EPSG:4326'
});
3. 参照リンク
上記コードはこちらからGoogle Earth Engineで直接みれます。
ただし、上記のコードを実行するためには、以下のデータをご自身のGoogle Earth EngineのAssetにアップロードしていただく必要があります。
・SindhuliRoad.shp
・Town.shp
こちらのフォルダからダウンロードできます。
データをAssetにアップロードしたら、以下のコードの()内を変更してください。
var bphighway = ee.FeatureCollection('users/ishimotojuri/SindhuliRoad');
var town = ee.FeatureCollection('users/ishimotojuri/town');