Google Earth Motor Komut Dosyalarının Yürütme Süresini Optimize Etme
Google Earth Engine (GEE), büyük ölçekli coğrafi verileri analiz etmek için güçlü bir platformdur. Ancak kullanıcılar, komut dosyaları basit görünse bile yürütme süresiyle ilgili sorunlarla sıklıkla karşılaşırlar. Çalıştırılması birkaç dakika süren bir komut dosyası üretkenliği etkileyebilir ve içgörüleri geciktirebilir.
Bu durumda kullanıcı, Sentinel ve Landsat 8 verilerini işlemek için basit bir komut dosyası oluşturmuştur. Basitliğine rağmen betiğin yürütülmesi yaklaşık 3-5 dakika sürer. Bunun neden olduğunu ve komut dosyasının nasıl optimize edileceğini anlamak, verimli veri işleme için çok önemlidir.
Bir GEE betiğinin performansı, veri boyutu, filtreleme ve hesaplama karmaşıklığı gibi çeşitli faktörlere bağlıdır. Yürütme süresinin azaltılması, gereksiz işlemler veya işlemeyi yavaşlatan büyük veri kümeleri gibi komut dosyasındaki darboğazların belirlenmesini içerir.
Bu makale, GEE'deki yavaş yürütme sürelerinin olası nedenlerini araştıracak ve verilen betiğin optimize edilmesine yönelik pratik ipuçları sağlayacaktır. Kullanıcılar bu stratejileri uygulayarak coğrafi veri analizi görevlerinin hızını ve performansını önemli ölçüde artırabilir.
Emretmek | Kullanım Örneği |
---|---|
normalizedDifference() | Bu işlev, iki bant arasındaki farkın toplamlarına bölünmesiyle hesaplanarak NDVI, NDWI ve NDSI gibi endeksleri hesaplamak için kullanılır. Bitki örtüsü, su ve kar indekslerinin gerekli olduğu uzaktan algılama analizine özeldir. |
filterBounds() | Bir görüntü koleksiyonunu yalnızca belirli bir geometriyle kesişen görüntüleri içerecek şekilde filtreler. Bu durumda uydu verilerini tanımlanan ilgi noktasının etrafındaki alanla sınırlandırarak ilgisiz verileri hariç tutarak işlemeyi daha verimli hale getirir. |
filterDate() | Bu komut, görsel koleksiyonunu belirli bir tarih aralığıyla sınırlandırır. Sorunumuz açısından Sentinel ve Landsat veri kümeleri için aynı zaman dilimi arasındaki farkları analiz etmek çok önemlidir. |
addBands() | Koleksiyondaki her görüntüye yeni hesaplanmış bantlar (NDVI, NDWI ve NDSI gibi) ekler. Bu, ayrı veri kümeleri oluşturmadan aynı görüntü koleksiyonuna birden fazla indeks uygulamak için gereklidir. |
unmask() | Maskelenmiş pikselleri belirtilen değerle doldurur. Senaryomuzda kalıcı su alanlarının maskesini kaldırmak ve verilerin tüm bölge genelinde tutarlı bir şekilde işlenmesini sağlamak için kullanılır. |
reduce() | Ee.Reducer.percentile() gibi belirli bir azaltıcı işlevi kullanarak görüntü koleksiyonunu azaltır. Burada piksel değerlerinin 30'uncu yüzdelik dilimini hesaplamak için kullanılır ve kompozit görüntü oluşturmayı optimize eder. |
clip() | Bir görüntüyü belirtilen ilgi bölgesinin sınırlarına kırpar. Bu, yalnızca alanla ilgili verilerin işlenmesini sağlar ve bu da yürütmeyi hızlandırır. |
gt() | Bu komut 'büyüktür' anlamına gelir ve bir eşiğe dayalı ikili görüntüler oluşturmak için kullanılır. Bu durumda su oluşumunun %80'den fazla olduğu alanları belirler. |
map() | Koleksiyondaki her görüntüye bir işlev uygular. Örneğimizde, koleksiyondaki tüm görüntülerde NDVI, NDWI ve NDSI'yi hesaplamak için addIndices işlevini uygulayarak iş akışını kolaylaştırır. |
Geliştirilmiş Verimlilik için GEE Komut Dosyalarını Optimize Etme
Sağlanan komut dosyasında amaç, uydu görüntülerini iki farklı kaynaktan çıkarmak ve işlemektir: Sentinel ve Landsat. Platform, kullanıcıların çok büyük miktardaki uydu verilerine erişmesine ve filtreleme, indeksleme, görselleştirme gibi çeşitli işlemleri uygulamasına olanak tanıyor. Bu komut dosyasında kullanılan temel özelliklerden biri NDVI, NDWI ve NDSI gibi önemli endeksleri hesaplamak için kullanılan işlev. Bu indeksler belirtilen bölgedeki bitki örtüsü, su ve kar örtüsünün analiz edilmesi için çok önemlidir. Komut dosyası, bir ilgi noktası tanımlayarak başlar ve sağlanan koordinatları kullanarak haritayı bu nokta üzerinde ortalar.
Komut dosyası, aşağıdakiler gibi birden fazla filtre uygular: Ve işlenen veri miktarını azaltmak ve böylece yürütme süresini iyileştirmek için. Örneğin, filtreSınırları() yalnızca ilgi alanıyla kesişen görüntülerin dahil edilmesini sağlarken, filtreTarihi() görüntüleri belirli bir tarih aralığıyla sınırlar. Bu, hesaplama yükünü en aza indirdiği için Sentinel ve Landsat görüntüleri gibi büyük veri kümelerinin işlenmesi için gereklidir. Ek olarak, bulut kapsamı için çok fazla bulut içeren görüntülerin atılmasına yardımcı olarak daha kaliteli analiz sağlar.
Senaryonun önemli bir yönü, görüntülere hesaplanmış endeksler (NDVI, NDWI, NDSI) ekleyen ve bunları daha fazla analiz için erişilebilir hale getiren işlev. Komut dosyası aynı zamanda JRC Küresel Yüzey Suyu veri kümesindeki verileri kullanan kalıcı bir su maskesini de içeriyor. Su maskesi, bitki örtüsü ve kar analizi sonuçlarını çarpıtabilecek yüksek oranda su bulunan (%80'den fazla) alanların hariç tutulmasına yardımcı olur. Bu, aracılığıyla yapılır Ve Komut dosyasının alanları piksel değerlerine göre izole etmesine olanak tanıyan işlevler.
Son olarak, komut dosyası şunu kullanır: Seçilen piksel değerlerinin 30'uncu yüzdelik dilimini temsil eden bir bileşik görüntü oluşturmak için yüzdelik azaltıcıyla birlikte işlev görür. Bu kompozit görüntü daha sonra ilgilenilen bölgeye kırpılır ve harita üzerinde görselleştirilir. işlev. Hem Sentinel hem de Landsat kompozitleri için görsel parametreler tanımlanarak kullanıcının bunları uygun renk ayarlarıyla görüntülemesine olanak sağlanır. Filtreleme, maskeleme ve kompozit oluşturma gibi çeşitli görüntü işleme adımlarını birleştiren bu komut dosyası, uydu görüntülerini analiz etmek için etkili bir yol sağlar, ancak yürütme sürelerini azaltmak için daha fazla optimizasyon uygulanabilir.
Daha Hızlı İşleme için Google Earth Motor Komut Dosyasının Yürütülmesini Optimize Etme
Bu çözüm, veri alma sürelerini azaltarak ve işlemleri basitleştirerek performansı optimize etmeye önem veren Google Earth Engine'i (GEE) kullanır. Betik dili olarak JavaScript kullanılmaktadır.
var pointJSP = ee.Geometry.Point([86.465263, 20.168076]);
Map.centerObject(pointJSP, 14);
// Combine date variables for flexibility
var startDate = '2024-02-01';
var endDate = '2024-03-01';
// Function to add NDVI, NDWI, NDSI
var addIndices = function(image) {
var ndvi = image.normalizedDifference(['NIR', 'RED']).rename('NDVI');
var ndwi = image.normalizedDifference(['NIR', 'SWIR1']).rename('NDWI');
var ndsi = image.normalizedDifference(['SWIR1', 'SWIR2']).rename('NDSI');
return image.addBands(ndvi).addBands(ndwi).addBands(ndsi);
};
// Use fewer data points by filtering for cloud-free pixels only once
var sentinel = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(pointJSP)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30));
Komut Dosyası Gecikmelerini En Aza İndirmek İçin GEE için Verimli Veri İşlemeyi Kullanma
Bu çözüm, endeks hesaplamalarını ve eşikleri birleştirerek optimize edilmiş veri işlemeyi entegre eder. Google Earth Motorunun işlenmesi için JavaScript uygulanır.
var landsat8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(pointJSP)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUD_COVER', 30));
// Apply water mask for permanent water areas
var waterMask = ee.Image('JRC/GSW1_4/GlobalSurfaceWater').select('occurrence').gt(80).unmask();
// Add indices to Landsat 8 imagery
var landsatIndices = landsat8.map(addIndices);
var composite = landsatIndices.reduce(ee.Reducer.percentile([30])).clip(pointJSP).mask(waterMask.eq(0));
Map.addLayer(composite, {bands: ['RED', 'GREEN', 'BLUE'], min: 0, max: 3000}, 'Landsat Composite');
Map.addLayer(waterMask, {min: 0, max: 1, palette: ['white', 'blue']}, 'Water Mask', false);
Uzaktan Algılama Komut Dosyalarının Verimliliğini Artırma
Google Earth Engine (GEE) komut dosyalarıyla çalışırken göz önünde bulundurulması gereken en önemli hususlardan biri, işlemlerin verimli bir şekilde yürütülmesini sağlamaktır. Çevresel analizde Sentinel ve Landsat gibi büyük veri kümelerinin kullanımı yaygın olsa da, verilerin çok büyük olması komut dosyasının yürütülmesini yavaşlatabilir. Performansı artırmanın bir yöntemi, yalnızca gerekli verilerin işlenmesini sağlamaktır. Gibi komutları kullanma Ve veri kümesi boyutunu en aza indirerek hesaplamaların kolaylaştırılmasına yardımcı olur. Belirli tarih aralıklarının ve coğrafi bölgelerin seçilmesi, yürütme süresini önemli ölçüde azaltabilir.
GEE komut dosyası performansını etkileyen diğer bir husus da verilerin nasıl işlendiğidir. Komut dosyası örneği, NDVI, NDWI ve NDSI gibi önemli endeksleri hesaplamak için bir işlev kullanır. Bu indeksler görüntü koleksiyonlarına bantlar halinde eklenir ve bu da daha kapsamlı bir analize olanak sağlar. Ancak yaygın bir hata, bu tür işlevlerin önce filtrelemeden tüm veri kümesine uygulanmasıdır. İlgisiz veriler üzerinde gereksiz hesaplamaların önlenmesi için bu tür işlemlerin filtrelemeden sonra uygulanması çok önemlidir.
Görselleştirme, komut dosyasının optimize edilebilecek başka bir öğesidir. Çok fazla katman veya karmaşık görselleştirme eklemek, işlem süresini kısaltabilir. Komut dosyası, kompozitleri oluşturmak için önceden tanımlanmış görsel parametreleri kullanır, ancak açıkça gerekmedikçe belirli katmanlar devre dışı bırakılarak performans artırılabilir. Bu, işlevselliğini korurken komut dosyasının hafif kalmasına yardımcı olur. Kullanma komutlar ayrıca yalnızca gerekli alanın işlenmesini sağlayarak genel işlem yükünü azaltır.
- GEE komut dosyalarımın performansını nasıl geliştirebilirim?
- Kullanımını optimize edin , ve işlemeden önce veri kümenizin boyutunu azaltın.
- GEE betiğimin çalıştırılması neden bu kadar uzun sürüyor?
- Büyük veri kümeleri ve karmaşık hesaplamalar yürütmeyi yavaşlatabilir. Kullanmak Ve işlemeyi ilgili alanlarla sınırlamak.
- GEE'de işlenen görüntülerin sayısını azaltabilir miyim?
- Evet başvurarak bulut kapsamı için ve Belirli dönemlere odaklanmak.
- Betiğimde dizin hesaplamalarını nasıl basitleştirebilirim?
- Gibi bir işlev kullanın Tek adımda birden fazla endeksin (ör. NDVI, NDWI) eklenmesini kolaylaştırmak için.
- Yalnızca temel katmanları görselleştirmek mümkün mü?
- Evet, gereksiz katmanları devre dışı bırakın ve basitleştirilmiş görselleştirme parametrelerini kullanın. daha iyi performans için.
Google Earth Engine komut dosyalarının optimize edilmesi, büyük veri kümelerinin verimli bir şekilde işlenmesini, filtrelerin erken uygulanmasını ve gereksiz veri işlemlerinin azaltılmasını içerir. Filtreleme gibi önemli alanlara odaklanma ve konum, işlem süresini önemli ölçüde azaltabilir.
Gibi işlevleri birleştirerek ve ilgisiz verileri ortadan kaldırmak için eşik maskeleri kullanılarak komut dosyası performansı daha da geliştirilebilir. Bu teknikler, daha hızlı sonuçlar sunarak ve Google Earth Engine platformunun daha iyi kullanılmasını sağlayarak uygulamayı kolaylaştırabilir.
- Bu makale, komut dosyası optimizasyon tekniklerine ilişkin bilgiler sağlayan resmi Google Earth Engine belgelerine dayalı içerik kullanılarak oluşturulmuştur. Google Earth Motor Kılavuzları
- GEE topluluk forumundan, karmaşık komut dosyalarında performansı artırmaya yönelik tartışmalar ve çözümler sunan ek bilgiler toplandı. Google Earth Motor Topluluğu
- Büyük veri kümelerini işlemeye yönelik en iyi uygulamalara, aşağıdaki bağlantıda bulunan uzaktan algılama literatüründen ve eğitimlerden başvurulmuştur. NASA Dünya Gözlemevi