Import tập ảnh
Đầu tiên, chúng ta sẽ tìm và import tập ảnh Sentinel-2 vào.
Chúng ta đổi tên tập ảnh thành ‘S2_collection’.
var S2_Collection = ee.ImageCollection("COPERNICUS/S2_HARMONIZED"),
Google Earth Engine cho phép chúng ta lọc tập ảnh theo 3 cách: lọc theo vị trí, lọc theo metadata và lọc theo ngày.
Lọc theo vị trí
Đầu tiên chúng ta sẽ lọc tập ảnh theo vị trí. Bạn có thể sử dụng các công cụ để vẽ hình để lọc như post trước mình đã chỉ.
Trong bài này mình sẽ chọn đơn giản một điểm để lọc.
//Filter by location
var S2_filtered1 = S2_Collection.filterBounds(geometry);
Chúng ta sẽ sử dụng hàm size() để kiểm tra xem có bao nhiêu ảnh phù hợp với vị trí này → Kết quả ra 447 ảnh.
print ('filter by location', S2_filtered1.size());
Lọc theo metadata
Tiếp theo chúng ta sẽ lọc theo metadata của ảnh.
Chúng ta có thể lọc theo metadata của ảnh như giá trị PATH/ROW, quỹ đạo, phần trăm che phủ bởi mây,… bằng các bộ lọc như ee.Filter.eq()
,ee.Filter.lt()
,…
Ở đây mình sẽ thử lọc ra những ảnh có phần trăm pixel bị mây (CLOUDY_PIXEL_PERCENTAGE) dưới 30.
//Filter by metadata
var S2_filtered2 = S2_filtered1.filter([ee.Filter.lt](http://ee.filter.lt/)('CLOUDY_PIXEL_PERCENTAGE', 30));
Mình tiếp tục chạy lệnh print để kiểm tra kết quả. Ở đây mình còn 163 ảnh thỏa điều kiện.
print('filter by metadata', S2_filtered2);
Lọc theo ngày
Tiếp theo, chúng ta có thể lọc các ảnh trong một phạm vi ngày cụ thể bằng cách sử dụng các bộ lọc như ee.Filter.date ()
.
Bây giờ chúng ta sẽ lọc các ảnh từ ngày 1/1/2019 đến ngày 1/1/2020:
//Filter by date
var S2_filtered3 = S2_filtered2.filter(ee.Filter.date('2019-01-01', '2020-01-01'));
Để kiểm tra kết quả sau khi áp dụng hết các bộ lọc, mình tiếp tục chạy lệnh print. Kết quả cuối cùng chúng ta sẽ chỉ còn 31 ảnh.
print('Filter by date', S2_filtered3);
Rút ngắn code và hiển thị kết quả
Thay vì áp dụng lần lượt các bộ lọc, chúng ta cũng có thể ‘xâu chuỗi’ chúng lại như sau:
// Instead of applying filters one after the other, we can 'chain' them
var S2_filtered = S2_Collection.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30))
.filter(ee.Filter.date('2019-01-01', '2020-01-01'))
.filter(ee.Filter.bounds(geometry));
Mình comment out tất cả các dòng code trước đó bằng cách nhấn Ctrl + /, sau đó print kết quả ra để kiểm tra xem có giống như áp dụng từng bộ lọc không nhé.
print('S2_filtered', S2_filtered);
Như các post trước, mình sẽ dùng hàm Map.addLayer
và Map.centerObject
để hiển thị kết quả lên cửa sổ bản đồ.
Map.centerObject(geometry, 9);
Map.addLayer(S2_filtered, {min: 0.0, max: 3000, bands:'B4,B3,B2'}, 'Filtered Collection');