Earth Engine'de tileScale'i anlama
Image.reduceRegionsVeya gibi birçok Earth Engine işlevinde Image.sampleadında bir argüman vardır tileScale. API belgeleri genellikle bunu şu şekilde yorumlar:
Toplama döşemesi boyutunu azaltmak için kullanılan bir ölçeklendirme faktörü; Daha büyük bir tileScale (örn. 2 veya 4) kullanmak, varsayılan olarak hafızanın tükenmesine neden olan hesaplamaları etkinleştirebilir.
Bu iyi belgelenmiş gibi görünse de, tileScale'in hesaplamanın nihai sonucu üzerindeki etkisini hala anlamıyorum.
- Ne yapar
tileScale? - Mu
tileScalehesaplama yapmadan önce görüntüyü topakları? - Ölçek üzerinde etkisi var mı?
Aşağıda, çalışmak için bir kod örneği verilmiştir ( kod bağlantısı ).
// 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');
Yanıtlar
TileScale ne yapar? TileScale, hesaplamayı gerçekleştirmeden önce görüntüyü parçalar mı?
Evet.
reduceRegionBir görüntüden bir veya daha fazla indirgenmiş değeri hesapladığınız gibi bir işlem gerçekleştirdiğinizde , indirgeyiciye giren görüntü pikselleri döşemeler halinde hesaplanır (tıpkı bir haritada görüntülemek için kullanılan döşemeler gibi), indirgeyici ara sonuçlar üretmek için bu piksel döşemelerine uygulanır ve ardından bu ara sonuçlar birleştirilir.
Daha yüksek bir değer ayarlamak tileScale, bu karoların boyutunu azaltır. Bu şu demek:
- Her kutucuk için daha az bellek kullanılır (bu nedenle, hesaplamanın belleğin tükenme olasılığı daha düşüktür).
- Kurulumu daha uzun süren daha fazla karo vardır (bu nedenle hesaplama daha uzun sürer).
Ölçek üzerinde etkisi var mı?
Görüntünün çözünürlüğü / piksel boyutunu kastediyorsanız: hayır. Hesaplama başarılı olursa, sonuç ne olursa olsun her zaman aynı olmalıdır tileScale(kayan noktalı işlemlerin sırasından kaynaklanan küçük farklılıklar hariç).