Earth Engine là một công cụ phân tích mạnh mẽ, nhưng bạn có thể cần xuất kết quả phân tích để nhúng biểu đồ, hình ảnh, bản đồ, v.v. vào báo cáo hoặc ấn phẩm. Trong phần này, bạn sẽ tìm hiểu cách tạo biểu đồ và hình ảnh có thể xuất và xem trong phần mềm khác. Hãy nhớ lại rằng trong
phần trước, bạn đã sử dụng mã như sau để thêm một
băng tần NDVI vào mọi hình ảnh trong một tập hợp, trong đó biến l8 tham chiếu đến
tập hợp hệ số phản xạ TOA của Landsat 8:
Trình soạn thảo mã (JavaScript)
// Import the Landsat 8 TOA image collection. var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); // Map a function over the Landsat 8 TOA collection to add an NDVI band. var withNDVI = l8.map(function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return image.addBands(ndvi); });
Xuất hiện trên bảng xếp hạng
Giả sử bạn muốn có một biểu đồ về NDVI theo thời gian tại một vị trí nhất định. Để tạo biểu đồ như vậy, bước đầu tiên là chọn một vị trí quan tâm. Tạo một điểm bằng cách lấy công cụ vẽ điểm (
) và tạo một hình học điểm duy nhất trong khu vực bạn quan tâm. (Nếu bạn đã có tệp nhập, hãy di chuột qua Geometry Imports (Tệp nhập hình học) rồi nhấp vào + new layer (+ lớp mới) trước).
Xác định điểm trong một khu vực nông nghiệp, rừng rụng lá, đồng cỏ hằng năm hoặc một số lớp phủ đất khác có chu kỳ hằng năm). Đặt tên cho tệp nhập là roi. (Xem trang này để biết thông tin về cách tạo hình học theo phương thức lập trình).
Bây giờ, hãy sử dụng điểm roi để tạo biểu đồ NDVI theo thời gian trong pixel
bên dưới điểm đó. Cách tạo biểu đồ trong Earth Engine là sử dụng gói ui.Chart. (Tìm hiểu thêm về cách tạo biểu đồ trong Earth Engine).
Cụ thể, để tạo biểu đồ theo thời gian, bạn có thể sử dụng phương thức ui.Chart.image.series():
Trình soạn thảo mã (JavaScript)
// Create a chart. var chart = ui.Chart.image.series({ imageCollection: withNDVI.select('NDVI'), region: roi, reducer: ee.Reducer.first(), scale: 30 }).setOptions({title: 'NDVI over time'}); // Display the chart in the console. print(chart);
Đối với hình học roi, chúng tôi đã chọn một điểm trong khu vực nông nghiệp, dẫn đến một biểu đồ trông giống như Hình 10. Xin lưu ý rằng các tham số cho hàm khởi tạo biểu đồ bao gồm một hàm rút gọn và tỷ lệ như reduceRegion(). Vì điểm mà chúng ta cung cấp dưới dạng một vùng chỉ có thể giao nhau với một pixel, nên chỉ cần sử dụng trình giảm "đầu tiên". Nếu có một vùng lớn hơn, bạn nên sử dụng "trung bình" hoặc một trình giảm khác
chỉ định cách tổng hợp pixel. Ngoài ra, xin lưu ý rằng để trực quan hoá một biểu đồ, bạn chỉ cần in biểu đồ đó.
Nội dung bên lề: Tạo mặt nạ đám mây đơn giản cho Landsat
Bạn có thể nhận thấy rằng chuỗi thời gian của các giá trị NDVI tại điểm này có vẻ hơi nhiễu. Nguyên nhân có thể là do mây. Để cải thiện hiệu ứng này, Earth Engine có một thuật toán tạo mặt nạ mây cho các cảm biến Landsat có dải nhiệt: ee.Algorithms.Landsat.simpleCloudScore(). Hàm này lấy hình ảnh phản xạ TOA của Landsat làm dữ liệu đầu vào và thêm một dải có tên là cloud. Đây là chỉ số về độ mây trong pixel từ 0 đến 100, tương ứng từ ít mây nhất đến nhiều mây nhất. Bằng cách sửa đổi hàm mà bạn đã ánh xạ trên tập hợp, bạn có thể sử dụng một ngưỡng tuỳ ý (20) trên chỉ số mây để dọn dẹp biểu đồ một chút:
Trình soạn thảo mã (JavaScript)
var cloudlessNDVI = l8.map(function(image) { // Get a cloud score in [0, 100]. var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud'); // Create a mask of cloudy pixels from an arbitrary threshold. var mask = cloud.lte(20); // Compute NDVI. var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); // Return the masked image with an NDVI band. return image.addBands(ndvi).updateMask(mask); }); print(ui.Chart.image.series({ imageCollection: cloudlessNDVI.select('NDVI'), region: roi, reducer: ee.Reducer.first(), scale: 30 }).setOptions({title: 'Cloud-masked NDVI over time'}));
Kết quả sau khi che mây được minh hoạ trong Hình 11. Lưu ý rằng chuỗi thời gian trông mượt mà hơn một chút nhưng vẫn có thể chứa các pixel chịu ảnh hưởng của mây. Điều chỉnh ngưỡng trên chỉ số mây và quan sát chuỗi thời gian được biểu đồ hoá để tìm hiểu xem ngưỡng này có thể ảnh hưởng đến kết quả của bạn như thế nào.
Đang xuất hình ảnh
Bạn đã biết cách xuất biểu đồ dữ liệu do Earth Engine tính toán, nhưng còn toàn bộ hình ảnh thì sao? Ví dụ: giả sử bạn đã tạo một ảnh tổng hợp điểm ảnh xanh nhất như đã thảo luận trong phần trước:
Trình soạn thảo mã (JavaScript)
var greenest = cloudlessNDVI.qualityMosaic('NDVI');
Điểm khác biệt duy nhất giữa mã này và mã bạn đã làm trước đó là giờ đây, chúng ta đang sử dụng
tập hợp được che bằng đám mây. Bạn có thể xuất một nhóm nhỏ (được xác định theo khu vực) của nhóm này bằng cách sử dụng gói Export. (Tìm hiểu thêm về cách xuất dữ liệu đường quét và dữ liệu vectơ từ Earth Engine.) Ví dụ: để xuất một hình ảnh có thể dễ dàng nhúng vào các tài liệu khác, hãy tạo một hình ảnh trực quan hoá, như bạn đã làm trước đây, rồi Xuất hình ảnh đó vào thư mục Google Drive:
Trình soạn thảo mã (JavaScript)
// Create a 3-band, 8-bit, color-IR composite to export. var visualization = greenest.visualize({ bands: ['B5', 'B4', 'B3'], max: 0.4 }); // Create a task that you can launch from the Tasks tab. Export.image.toDrive({ image: visualization, description: 'Greenest_pixel_composite', scale: 30 });
Khi bạn chạy mã này, hãy lưu ý rằng một việc cần làm mới sẽ được tạo trong thẻ Tasks (Việc cần làm). Để chạy hộp thoại cấu hình xuất, hãy nhấp vào nút RUN (CHẠY) trong thẻ Tasks (Tác vụ). Sau khi bạn định cấu hình tác vụ, hãy nhấp vào nút Run (Chạy) trong hộp thoại để bắt đầu xuất. Nhưng trước khi làm việc đó, hãy lưu ý:
Lý do bạn nên thận trọng khi xuất mà không có đối số region là nếu bạn đặt giá trị tương đối nhỏ cho scale và Bản đồ được thu nhỏ thành một khu vực lớn, thì bạn sẽ xuất một hình ảnh có thể rất lớn sang thư mục Drive. Hãy xem tài liệu về Export.image.toDrive() trong thẻ Tài liệu để biết thêm thông tin chi tiết và danh sách các thông số cấu hình có thể có.
Đến đây là kết thúc phần giới thiệu về Earth Engine API! Giờ đây, bạn đã biết hầu hết các chức năng phổ biến nhất của Earth Engine và có thể tự tin tiến hành các hoạt động phân tích phức tạp hơn. Hãy nhớ đọc tài liệu và tìm kiếm trên diễn đàn để biết câu trả lời cho các câu hỏi khác. Chúc bạn lập trình vui vẻ!