Khi bộ sưu tập hệ số phản xạ TOA của Landsat 8 được tải vào một biến có tên là l8, bạn sẽ thấy đoạn mã sau đây tạo ra một ảnh tổng hợp giá trị gần đây:
Trình soạn thảo mã (JavaScript)
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA'); var landsat2016 = l8.filterDate('2016-01-01', '2016-12-31'); Map.addLayer(landsat2016, visParams, 'l8 collection');
Một trong những vấn đề của ảnh tổng hợp này là có quá nhiều mây. Thay vì chỉ lấy pixel cuối cùng trong tập hợp (khi bạn thêm một tập hợp vào bản đồ, Earth Engine sẽ ngầm gọi mosaic() trên tập hợp đó), bạn có thể giảm ImageCollection (Tìm hiểu thêm về cách giảm tập hợp hình ảnh).
Kết hợp với Reducer
Bạn đã được giới thiệu về trình giảm thiểu để lấy số liệu thống kê trong một vùng hình ảnh. Đó là giảm không gian. Việc rút gọn một tập hợp hình ảnh thành một hình ảnh là một quá trình rút gọn theo thời gian khi tập hợp đó đại diện cho hình ảnh theo thời gian. Loại Reducer bạn sử dụng sẽ xác định cách Earth Engine xử lý các pixel chồng chéo. Landsat 8 ghé thăm cùng một địa điểm trên Trái Đất sau mỗi 16 ngày. Điều này có nghĩa là trong khoảng thời gian 6 tháng, sẽ có khoảng 12 hình ảnh (và nhiều hơn nữa nếu các cảnh chồng chéo lên nhau). Mỗi pixel trên bản đồ được lấy từ một tập hợp pixel – một pixel từ mỗi hình ảnh trong tập hợp đang hiển thị.
Chỉ cần thêm tập hợp vào bản đồ là có thể chọn pixel gần đây nhất – pixel từ hình ảnh mới nhất trong ngăn xếp. Bạn có thể thay đổi hành vi này bằng cách sử dụng bộ giảm tốc Earth Engine. Ví dụ: thay vì lấy pixel gần đây nhất từ ngăn xếp, bạn có thể hướng dẫn Earth Engine chọn giá trị trung vị trong ngăn xếp. Điều này có lợi ích là loại bỏ mây (có giá trị cao) và bóng (có giá trị thấp). Khi một tập hợp hình ảnh được giảm bằng trình giảm trung vị, giá trị tổng hợp là giá trị trung vị trong mỗi dải, theo thời gian. Ví dụ: sử dụng cảnh Landsat vào năm 2016:
Trình soạn thảo mã (JavaScript)
// Get the median over time, in each band, in each pixel. var median = l8.filterDate('2016-01-01', '2016-12-31').median(); // Make a handy variable of visualization parameters. var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; // Display the median composite. Map.addLayer(median, visParams, 'median');
Điểm mới trong mã này là phương thức median() được áp dụng cho một tập hợp hình ảnh.
Giống như các phương thức lọc, đây là lối tắt cho phương thức reduce() chung hơn trên các tập hợp hình ảnh, lấy ee.Reducer() làm đối số. Hãy xem
gói ee.Reducer trong thẻ Docs (Tài liệu) của Trình soạn thảo mã
để xem danh sách tất cả các trình rút gọn của Earth Engine. Khi xem xét một bộ giảm cho một tập hợp hình ảnh, hãy lưu ý rằng kết quả là một hình ảnh, vì vậy, các bộ giảm có kết quả không phải dạng số, ví dụ: bộ giảm histogram hoặc toList, sẽ không hoạt động với một tập hợp hình ảnh.
Khi thu nhỏ hình ảnh tổng hợp trung vị, bạn sẽ thấy kết quả tương tự như Hình 6. Kết quả này sẽ trông đẹp hơn đáng kể so với thành phần giá trị gần đây mà bạn đã tạo trước đó. Tại thời điểm này, bạn nên lùi lại và xem xét những việc đã làm để tạo ra thành phần trung vị đó. Earth Engine đã tải toàn bộ bộ sưu tập Landsat 8 trên lục địa Hoa Kỳ và đã tính toán giá trị trung vị cho mọi pixel. Đó là một lượng dữ liệu rất lớn! Tất nhiên, bạn có thể tính toán giá trị trung vị hằng năm bằng cách lọc tập hợp trước, như bạn đã làm trước đó. Vấn đề là nếu bạn phải tải tất cả hình ảnh đó xuống và tạo thành một hình ảnh tổng hợp, thì đó sẽ là một dự án lớn. Với Earth Engine, bạn sẽ nhận được kết quả chỉ sau vài giây!
Tìm hiểu thêm về việc kết hợp và ghép mảnh tại đây.
Khoanh vùng để chọn
Mặc dù ảnh tổng hợp trung vị là một điểm cải tiến so với ảnh tổng hợp giá trị gần đây, nhưng bạn có thể muốn che một số phần của hình ảnh. Việc che các điểm ảnh trong một hình ảnh sẽ làm cho các điểm ảnh đó trở nên trong suốt và loại trừ chúng khỏi quá trình phân tích. Mỗi pixel trong mỗi dải của hình ảnh đều có một mặt nạ. Những pixel có giá trị mặt nạ bằng 0 hoặc thấp hơn sẽ trong suốt. Những pixel có mặt nạ mang giá trị bất kỳ lớn hơn 0 sẽ được kết xuất. Mặt nạ của hình ảnh được đặt bằng một lệnh gọi như
image1.mask(image2). Lệnh gọi này lấy các giá trị của image2 và đặt chúng làm mặt nạ của image1. Mọi pixel trong image2 có giá trị 0 sẽ được làm trong suốt trong image1.
Ví dụ: giả sử bạn muốn che tất cả các pixel nước trong ảnh tổng hợp trung vị. Bạn có thể tạo mặt nạ nước bằng cách sử dụng tập dữ liệu do Hansen và cộng sự (2013) mô tả, có trong danh mục dữ liệu của Earth Engine. (Tìm hiểu thêm về tập dữ liệu của Hansen và cộng sự trong hướng dẫn này.) Trong tập dữ liệu này, nước có giá trị là 2, đất có giá trị là 1 và "không có dữ liệu" có giá trị là 0. Sử dụng một chút logic để tạo hình ảnh mặt nạ có số 0 ở những nơi không có đất:
Trình soạn thảo mã (JavaScript)
// Load or import the Hansen et al. forest change dataset. var hansenImage = ee.Image('UMD/hansen/global_forest_change_2025_v1_13'); // Select the land/water mask. var datamask = hansenImage.select('datamask'); // Create a binary mask. var mask = datamask.eq(1); // Update the composite mask with the water mask. var maskedComposite = median.updateMask(mask); Map.addLayer(maskedComposite, visParams, 'masked');
Có một vài điểm mới trong đoạn mã này đáng được đề cập chi tiết. Trước tiên,
hàm select() rất hữu ích trong việc trích xuất các dải tần quan tâm từ
một hình ảnh. Tại đây, chúng ta chỉ chọn dải tần mà chúng ta quan tâm: datamask. Điều mới tiếp theo là toán tử logic eq(), viết tắt của "bằng". Chúng ta sử dụng eq(1) để tạo một hình ảnh nhị phân, trong đó tất cả các pixel không có giá trị là 1 trong dải datamask (những pixel là nước hoặc không có dữ liệu) sẽ nhận giá trị là 0 trong hình ảnh thu được.
Kết quả của việc che phủ này là tất cả các pixel trong ảnh tổng hợp trung vị nằm trên đất liền (theo tập dữ liệu của Hansen và cộng sự) đều hiển thị, nhưng những pixel nằm trên mặt nước (hoặc không có dữ liệu) sẽ trong suốt và sẽ bị loại trừ khỏi mọi hoạt động phân tích mà bạn thực hiện trên hình ảnh maskedComposite.
Ghép ảnh
Bằng cách kết hợp các khái niệm về tập hợp hình ảnh, toán tử logic, mặt nạ và kết hợp, bạn có thể đạt được kết quả thú vị về bản đồ. Ví dụ: giả sử bạn muốn có một hình ảnh trong đó các pixel đất được hiển thị bằng màu thực và tất cả các pixel khác được hiển thị bằng màu xanh dương, bạn có thể làm như sau:
Trình soạn thảo mã (JavaScript)
// Make a water image out of the mask. var water = mask.not(); // Mask water with itself to mask all the zeros (non-water). water = water.mask(water); // Make an image collection of visualization images. var mosaic = ee.ImageCollection([ median.visualize(visParams), water.visualize({palette: '000044'}), ]).mosaic(); // Display the mosaic. Map.addLayer(mosaic, {}, 'custom mosaic');
Có rất nhiều thứ đang diễn ra trong đoạn mã đó, vì vậy, hãy phân tích nó. Trước tiên, chúng ta sử dụng toán tử logic not() để đảo ngược mặt nạ đã tạo trước đó. Cụ thể, not()
biến tất cả số 0 thành số 1 và tất cả số khác 0 thành số 0. Việc gọi biến đó là water không hoàn toàn chính xác vì biến đó cũng bao gồm một số pixel không có dữ liệu, nhưng vẫn có thể chấp nhận được trong bối cảnh bản đồ hiện tại. Việc tiếp theo là che "nước" bằng chính nó. Kết quả là một hình ảnh trong đó tất cả các pixel nước đều là 1 và mọi thứ khác đều được che. Bước cuối cùng là kết hợp các hình ảnh với mosaic(). Vì mosaic() hoạt động trên một tập hợp hình ảnh, nên chúng ta truyền một danh sách hình ảnh mà chúng ta muốn kết hợp vào hàm khởi tạo tập hợp hình ảnh, sau đó gọi mosaic() làm bước cuối cùng. Thứ tự của các hình ảnh trong danh sách đó là rất quan trọng. Cụ thể, hình ảnh đầu ra sẽ chứa pixel không bị che cuối cùng trong ngăn xếp hình ảnh trong tập hợp đầu vào. Trong trường hợp này, cách đó hiệu quả vì lớp nước là hình ảnh cuối cùng (trên cùng) trong tập hợp và chỉ chứa các pixel không bị che nơi có nước.
Xin lưu ý rằng hình ảnh trong bộ sưu tập là hình ảnh trực quan hoá. Khi bạn gọi
visualize()
trên một hình ảnh, hình ảnh đó sẽ được chuyển thành hình ảnh 3 dải, 8 bit theo các tham số trực quan hoá mà bạn truyền vào. Các tham số trực quan hoá mặc định hoạt động tốt cho hình ảnh 3 dải, 8 bit, vì vậy, bạn không cần tham số trực quan hoá khi thêm hình ảnh vào bản đồ. Kết quả sẽ có dạng như Hình 7.
Đến đây, bạn đã biết các cách trực quan hoá tập hợp hình ảnh dưới dạng ảnh tổng hợp giá trị gần đây, các phương thức tổng hợp tập hợp hình ảnh bằng trình rút gọn và các phương thức tạo ảnh tổng hợp tuỳ chỉnh bằng cách tạo mặt nạ và ghép mảnh cho một tập hợp hình ảnh. Trong trang tiếp theo, hãy tìm hiểu cách thêm chỉ số thực vật vào mọi hình ảnh trong một tập hợp và sử dụng chỉ số đó để tạo ảnh tổng hợp "điểm ảnh xanh nhất".