Học Google Earth Engine 5 – Các bộ lọc ảnh Filtering Image Collections ee.Filter

3.3. Lọc Bộ sưu tập Hình ảnh (Filtering Image Collections)

Bộ sưu tập chứa tất cả hình ảnh từng được cảm biến thu thập. Toàn bộ bộ sưu tập không phải là rất hữu ích. Hầu hết các ứng dụng yêu cầu một tập hợp con của các hình ảnh. Chúng tôi sử dụng bộ lọc (filters) để chọn những hình ảnh thích hợp. Có nhiều loại chức năng của bộ lọc, hãy nhìn vào mô-đun ee.Filter … để xem tất cả các bộ lọc có sẵn. Chọn một bộ lọc và sau đó chạy hàm filter() với các tham số của bộ lọc.

Chúng ta sẽ tìm hiểu về 3 loại kỹ thuật lọc chính

  • Lọc theo siêu dữ liệu (Filter by metadata): Bạn có thể áp dụng bộ lọc trên siêu dữ liệu hình ảnh bằng các bộ lọc như ee.Filter.eq(), ee.Filter.lt(), v.v. Bạn có thể lọc theo giá trị PATH / ROW, Số quỹ đạo, Lớp phủ đám mây, v.v.
  • Lọc theo ngày (Filter by date): Bạn có thể chọn hình ả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().
  • Lọc theo vị trí (Filter by Location): Bạn có thể chọn tập hợp con hình ảnh có hộp giới hạn, vị trí hoặc hình học bằng cách sử dụng ee.Filter.bounds(). Bạn cũng có thể sử dụng các công cụ vẽ để vẽ một hình để lọc.

Sau khi áp dụng các bộ lọc, bạn có thể sử dụng hàm size() để kiểm tra xem có bao nhiêu hình ảnh phù hợp với các bộ lọc.

var geometry = ee.Geometry.Point([77.60412933051538, 12.952912912328241]) // Hàm này khai báo biến là geometry và đây là dạng điểm có tọa dộ 77.6 và 12.95 (long/lat)

Map.centerObject(geometry, 10) // Hàm này là zoom đến tọa độ điểm đã khai ở trên với mức zoom ở mức 10

var s2 = ee.ImageCollection(“COPERNICUS/S2”); // Hàm này là khai báo biến s2 là tập hợp ảnh Sentinel-2

// Xem thêm về ảnh này tại đây: https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2

// Filter by metadata – Hàm này là dùng để lọc mây với tham số ở đây là 30; lt là viết tắt của less than tức là ít hơn; Vậy câu lệnh dưới đây là hàm lọc các bức ảnh Sentinel – 2 có lượng mây ít hơn 30%

var filtered = s2.filter(ee.Filter.lt(‘CLOUDY_PIXEL_PERCENTAGE’, 30))

// Filter by date – Hàm này dùng để lọc thời gian. Yêu cầu thời gian phải khai theo đúng cấu trúc này “yyyy-mm-dd”. Với 2 khoảng thời gian trong ví dụ này thì Ảnh Sentinel chỉ được lấy trong khoản thời gian này.

var filtered = s2.filter(ee.Filter.date(‘2019-01-01’, ‘2020-01-01’))

// Filter by location – Hàm này dùng để lọc vị trí. Tức là chỉ lấy các ảnh Sentinel tại vị trị geometry đã khai báo ở trên.

var filtered = s2.filter(ee.Filter.bounds(geometry))

// Instead of applying filters one after the other, we can ‘chain’ them – Thay vì áp dụng lần lượt, ta có thể áp dụng cả 3 bộ lọc này

// Use the . notation to apply all the filters together – Sử dụng ký tự . để lần lượt áp dụng các bộ lọc

var filtered = s2.filter(ee.Filter.lt(‘CLOUDY_PIXEL_PERCENTAGE’, 30))

  .filter(ee.Filter.date(‘2019-01-01’, ‘2020-01-01’))

  .filter(ee.Filter.bounds(geometry))

