Tập hợp hình ảnh là một tập hợp các hình ảnh trong Earth Engine. Ví dụ: tập hợp tất cả hình ảnh Landsat 8 là một ee.ImageCollection. Giống như hình ảnh SRTM mà bạn đã làm việc, các tập hợp hình ảnh cũng có mã nhận dạng. Tương tự như với hình ảnh đơn lẻ, bạn có thể khám phá mã nhận dạng của một tập hợp hình ảnh bằng cách tìm kiếm trong danh mục dữ liệu của Earth Engine từ Trình soạn thảo mã và xem trang thông tin chi tiết của tập dữ liệu. Ví dụ: tìm kiếm "landsat 8 toa" rồi nhấp vào kết quả đầu tiên, kết quả này sẽ tương ứng với tập dữ liệu
USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance.
Nhập tập dữ liệu đó bằng nút Import (Nhập) rồi đổi tên thành l8 hoặc sao chép mã nhận dạng vào hàm khởi tạo tập hợp hình ảnh:
Trình soạn thảo mã (JavaScript)
var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA');
Lọc bộ sưu tập hình ảnh
Xin lưu ý rằng bộ sưu tập này đại diện cho mọi cảnh Landsat 8 được thu thập trên toàn Trái Đất. Thông thường, bạn nên trích xuất một hình ảnh hoặc một nhóm nhỏ hình ảnh để thử nghiệm các thuật toán. Cách để giới hạn tập hợp theo thời gian hoặc không gian là lọc tập hợp đó. Ví dụ: để lọc tập hợp hình ảnh bao gồm một vị trí cụ thể, trước tiên, hãy xác định khu vực bạn quan tâm bằng một điểm (hoặc đường hoặc đa giác) bằng cách sử dụng các công cụ vẽ hình học. Di chuyển đến khu vực bạn quan tâm, di chuột qua Geometry Imports (Nhập hình học) (nếu bạn đã xác định một hoặc nhiều hình học) rồi nhấp vào +new layer (+lớp mới) (nếu bạn chưa nhập hình học nào, hãy chuyển sang bước tiếp theo). Lấy công cụ vẽ điểm (
) và tạo một điểm trong khu vực bạn quan tâm. Đặt tên cho tệp nhập là point. Bây giờ, hãy lọc tập hợp l8 để chỉ lấy những hình ảnh giao nhau với điểm, sau đó thêm bộ lọc thứ hai để giới hạn tập hợp chỉ lấy những hình ảnh được thu thập vào năm 2015:
Trình soạn thảo mã (JavaScript)
var spatialFiltered = l8.filterBounds(point); print('spatialFiltered', spatialFiltered); var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31'); print('temporalFiltered', temporalFiltered);
Ở đây, filterBounds() và filterDate() là các phương thức lối tắt cho phương thức filter() chung hơn trên tập hợp hình ảnh, lấy ee.Filter() làm đối số. Hãy khám phá thẻ Docs (Tài liệu) của Trình soạn thảo mã để tìm hiểu thêm về các phương thức này. Đối số cho filterBounds() là điểm bạn đã số hoá và đối số cho filterDate() là hai ngày, được biểu thị dưới dạng chuỗi.
Xin lưu ý rằng bạn có thể print() các bộ sưu tập đã lọc. Bạn không thể in nhiều hơn 5.000 mục cùng một lúc, vì vậy, bạn không thể in toàn bộ tập hợp l8. Sau khi thực thi phương thức print(), bạn có thể kiểm tra các tập hợp đã in trong bảng điều khiển. Lưu ý rằng khi mở rộng ImageCollection bằng cách sử dụng nút mở rộng (), sau đó mở rộng danh sách
features, bạn sẽ thấy danh sách hình ảnh, mỗi hình ảnh cũng có thể được mở rộng và kiểm tra. Đây là một cách để tìm mã nhận dạng của một hình ảnh riêng lẻ. Một cách khác, có lập trình hơn để lấy từng hình ảnh cho mục đích phân tích là sắp xếp tập hợp để lấy hình ảnh mới nhất, cũ nhất hoặc tối ưu nhất liên quan đến một số thuộc tính siêu dữ liệu. Ví dụ: bằng cách kiểm tra các đối tượng hình ảnh trong tập hợp hình ảnh được in, bạn có thể đã quan sát thấy một thuộc tính siêu dữ liệu có tên là CLOUD_COVER. Bạn có thể sử dụng thuộc tính đó để lấy hình ảnh ít mây nhất vào năm 2015 trong khu vực bạn quan tâm:
Trình soạn thảo mã (JavaScript)
// This will sort from least to most cloudy. var sorted = temporalFiltered.sort('CLOUD_COVER'); // Get the first (least cloudy) image. var scene = sorted.first();
Giờ bạn đã sẵn sàng hiển thị hình ảnh!
Nội dung bên lề: Hiển thị hình ảnh RGB
Khi một hình ảnh đa dải được thêm vào bản đồ, Earth Engine sẽ chọn ba dải đầu tiên của hình ảnh và hiển thị các dải đó dưới dạng màu đỏ, xanh lục và xanh dương theo mặc định, kéo dài các dải đó theo loại dữ liệu, như mô tả trước đó. Thông thường, cách này sẽ không hiệu quả. Ví dụ: nếu bạn thêm hình ảnh Landsat (scene trong ví dụ trước) vào bản đồ, kết quả sẽ không đạt yêu cầu:
Trình soạn thảo mã (JavaScript)
Map.centerObject(scene, 9); Map.addLayer(scene, {}, 'default RGB');
Lưu ý rằng trước tiên, bản đồ được căn giữa trên hình ảnh ở tỷ lệ thu phóng 9. Sau đó, hình ảnh sẽ hiển thị với một đối tượng trống ({}) cho tham số visParams (xem tài liệu về Map.addLayer() để biết thông tin chi tiết). Do đó, hình ảnh sẽ được hiển thị bằng hình ảnh trực quan mặc định: ba dải đầu tiên tương ứng với R, G, B và được kéo dài thành [0, 1] vì các dải này là kiểu dữ liệu float. Điều này có nghĩa là dải khí dung ven biển ("B1") được kết xuất bằng màu đỏ, dải màu xanh dương ("B2") được kết xuất bằng màu xanh lục và dải màu xanh lục ("B3") được kết xuất bằng màu xanh dương. Để kết xuất hình ảnh dưới dạng
tổng hợp màu thực, bạn cần yêu cầu Earth Engine sử dụng các dải Landsat 8 "B4", "B3"
và "B2" tương ứng cho R, G và B. Chỉ định băng tần cần sử dụng bằng thuộc tính bands của đối tượng visParams. Tìm hiểu thêm về
các dải Landsat tại
tài liệu tham khảo
này.
Bạn cũng cần cung cấp các giá trị min và max phù hợp để hiển thị độ phản xạ từ các mục tiêu bề mặt Trái Đất thông thường. Mặc dù có thể sử dụng danh sách để chỉ định các giá trị khác nhau cho mỗi dải, nhưng ở đây, bạn chỉ cần chỉ định 0.3 là max và sử dụng giá trị mặc định là 0 cho tham số min. Kết hợp các tham số hình ảnh vào một đối tượng và hiển thị:
Trình soạn thảo mã (JavaScript)
var visParams = {bands: ['B4', 'B3', 'B2'], max: 0.3}; Map.addLayer(scene, visParams, 'true-color composite');
Kết quả sẽ có dạng như Hình 5. Xin lưu ý rằng mã này chỉ định đối tượng của các tham số trực quan hoá cho một biến để có thể sử dụng trong tương lai. Như bạn sẽ sớm khám phá, đối tượng đó sẽ hữu ích khi bạn trực quan hoá các tập hợp hình ảnh!
Hãy thử trực quan hoá các dải tần khác nhau. Một tổ hợp yêu thích khác là "B5", "B4" và "B3", được gọi là tổ hợp màu giả. Một số ảnh tổng hợp màu giả thú vị khác được mô tả tại đây.
Vì Earth Engine được thiết kế để thực hiện các phân tích quy mô lớn, nên bạn không bị giới hạn trong việc chỉ làm việc với một cảnh. Bây giờ, hãy hiển thị toàn bộ tập hợp dưới dạng ảnh tổng hợp RGB!
Đang hiển thị bộ sưu tập hình ảnh
Việc thêm một tập hợp hình ảnh vào bản đồ cũng tương tự như việc thêm một hình ảnh vào bản đồ. Ví dụ: sử dụng hình ảnh năm 2016 trong tập hợp l8 và đối tượng visParams đã xác định trước đó,
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');
Lưu ý rằng giờ đây, bạn có thể thu nhỏ và xem ảnh ghép liên tục nơi hình ảnh Landsat được thu thập (tức là trên đất liền). Ngoài ra, xin lưu ý rằng khi bạn sử dụng thẻ Inspector (Trình kiểm tra) và nhấp vào hình ảnh, bạn sẽ thấy danh sách các giá trị pixel (hoặc biểu đồ) trong phần Pixels (Pixel) và danh sách các đối tượng hình ảnh trong phần Objects (Đối tượng) của trình kiểm tra.
Nếu thu nhỏ đủ, bạn có thể nhận thấy một số đám mây trong ảnh ghép. Khi
bạn thêm một ImageCollection vào bản đồ, hình ảnh này sẽ hiển thị dưới dạng một thành phần tổng hợp
giá trị gần đây, nghĩa là chỉ những pixel gần đây nhất mới hiển thị (như gọi
mosaic() trên tập hợp). Đó là lý do bạn có thể thấy sự không liên tục giữa
các đường dẫn được thu thập tại
các thời điểm khác nhau. Đó cũng là lý do khiến nhiều khu vực có thể có mây. Trong trang tiếp theo, hãy tìm hiểu cách thay đổi cách kết hợp hình ảnh để loại bỏ những đám mây phiền toái đó!