Bu dokümanda, verimli coğrafi analiz için Google Earth Engine'ı (EE) BigQuery (BQ) ile entegre etme konusunda yol gösterici bilgiler verilmektedir. İki platform arasındaki veri aktarımı, performansla ilgili hususlar, sınırlamalar ve maliyet etkileri bu dokümanda ele alınmıştır.
BigQuery nedir?
BigQuery, Google'ın petabaytlarca veri üzerinde ölçeklenebilir analiz yapılmasını sağlayan, tümüyle yönetilen, sunucusuz bir veri ambarıdır. Yüksek hızlı SQL sorgularında üstün performans gösterir ve coğrafi verileri destekler.
BigQuery'yi veya Earth Engine'ı ne zaman kullanmalıyım?
| BigQuery | Earth Engine | |
|---|---|---|
| Veri türü | Öncelikle yapılandırılmış, analitik vektör verileri. GEOGRAPHY verileriyle coğrafi işlemler desteklenir. |
Öncelikle raster verileri destekler ancak vektör verilerini de destekler. |
| İşleniyor | Büyük ölçekli toplama ve birleştirme işlemleri için optimize edilmiş SQL tabanlı sorgular. BQ Makine Öğrenimi ile derin entegrasyon. | Gelişmiş coğrafi algoritmalar ve makine öğrenimi dahil olmak üzere raster işleme ve analiz için JavaScript ve Python API'leri. |
| Ölçek | Petabayt ölçeğinde depolama ve analiz. Tablo veri işlemeye odaklanın. | Petabayt ölçeğinde depolama ve analiz. Vektör veri işleme ölçeğiyle ilgili sınırlamalara sahip coğrafi analize odaklanma. |
| Kullanım alanları | Büyük vektör veri kümelerinde veri ambarı, iş zekası, coğrafi analizler. | Coğrafi analiz, uzaktan algılama, çevre izleme, raster verilerde makine öğrenimi. |
Vektör ve raster veriler
Vektör verileri, dünya yüzeyindeki noktalar, çizgiler ve poligonlardır. BigQuery'de vektör verileri GEOGRAPHY veri türü kullanılarak depolanır. Earth Engine'de bunlar ee.Geometry nesneleridir.
Rast veriler, yansıtılan piksel ızgaralarıdır. Earth Engine, büyük raster veri kümelerini işlemek ve yönetmek için optimize edilmiştir.
Her iki sistemi kullanmanın avantajları
BigQuery'nin ölçeklenebilirliği, yalnızca Earth Engine'da işlenmesinin zor olabileceği devasa tablo veri kümeleriyle çalışmanıza olanak tanır. Earth Engine ise BigQuery'de mümkün olmayan büyük ölçekli zenginleştirme ve vektörden rastere işleme işlemlerini destekleyebilir.
Earth Engine, BigQuery'den daha geniş bir coğrafi işlev ve veri yelpazesini destekler ancak BigQuery, diğer araçlar ve hizmetlerle çok daha zengin bir entegrasyona sahiptir.
Earth Engine verilerini BigQuery'ye taşıma
Earth Engine, daha ayrıntılı analiz ve diğer veri kümeleriyle entegrasyon için verileri doğrudan BigQuery'ye aktarabilir.
Export.table.toBigQuery()
Earth Engine hesaplamasının sonuçlarını BigQuery'ye yazan asenkron dışa aktarma işlerini tetiklemek için Export.table.toBigQuery() işlevini kullanın. Bu Earth Engine görevleri, Cloud Console'daki Görev görünümünde veya Earth Engine Kod Düzenleyici'de görüntülenebilir ve kontrol edilebilir.
JavaScript
// Define an Earth Engine feature collection. var features = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017'); // Export the feature collection to BigQuery. Export.table.toBigQuery({ collection: features, description: 'export_to_bigquery', table: 'my_project.my_dataset.my_table', append: true, overwrite: false });
Python
# Define an Earth Engine feature collection. features = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017') # Export the feature collection to BigQuery. task = ee.batch.Export.table.toBigQuery( collection=features, description='export_to_bigquery', table='my_project.my_dataset.my_table', append=True, overwrite=False ) task.start()
Daha fazla bilgi için tam işlev dokümantasyonuna bakın.
Senkron API'ler
Earth Engine'da verileri doğrudan BigQuery'ye senkronize olarak yazacak doğrudan bir bağlayıcı yoktur. BigQuery'ye veri aktarmak için tercih ettiğiniz dildeki (Python, Java, Go vb.) BigQuery istemci kitaplığını kullanabilir veya gerçek zamanlı ya da neredeyse gerçek zamanlı veri aktarımı için RPC Storage API'yi kullanabilirsiniz.
| Konu | Ayrıntılar |
|---|---|
| Ön koşullar | Projede BigQuery API ve BigQuery Storage API etkin olmalıdır. |
| İzinler | Hedef BigQuery veri kümesinde yazma erişiminizin ve hedef projede iş oluşturma izninizin olması gerekir. Ayrıntılar için gerekli izinlerin listesine bakın. İzinleri yönetme hakkında ayrıntılı bilgi için BigQuery erişim denetimi belgelerine bakın. |
| Fiyatlandırma | BigQuery'ye aktardığınız tüm Earth Engine verilerinin depolanması ve analizi de dahil olmak üzere BigQuery kullanımınızdan ücret alınır. Ayrıntılar için Earth Engine'dan BigQuery'ye dışa aktarma fiyatlandırması başlıklı makaleyi inceleyin. |
| Sınırlar | Elde edilen veriler, satır başına 8 MB ek sınırla BigQuery'nin tablo modeline sığmalıdır. Earth Engine verilerini BigQuery'ye aktarmayla ilgili bilinen sorunlar grubuna da bakın. |
Doğrudan BigQuery'den veri yükleme
ee.FeatureCollection.loadBigQueryTable() işlevi, verileri BigQuery içinde dönüştürmeden doğrudan BigQuery tablosundan yükler.
JavaScript
// Load the BigQuery table with a specified geometry column. var features = ee.FeatureCollection.loadBigQueryTable({ tablePath: 'my_project.my_dataset.my_table', geometryColumn: 'geo' }); // Map features on the map Map.addLayer(features);
Python
# Load the BigQuery table with a specified geometry column. features = ee.FeatureCollection.loadBigQueryTable( tablePath='my_project.my_dataset.my_table', geometryColumn='geo') print(features.first())
| Konu | Ayrıntılar |
|---|---|
| Ön koşullar | Projede BigQuery API ve BigQuery Storage API etkin olmalıdır. |
| İzinler | Standart rollere ve izinlere ek olarak, hedef BigQuery tablosunda okuma erişimine ve hedef projede okuma oturumları oluşturma iznine sahip olmanız gerekir. Gerekli BigQuery izinleri şunlardır: - bigquery.tables.get - bigquery.tables.getData - bigquery.readSession.create - bigquery.jobs.create İzinleri yönetme hakkında ayrıntılı bilgi için BigQuery erişim denetimi dokümanlarına bakın. |
| Fiyatlandırma | Ticari Earth Engine kullanımı için kayıtlı bir proje kullanıyorsanız BigQuery tablosunu okumayla ilişkili ek Earth Engine maliyeti yoktur ancak Earth Engine'da verileri işlemeyle ilgili EECU zamanında maliyetler oluşur. Tam fiyatlandırma şeması, Earth Engine planınıza göre belirlenir. Ticari olmayan kullanım için kayıtlı bir proje kullanıyorsanız BigQuery'den Earth Engine'a veri okumak için herhangi bir ücret ödemezsiniz. BigQuery kullanımı için ödeme yapmasanız da ticari bir ürün olan BigQuery için projenizin ilişkili bir faturalandırma hesabına sahip olması gerekir. Faturalandırma hesapları hakkında daha fazla bilgi edinmek için faturalandırmayı etkinleştirme, devre dışı bırakma veya değiştirme ile ilgili dokümanları inceleyin. NOT: Özel Önizleme'de BigQuery veri akışı için de ücretlendirilebilirsiniz. |
| Sınırlar | Özellik koleksiyonu filtreleri BigQuery'ye gönderilir ve orada uygulanır. BigQuery, alınan filtre yan tümceleri için bir boyut sınırına sahiptir. "Filtre çok büyük" hata mesajını görüyorsanız filtreyi basitleştirmeyi deneyin. Bu sınıra ulaşmanın yaygın nedenlerinden biri, Earth Engine'daki .filterBounds() çağrısında kullanılan karmaşık bir geometri olabilir. |
Earth Engine'dan BigQuery sorguları çalıştırma
ee.FeatureCollection.runBigQuery() işlevi, bir SQL sorgusunu doğrudan BigQuery tablolarına göre değerlendirmek ve sonuçları Earth Engine FeatureCollection olarak almak için BigQuery hesaplamasını tetikler.
JavaScript
// Construct a BigQuery query. var query = 'SELECT * FROM my_project.my_dataset.my_table WHERE area > 1000'; // Run the query and retrieve the results as a FeatureCollection. var features = ee.FeatureCollection.runBigQuery(query); // Print the first feature. print(features.first());
Python
# Construct a BigQuery query. query = 'SELECT * FROM my_project.my_dataset.my_table WHERE area > 1000' # Run the query and retrieve the results as a FeatureCollection. features = ee.FeatureCollection.runBigQuery(query) # Print the first feature. print(features.first())
Maliyetler
Bu işlevi kullanmak için faturalandırma hesabı gereklidir.
Earth Engine
Ticari Earth Engine kullanımı için kayıtlı bir proje kullanıyorsanız BigQuery tablosu çalıştırmakla ilişkili ek Earth Engine maliyeti yoktur ancak Earth Engine'da verileri işlemeyle ilgili EECU süresi maliyetleri ödersiniz. Tam fiyatlandırma şeması, Earth Engine planınıza göre belirlenir.
Ticari olmayan kullanım için kayıtlı bir proje kullanıyorsanız BigQuery'den Earth Engine'a veri okumak için herhangi bir ücret ödemezsiniz.
BigQuery
Bu yöntem, fiyatlandırma planınıza (isteğe bağlı veya slotlu) göre BigQuery ücretlerine neden olur. BigQuery rezervasyonunuz varsa bu yöntemi kullandığınızda ek isteğe bağlı ücretler alınmaz.
| Konu | Ayrıntılar |
|---|---|
| Ön koşullar | Bu işlevi kullanmak için bir faturalandırma hesabı ve BigQuery API'nin etkinleştirilmiş olması gerekir. |
| İzinler | Earth Engine hizmet hesabının hem BigQuery'yi hem de Earth Engine'ı kullanmak için gerekli izinlere sahip olduğundan emin olun.
Kimlik doğrulama için kullanılan kullanıcı kimlik bilgilerinin bigquery.jobs.create ve bigquery.jobs.get izinlerine sahip olması gerekir.
İzinleri yönetme hakkında ayrıntılı bilgi için BigQuery erişim denetimi belgelerine bakın. |
| Fiyatlandırma | Bu yöntem, fiyatlandırma planınıza (isteğe bağlı veya slotlu) göre BigQuery ücretlerine neden olur. BigQuery rezervasyonunuz varsa bu yöntemi kullandığınızda ek isteğe bağlı ücretler alınmaz. Ticari Earth Engine kullanımı için kayıtlı bir proje kullanıyorsanız BigQuery tablosu çalıştırmakla ilişkili ek Earth Engine maliyeti yoktur ancak Earth Engine'da verileri işlemeyle ilgili EECU süresi maliyetleri oluşur. Tam fiyatlandırma şeması, Earth Engine planınıza göre belirlenir. Ticari olmayan kullanım için kayıtlı bir proje kullanıyorsanız BigQuery'den Earth Engine'a veri okumak için herhangi bir ücret ödemezsiniz. |
Performans
Sonuçların Earth Engine'a döndürülmesinin performansı, BigQuery'deki sorgu optimizasyonuna ek olarak sonuçların boyutuna (yani BigQuery'den okunan bayt miktarına) ve elde edilen geometrilerin karmaşıklığına bağlıdır.
Filtreler
Filtrelemeyle ilgili en iyi uygulamalar şunlardır:
- Filtreleri erken ve sık uygulayın: Filtreleri veri işleme ardışık düzeninin mümkün olduğunca erken bir aşamasında, ideal olarak BigQuery SQL sorgularınızda uygulayın. Bu sayede, Earth Engine tarafından aktarılan ve işlenen veri miktarı azalır.
- Seçiciliği artırın: Daha küçük ve daha spesifik bir veri alt kümesini seçen filtreler oluşturun. Gereksiz verileri alan aşırı geniş filtrelerden kaçının.
- Filtreleri birleştirin: Sonuçları etkili bir şekilde daraltmak için birden fazla filtre koşulunu birlikte kullanın.
- Basitleştirin: Mümkün olduğunda, filtre dizesi boyutu için 1 MB sınırını aşmamak amacıyla karmaşık filtreleri daha basit koşullara ayırın.
- Küme oluşturma: Coğrafi sorgular, kümelenmiş sütunlara kıyasla daha yüksek performans gösterebilir.
- BigQuery'de filtrelemeyi tercih edin: Veri boyutunu azaltmak için Earth Engine'da daha fazla işleme yapmadan önce ilk filtrelemeyi BigQuery'de gerçekleştirmek her zaman daha iyidir. Bu mümkün değilse BigQuery'den veri yükledikten sonra Earth Engine komut dosyanızda son filtre olarak ek filtreler uygulayın.
Sistem genelindeki sınırlar
- 400 GB tablo boyutu sınırı
- Earth Engine, 400 GB'tan büyük tabloların okunmasına izin vermez.
- 10 GB ara tablo boyutları
- Her sorgu sonucu 10 GB ile sınırlıdır. Örneğin,
LIMITveWHEREyan tümceleri ekleyerek yalnızca gerekli sütunları seçerek sorgunuzu daha seçici hale getirin. - Earth Engine, BigQuery'de taranacak veri miktarı için bir sınır uygular.
- Her sorgu sonucu 10 GB ile sınırlıdır. Örneğin,
- Dönüşümden sonra filtre dizesi boyutu için 1 MB sınırı
- Karmaşık filtreler, sınırı aşan büyük filtre dizelerine neden olabilir.
- Zaman aşımları
- Earth Engine, sorgulara zaman aşımı uygular.Bu zaman aşımı, alana (ör. toplu, online) bağlı olarak değişiklik gösterebilir.
- BigQuery sınırları
- Sorgu işi sınırlamaları hakkında ayrıntılı bilgi için BigQuery kota dokümanlarını inceleyin.
Maliyet kontrolleri
BigQuery ile Earth Engine arasında veri taşımak genellikle doğrudan maliyete neden olmaz. Ancak aktarılan verilerin boyutu hem BigQuery hem de Earth Engine'daki işleme maliyetlerini etkileyebilir.
Bir sorgu BigQuery tarafında işlem içeriyorsa BigQuery yapılandırmanıza göre BigQuery ücretleri alınır.
Bir sorgu Earth Engine'da işleme içeriyorsa ve projeniz ticari kullanım için kayıtlıysa Earth Engine faturalandırma yapılandırmanıza göre Earth Engine EECU süresi ücretleri ödersiniz.
Günlükler ve hata ayıklama
Okuma işlemleri
ee.FeatureCollection.loadBigQueryTable() kullanılarak BigQuery'den veri okurken ilgili işlem BigQuery'de açıkça iş olarak günlüğe kaydedilmez. Bu, karşılık gelen BigQuery okuma işleri olmayan başka günlük ayrıntıları (ör. Cloud denetleme günlükleri) görebileceğiniz anlamına gelir.
Sorgu geçmişi
ee.FeatureCollection.runBigQuery() kullanılarak yürütülen sorgular, projenizin BigQuery sorgu geçmişine kaydedilir. Sorgu geçmişinize Cloud Console'daki BigQuery kullanıcı arayüzü üzerinden erişebilirsiniz.