print(filtered.size())

var rgbVis = {

  min: 0.0,

  max: 3000,

  bands: [‘B4’, ‘B3’, ‘B2’],

}; // Đây là câu lệnh để visualize kết quả lựa chọn trên Bản đồ, với 3 kênh ảnh B4, B3, B2 được lựa chọn.

Map.addLayer(filtered, rgbVis, ‘Filtered’) //Đây là câu lệnh để thêm lớp đã lọc lên giao diện bản đồ để xem

//Hãy thử copy đoạn câu lệnh này vào Google Earth Engine để thử 

3.3.1. Bài tập – Exercise

// Add one more filter in the script below to select images – 

// from only one of the satellites – Sentinel-2A – from the

// Sentinel-2 constellation

// Hint1: Use the ‘SPACECRAFT_NAME’ property

// Hint2: Use the ee.Filter.eq() filter

// Thêm một bộ lọc nữa trong tập lệnh bên dưới để chọn hình ảnh –

// chỉ từ một trong các vệ tinh – Sentinel-2A – từ

// Chòm sao Sentinel-2

// Gợi ý 1: Sử dụng thuộc tính ‘SPACECRAFT_NAME’

// Gợi ý 2: Sử dụng bộ lọc ee.Filter.eq ()

var geometry = ee.Geometry.Point([77.60412933051538, 12.952912912328241])

Map.centerObject(geometry, 10)

var s2 = ee.ImageCollection(“COPERNICUS/S2”);

var filtered = s2.filter(ee.Filter.lt(‘CLOUDY_PIXEL_PERCENTAGE’, 30))

  .filter(ee.Filter.date(‘2019-01-01’, ‘2020-01-01’))

  .filter(ee.Filter.bounds(geometry))

print(filtered.size())

var rgbVis = {

  min: 0.0,

  max: 3000,

  bands: [‘B4’, ‘B3’, ‘B2’],

};

Map.addLayer(filtered, rgbVis, ‘Filtered’)

3.3.2. Kết quả

// Add one more filter in the script below to select images – 

// from only one of the satellites – Sentinel-2A – from the

// Sentinel-2 constellation

// Hint1: Use the ‘SPACECRAFT_NAME’ property

// Hint2: Use the ee.Filter.eq() filter

// Thêm một bộ lọc nữa trong tập lệnh bên dưới để chọn hình ảnh –

// chỉ từ một trong các vệ tinh – Sentinel-2A – từ

// Chòm sao Sentinel-2

// Gợi ý 1: Sử dụng thuộc tính ‘SPACECRAFT_NAME’

// Gợi ý 2: Sử dụng bộ lọc ee.Filter.eq()

var geometry = ee.Geometry.Point([77.60412933051538, 12.952912912328241])

Map.centerObject(geometry, 10)

// var s2 = ee.ImageCollection(“COPERNICUS/S2”); Đoạn này cần phải đổi thành Sentinel – 2 A

//https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_SR

var s2 = ee.ImageCollection(“COPERNICUS/S2_SR”)

var filtered = s2.filter(ee.Filter.lt(‘CLOUDY_PIXEL_PERCENTAGE’, 30))

  .filter(ee.Filter.date(‘2019-01-01’, ‘2020-01-01’))

  .filter(ee.Filter.bounds(geometry))

  .filter(ee.Filter.eq(‘SPACECRAFT_NAME’, ‘Sentinel-2A’)); //Hàm lọc này chỉ lấy vệ tinh Sentinel-2A

print(filtered.size())

print(filtered) 

var rgbVis = {

  min: 0.0,

  max: 3000,

  bands: [‘B4’, ‘B3’, ‘B2’],

};

Map.addLayer(filtered, rgbVis, ‘Filtered’)

Recommended For You

About the Author: Admin