Tìm hiểu về tileScale trong Earth Engine
Trong nhiều chức năng của Earth Engine chẳng hạn như Image.reduceRegionshoặc Image.sample, có một đối số được gọi là tileScale. Tài liệu API thường hiểu nó là:
Một yếu tố tỷ lệ được sử dụng để giảm kích thước gạch tổng hợp; sử dụng tileScale lớn hơn (ví dụ 2 hoặc 4) có thể kích hoạt các tính toán hết bộ nhớ với mặc định.
Mặc dù điều này dường như đã được ghi chép đầy đủ, nhưng tôi vẫn không hiểu ảnh hưởng của tileScale đến kết quả cuối cùng của tính toán.
- Làm gì
tileScale? - Có phân
tileScalekhối hình ảnh trước khi thực hiện tính toán không? - Nó có ảnh hưởng đến quy mô không?
Dưới đây là một mẫu mã để làm việc với ( liên kết mã ).
// Getting the image of the region of interest
var roi = ee.Geometry.Point([1.864578244475683, 14.492292970253338]);
var image = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA')
.filterDate('2019-01-01', '2019-01-31')
.filterBounds(roi)
.select(['B5', 'B4', 'B3'])
.toBands()
.rename(['B5', 'B4', 'B3']);
// Checking it out
print(image);
// Define the visualization parameters.
var vizParams = {
bands: ['B5', 'B4', 'B3'],
min: 0,
max: 0.5,
gamma: [0.95, 1.1, 1]
};
// Center the map and display the image.
Map.centerObject(image, 9);
Map.addLayer(image, vizParams, 'false color composite');
// Computing the band means at 30 meters and tileScale of 1: (Computation succeeded)
var control = image.reduceRegion({
reducer:ee.Reducer.mean(),
scale : 30,
tileScale: 1,
maxPixels:1e13
});
print(control, 'first scenario');
// Computing the band means at 5 meters and tileScale of 1: (Computation succeeded)
var scenario2 = image.reduceRegion({
reducer:ee.Reducer.mean(),
scale: 5,
tileScale: 1,
maxPixels: 1e13
});
print(scenario2, 'second scenario');
// Computing the band means at 5 meters and tileScale of 16: (Computation Error: Computation timed out.)
var scenario3 = image.reduceRegion({
reducer:ee.Reducer.mean(),
scale: 5,
tileScale: 16,
maxPixels: 1e13
});
print(scenario3, 'third scenario');
Trả lời
TileScale làm gì? TileScale có chia nhỏ hình ảnh trước khi thực hiện tính toán không?
Đúng.
Bất cứ khi nào bạn thực hiện một thao tác như reduceRegionkhi bạn đang tính toán một hoặc nhiều giá trị được giảm bớt từ một hình ảnh, các pixel hình ảnh đi vào bộ giảm tốc được tính trong các ô (giống như các ô được sử dụng để xem trên bản đồ), bộ giảm được áp dụng cho các ô pixel đó để tạo ra các kết quả trung gian và sau đó các kết quả trung gian đó được kết hợp với nhau.
Đặt giá trị cao hơn sẽ tileScalegiảm kích thước của các ô đó. Điều này có nghĩa rằng:
- Mỗi ô được sử dụng ít bộ nhớ hơn (vì vậy việc tính toán ít có khả năng hết bộ nhớ hơn).
- Có nhiều ô hơn, mất nhiều thời gian hơn để thiết lập (vì vậy việc tính toán sẽ lâu hơn).
Nó có ảnh hưởng đến quy mô không?
Nếu ý bạn là độ phân giải / kích thước pixel của hình ảnh: không. Nếu tính toán thành công, kết quả phải luôn giống nhau bất kể tileScale(ngoại trừ sự khác biệt nhỏ do thứ tự của các phép toán dấu phẩy động).