FORMA は、湿潤な熱帯雨林を対象とした MODIS ベースの 500 x 500 メートルの月 2 回の森林破壊アラート システムです。Earth Engine の FORMA 500 データセットは、2006 年 1 月から始まるアラートを含む画像で、毎月更新されます。各アラートには、エポック秒単位で alert_date
という名前の単一の帯域で関連付けられた時間があります。FORMA データセットで最も重要な操作の 1 つは、日付で FORMA をフィルタし、関心のある地域内のアラートを計算することです。
日付で FORMA をフィルタする
2012 年に発生したアラートのみを表示するには、1970 年 1 月 1 日午前 0 時からの秒数で表した 2012 年の初日から 2013 年の初日までの時間を持つピクセルを検索します。
コードエディタ(JavaScript)
// Convert dates from milliseconds to seconds. var start = ee.Date('2012-01-01').millis().divide(1000); var end = ee.Date('2013-01-01').millis().divide(1000); // Load the FORMA 500 dataset. var forma = ee.Image('FORMA/FORMA_500m'); // Create a binary layer from the dates of interest. var forma2012 = forma.gte(start).and(forma.lte(end)); Map.setCenter(15.87, -0.391, 7); Map.addLayer( forma2012.mask(forma2012), {palette: ['FF0000']}, 'FORMA alerts in 2012' );
この例では、forma2012
は 2012 年に発生した時間を含むピクセルのみを含むバイナリ画像です(つまり、他のすべてのピクセルはマスクされています)。
関心のある地域での FORMA アラートのカウント
前のセクションで Hansen らのデータに対して行ったように、まず関心のある地域内の FORMA アラート(ピクセル)の数を数えます。たとえば、2012 年にコンゴ共和国の保護区で発生したアラートの数をカウントするには、次のように前の例を基に作成します。
コードエディタ(JavaScript)
// Load country features from Large Scale International Boundary (LSIB) dataset. var countries = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Subset the Congo Republic feature from countries. var congo = ee.Feature( countries .filter(ee.Filter.eq('country_na', 'Rep of the Congo')) .first() ); // Subset protected areas to the bounds of the congo feature // and other criteria. Clip to the intersection with congo. var protectedAreas = ee.FeatureCollection('WCMC/WDPA/current/polygons') .filter(ee.Filter.and( ee.Filter.bounds(congo.geometry()), ee.Filter.neq('IUCN_CAT', 'VI'), ee.Filter.neq('STATUS', 'proposed'), ee.Filter.lt('STATUS_YR', 2010) )) .map(function(feat){ return congo.intersection(feat); }); // Display protected areas on the map. Map.addLayer( protectedAreas, {color: '000000'}, 'Congo Republic protected areas' ); // Calculate the number of FORMA pixels in protected // areas of the Congo Republic, 2012. var stats = forma2012.reduceRegion({ reducer: ee.Reducer.sum(), geometry: protectedAreas.geometry(), scale: 500 }); print('Number of FORMA pixels, 2012: ', stats.get('constant'));
複数の関心領域での FORMA アラートのカウント
これまでは、一度に 1 つのリージョンで統計情報を計算してきました。複数のリージョンで統計情報を一度に計算するには、reduceRegions()
を使用します。前の例を基に、次のようにします。
コードエディタ(JavaScript)
var regionsStats = forma2012.reduceRegions({ collection: protectedAreas, reducer: ee.Reducer.sum(), scale: forma2012.projection().nominalScale() }); print(regionsStats);
コンソールに出力されたオブジェクトを調べ、reduceRegions()
の出力が別の FeatureCollection
であることを確認します。コンゴ共和国の保護地域のコレクション内のすべてのリージョンに、リデューサーにちなんで名付けられた sum
という追加のプロパティが追加されています。このプロパティの値は、リデューサーの出力、または保護地域の 2012 年のアラートの数です。
FORMA データセットと Hansen らのデータセットの比較
FORMA データセットと Hansen et al. データセットを比較するには、論理演算子を使用します。(論理演算の詳細)。具体的には、FORMA と Hansen らのデータで森林破壊とマークされたピクセルが 1 で、残りが 0 の画像を作成します。このコードは、2012 年のそのような画像を作成し、他の予測された森林破壊レイヤとともに表示します。
コードエディタ(JavaScript)
// Convert dates from milliseconds to seconds. var start = ee.Date('2012-01-01').millis().divide(1000); var end = ee.Date('2013-01-01').millis().divide(1000); var region = ee.Geometry.Rectangle([-59.81163, -9.43348, -59.27561, -9.22818]); // Load the FORMA 500 dataset. var forma = ee.Image('FORMA/FORMA_500m'); // Create a binary layer from the dates of interest. var forma2012 = forma.gte(start).and(forma.lte(end)); // Load Hansen et al. data and get change in 2012. var gfc = ee.Image('UMD/hansen/global_forest_change_2015'); var gfc12 = gfc.select(['lossyear']).eq(12); // Create an image which is one where the datasets // both show deforestation and zero elsewhere. var gfc_forma = gfc12.eq(1).and(forma2012.eq(1)); // Display data on the map. Map.setCenter(-59.58813, -9.36439, 11); Map.addLayer(forma.updateMask(forma), {palette: '00FF00'}, 'Forma (green)'); Map.addLayer(gfc12.updateMask(gfc12), {palette: 'FF0000'}, 'Hansen (red)'); Map.addLayer( gfc_forma.updateMask(gfc_forma), {palette: 'FFFF00'}, 'Hansen & FORMA (yellow)' );
これで、Earth Engine の森林変化データセットの概要は終わりです。ぜひご活用ください。