reduceRegion
Để nhận số liệu thống kê về giá trị pixel trong một vùng của ee.Image
, hãy sử dụng image.reduceRegion()
.
Điều này làm giảm tất cả các pixel trong(các) vùng xuống một số liệu thống kê hoặc một cách trình bày nhỏ gọn khác của dữ liệu pixel trong vùng (ví dụ: biểu đồ). Khu vực được biểu thị dưới dạng Geometry
, có thể là một đa giác chứa nhiều pixel hoặc có thể là một điểm duy nhất, trong trường hợp này sẽ chỉ có một pixel trong khu vực. Trong cả hai trường hợp, như minh hoạ trong Hình 1, đầu ra là số liệu thống kê bắt nguồn từ các pixel trong vùng.

ee.Reducer
được áp dụng cho một hình ảnh và một vùng.Ví dụ về cách lấy số liệu thống kê về pixel trong một vùng của hình ảnh bằng reduceRegion()
, hãy cân nhắc việc tìm giá trị phổ trung bình của một tổng hợp Landsat 5 năm trong ranh giới của Rừng cây lá kim Sierra Nevada (minh hoạ trong Hình 2):
// Load input imagery: Landsat 7 5-year composite. var image = ee.Image('LANDSAT/LE7_TOA_5YEAR/2008_2012'); // Load an input region: Sierra Nevada. var region = ee.Feature(ee.FeatureCollection('EPA/Ecoregions/2013/L3') .filter(ee.Filter.eq('us_l3name', 'Sierra Nevada')) .first()); // Reduce the region. The region parameter is the Feature geometry. var meanDictionary = image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), scale: 30, maxPixels: 1e9 }); // The result is a Dictionary. Print it. print(meanDictionary);
Để buộc tính toán, bạn chỉ cần in kết quả mà Trình soạn thảo mã sẽ hiển thị dưới dạng Dictionary
trong bảng điều khiển. Kết quả sẽ có dạng như sau:
B1: 25.406029716816853 B2: 23.971497014238988 B3: 22.91059593763103 B4: 54.83164133293403 B5: 38.07655472573677 B6_VCID_2: 198.93216428012906 B7: 24.063261634961563

Lưu ý rằng trong ví dụ này, việc giảm được chỉ định bằng cách cung cấp reducer
(ee.Reducer.mean()
), geometry
(region.geometry()
), scale
(30 mét) và maxPixels
cho số pixel tối đa để nhập vào bộ giảm. Bạn phải luôn chỉ định tỷ lệ trong các lệnh gọi reduceRegion()
. Điều này là do trong các quy trình xử lý phức tạp, có thể liên quan đến dữ liệu từ nhiều nguồn với các quy mô khác nhau, quy mô của đầu ra sẽ không được xác định rõ ràng từ dữ liệu đầu vào. Trong trường hợp đó, tỷ lệ mặc định sẽ là 1 độ, thường cho kết quả không như mong muốn. Hãy xem trang này để biết thêm thông tin về cách Earth Engine xử lý tỷ lệ.
Có hai cách để đặt tỷ lệ: bằng cách chỉ định tham số scale
hoặc bằng cách chỉ định CRS và phép biến đổi CRS. (Xem bảng thuật ngữ để biết thêm thông tin về CRS và phép biến đổi CRS). Ví dụ: việc rút gọn meanDictionary
(ở trên) tương đương với:
// As an alternative to specifying scale, specify a CRS and a CRS transform. // Make this array by constructing a 4326 projection at 30 meters, // then copying the bounds of the composite, from composite.projection(). var affine = [0.00026949458523585647, 0, -180, 0, -0.00026949458523585647, 86.0000269494563]; // Perform the reduction, print the result. print(image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), crs: 'EPSG:4326', crsTransform: affine, maxPixels: 1e9 }));
Nhìn chung, việc chỉ định tỷ lệ là đủ và giúp mã dễ đọc hơn. Earth Engine xác định pixel nào cần nhập vào bộ giảm trước khi quét vùng. Nếu bạn chỉ định tỷ lệ mà không có CRS, thì vùng sẽ được quét trong phép chiếu gốc của hình ảnh theo tỷ lệ được chỉ định. Nếu bạn chỉ định cả CRS và tỷ lệ, thì vùng sẽ được quét dựa trên các thông số đó.
Số lượng Pixel trong khu vực
Các pixel được xác định là nằm trong vùng (và được tính trọng số) theo các quy tắc sau, được áp dụng theo tỷ lệ và phép chiếu đã chỉ định:
- Trình giảm không trọng số (ví dụ:
ee.Reducer.count()
hoặcee.Reducer.mean().unweighted()
): các pixel được đưa vào nếu tâm điểm của chúng nằm trong vùng và mặt nạ của hình ảnh không bằng 0. - Trình giảm trọng số (ví dụ:
ee.Reducer.mean()
): pixel được đưa vào nếu ít nhất (xấp xỉ) 0,5% pixel nằm trong vùng và mặt nạ của hình ảnh không bằng 0; trọng số của chúng là giá trị tối thiểu của mặt nạ hình ảnh và phân số (xấp xỉ) của pixel được vùng bao phủ.
Bạn cần có tham số maxPixels
để thực hiện thành công phép tính. Nếu bạn bỏ qua tham số này trong ví dụ, hệ thống sẽ trả về một lỗi có dạng như sau:
Có nhiều cách để khắc phục các lỗi này: tăng maxPixels
,
như trong ví dụ, tăng scale
hoặc đặt bestEffort
thành
true. Thao tác này sẽ tự động tính toán một tỷ lệ mới (lớn hơn) sao cho không vượt quá maxPixels
. Nếu bạn không chỉ định maxPixels
, giá trị mặc định sẽ được sử dụng.