FORMA là hệ thống cảnh báo phá rừng dựa trên MODIS có kích thước 500 x 500 mét, được cập nhật 2 lần/tháng cho các khu rừng nhiệt đới ẩm. Tập dữ liệu FORMA 500 trong Earth Engine là một hình ảnh có cảnh báo bắt đầu từ tháng 1 năm 2006 và được cập nhật hằng tháng. Mỗi cảnh báo đều có một thời gian được liên kết với cảnh báo đó trong một dải tần duy nhất có tên là alert_date
theo đơn vị giây kể từ thời điểm bắt đầu tính thời gian. Lọc dữ liệu FORMA theo ngày và tính toán cảnh báo trong các khu vực mà bạn quan tâm là hai việc quan trọng nhất mà bạn có thể làm với tập dữ liệu FORMA.
Lọc dữ liệu FORMA theo ngày
Để chỉ hiển thị những cảnh báo xảy ra vào năm 2012, hãy tìm những điểm ảnh có thời gian từ ngày đầu tiên của năm 2012 đến ngày đầu tiên của năm 2013, được biểu thị bằng số giây kể từ nửa đêm ngày 1 tháng 1 năm 1970:
Trình soạn thảo mã (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' );
Trong ví dụ này, forma2012
là một hình ảnh nhị phân chỉ chứa những pixel có thời gian xảy ra vào năm 2012 (tức là tất cả các pixel khác đều được che).
Đếm cảnh báo FORMA ở một khu vực quan tâm
Như chúng ta đã làm trong phần trước với dữ liệu của Hansen và cộng sự, chúng ta có thể bắt đầu bằng cách đếm số lượng cảnh báo FORMA (pixel) trong một khu vực quan tâm. Ví dụ: để đếm số lượng cảnh báo ở các khu vực được bảo vệ của Cộng hoà Congo vào năm 2012, hãy dựa vào ví dụ trước như sau:
Trình soạn thảo mã (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'));
Đếm cảnh báo FORMA ở một số khu vực quan tâm
Cho đến nay, chúng ta đã tính toán số liệu thống kê trong một khu vực tại một thời điểm. Để tính toán số liệu thống kê ở nhiều khu vực cùng một lúc, bạn có thể dùng reduceRegions()
. Tiếp tục dựa trên ví dụ trước:
Trình soạn thảo mã (JavaScript)
var regionsStats = forma2012.reduceRegions({ collection: protectedAreas, reducer: ee.Reducer.sum(), scale: forma2012.projection().nominalScale() }); print(regionsStats);
Kiểm tra đối tượng được in vào bảng điều khiển và quan sát thấy đầu ra của reduceRegions()
là một FeatureCollection
khác. Xin lưu ý rằng mỗi khu vực trong tập hợp các khu vực được bảo vệ của Cộng hoà Congo hiện có thêm một thuộc tính, sum
, được đặt tên theo bộ giảm. Giá trị của thuộc tính này là đầu ra của hàm giảm hoặc số lượng cảnh báo năm 2012 trong các khu vực được bảo vệ.
So sánh tập dữ liệu FORMA và Hansen et al.
Để so sánh tập dữ liệu FORMA và Hansen et al., bạn có thể sử dụng các toán tử logic. (Tìm hiểu thêm về các phép toán logic). Cụ thể, chúng tôi muốn tạo một hình ảnh trong đó các pixel được đánh dấu là phá rừng bởi cả FORMA và dữ liệu của Hansen và cộng sự là 1, còn lại là 0. Mã này tạo ra một hình ảnh như vậy cho năm 2012 và hiển thị hình ảnh đó cùng với các lớp dự đoán khác về nạn phá rừng:
Trình soạn thảo mã (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)' );
Đến đây là kết thúc phần tổng quan về các tập dữ liệu thay đổi rừng trong Earth Engine. Chúng tôi rất mong được thấy những gì bạn có thể làm với các công cụ này!