Earth Engine dan BigQuery

Dokumen ini memberikan panduan tentang cara mengintegrasikan Google Earth Engine (EE) dengan BigQuery (BQ) untuk analisis geospasial yang efisien. Panduan ini mencakup transfer data antara dua platform, pertimbangan performa, batasan, dan implikasi biaya.

Apa itu BigQuery?

BigQuery adalah data warehouse Google yang terkelola sepenuhnya dan serverless yang memungkinkan analisis yang dapat diskalakan pada data berukuran petabyte. BigQuery GIS unggul dalam kueri SQL berkecepatan tinggi dan mendukung data geospasial.

Kapan saya harus menggunakan BigQuery atau Earth Engine?

BigQuery Earth Engine
Jenis data Data vektor analitik terstruktur. Mendukung operasi geospasial pada data GEOGRAPHY. Sebagian besar data raster, tetapi juga mendukung data vektor.
Memproses Kueri berbasis SQL, yang dioptimalkan untuk agregasi dan join skala besar. Integrasi mendalam dengan Machine Learning BQ. JavaScript dan Python API untuk pemrosesan dan analisis raster, termasuk algoritma geospasial lanjutan dan machine learning.
Skala Penyimpanan dan analisis berskala petabyte. Berfokus pada pemrosesan data tabular. Penyimpanan dan analisis berskala petabyte. Berfokus pada analisis geografis, dengan batasan pada skala pemrosesan data vektor.
Kasus penggunaan Data warehouse, intelijen bisnis, analisis geospasial pada set data vektor yang besar. Analisis geospasial, penginderaan jarak jauh, pemantauan lingkungan, machine learning pada data raster.

Data vektor dan raster

Data vektor adalah titik, garis, dan poligon di permukaan bumi. Di BigQuery, data vektor disimpan menggunakan jenis data GEOGRAPHY; di Earth Engine, ini adalah objek ee.Geometry.

Data raster adalah petak-petak piksel yang diproyeksikan. Earth Engine dioptimalkan untuk menangani dan memproses set data raster yang besar.

Manfaat menggunakan kedua sistem

Skalabilitas BigQuery memungkinkan Anda menggunakan set data berbentuk tabel yang besar yang mungkin sulit diproses hanya dalam Earth Engine, dan Earth Engine dapat mendukung pengayaan skala besar dan pemrosesan vektor ke raster yang tidak dapat dilakukan di BigQuery.

Earth Engine mendukung berbagai fungsi dan data geospasial yang lebih luas daripada BigQuery, tetapi BigQuery memiliki integrasi yang jauh lebih kaya dengan alat dan layanan lainnya.

Memindahkan data Earth Engine ke BigQuery

Earth Engine dapat mengekspor data langsung ke BigQuery untuk analisis lebih lanjut dan integrasi dengan set data lainnya.

Export.table.toBigQuery()

Gunakan fungsi Export.table.toBigQuery() untuk memicu tugas ekspor asinkron yang menulis hasil komputasi Earth Engine ke BigQuery. Tugas Earth Engine ini dapat dilihat dan dikontrol dari Tampilan tugas di Konsol Cloud atau di Editor Kode Earth Engine.

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()
      

Lihat dokumentasi fungsi lengkap untuk mengetahui informasi selengkapnya.

API Sinkron

Tidak ada konektor langsung dalam Earth Engine untuk menulis data secara sinkron langsung ke BigQuery. Anda dapat menggunakan library klien BigQuery untuk bahasa pilihan Anda (Python, Java, Go, dll.) untuk melakukan streaming data ke BigQuery, atau menggunakan RPC Storage API untuk transfer data real-time atau mendekati real-time.

Topik Detail
Prasyarat Project harus mengaktifkan BigQuery API dan BigQuery Storage API.
Izin Anda harus memiliki akses tulis pada set data BigQuery target dan izin untuk membuat tugas di project target. Lihat daftar izin yang diperlukan untuk mengetahui detailnya. Lihat dokumentasi kontrol akses BigQuery untuk mengetahui informasi mendetail tentang cara mengelola izin.
Harga Anda akan dikenai biaya untuk penggunaan BigQuery, termasuk penyimpanan dan analisis data Earth Engine apa pun yang Anda ekspor ke BigQuery. Untuk mengetahui detailnya, lihat harga ekspor Earth Engine ke BigQuery.
Batas Data yang dihasilkan harus sesuai dengan model tabel BigQuery dengan batas tambahan 8 MB per baris. Lihat juga kumpulan masalah umum untuk mengekspor data Earth Engine ke BigQuery.

Memuat data dari BigQuery secara langsung

Fungsi ee.FeatureCollection.loadBigQueryTable() memuat data langsung dari tabel BigQuery tanpa mengubahnya dalam BigQuery.

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())
      
Topik Detail
Prasyarat Project harus mengaktifkan BigQuery API dan BigQuery Storage API.
Izin Selain peran dan izin standar, Anda harus memiliki akses baca pada tabel BigQuery target dan izin untuk membuat sesi baca di project target. Izin BigQuery spesifik yang diperlukan adalah: - bigquery.tables.get - bigquery.tables.getData - bigquery.readSession.create - bigquery.jobs.create Lihat dokumentasi kontrol akses BigQuery untuk mengetahui informasi mendetail tentang cara mengelola izin.
Harga Jika Anda menggunakan project yang terdaftar untuk penggunaan Earth Engine komersial, tidak ada biaya Earth Engine tambahan yang terkait dengan pembacaan tabel BigQuery, tetapi Anda akan dikenai biaya waktu EECU yang terkait dengan pemrosesan data di Earth Engine. Skema harga yang tepat ditentukan oleh paket Earth Engine Anda. Jika menggunakan project yang terdaftar untuk penggunaan nonkomersial, Anda tidak akan dikenai biaya apa pun untuk membaca data dari BigQuery ke Earth Engine. Meskipun Anda tidak akan membayar penggunaan BigQuery, BigQuery sebagai produk komersial mengharuskan project Anda memiliki akun penagihan terkait. Untuk mempelajari akun penagihan lebih lanjut, lihat dokumentasi untuk mengaktifkan, menonaktifkan, atau mengubah penagihan. CATATAN: Dalam Pratinjau Pribadi, Anda juga dapat dikenai biaya untuk streaming data BigQuery.
Batas Filter koleksi fitur dikirim ke BigQuery dan diterapkan di sana. BigQuery memiliki batas ukuran untuk klausa filter yang diterima. Jika Anda melihat pesan error "filter terlalu besar", pertimbangkan untuk menyederhanakan filter. Salah satu sumber umum yang mencapai batas ini mungkin adalah geometri rumit yang digunakan dalam panggilan .filterBounds() di Earth Engine.

Menjalankan kueri BigQuery dari Earth Engine

Fungsi ee.FeatureCollection.runBigQuery() memicu komputasi BigQuery untuk mengevaluasi kueri SQL secara langsung terhadap tabel BigQuery dan mengambil hasilnya sebagai FeatureCollection Earth Engine.

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())
      

Biaya

Akun penagihan diperlukan untuk menggunakan fungsi ini.

Earth Engine

Jika Anda menggunakan project yang terdaftar untuk penggunaan Earth Engine komersial, tidak ada biaya Earth Engine tambahan yang terkait dengan pengoperasian tabel BigQuery, tetapi Anda akan dikenai biaya waktu EECU yang terkait dengan pemrosesan data di Earth Engine. Skema harga yang tepat ditentukan oleh paket Earth Engine Anda.

Jika menggunakan project yang terdaftar untuk penggunaan nonkomersial, Anda tidak akan dikenai biaya apa pun untuk membaca data dari BigQuery ke Earth Engine.

BigQuery

Metode ini menimbulkan tagihan BigQuery berdasarkan paket harga Anda (sesuai permintaan atau dengan slot). Jika Anda memiliki pemesanan BigQuery, penggunaan metode ini tidak akan menghasilkan biaya sesuai permintaan tambahan.

Topik Detail
Prasyarat Akun penagihan diperlukan untuk menggunakan fungsi ini, dan BigQuery API harus diaktifkan.
Izin Pastikan akun layanan Earth Engine memiliki izin yang diperlukan untuk menggunakan BigQuery dan Earth Engine. Kredensial pengguna yang digunakan untuk mengautentikasi harus memiliki izin bigquery.jobs.create dan bigquery.jobs.get. Lihat dokumentasi kontrol akses BigQuery untuk mengetahui informasi mendetail tentang cara mengelola izin.
Harga Metode ini menimbulkan tagihan BigQuery berdasarkan paket harga Anda (sesuai permintaan atau dengan slot). Jika Anda memiliki pemesanan BigQuery, penggunaan metode ini tidak akan menghasilkan tagihan on-demand tambahan. Jika Anda menggunakan project yang terdaftar untuk penggunaan Earth Engine komersil, tidak ada biaya Earth Engine tambahan yang terkait dengan pengoperasian tabel BigQuery, tetapi Anda akan dikenai biaya waktu EECU yang terkait dengan pemrosesan data di Earth Engine. Skema harga yang tepat ditentukan oleh paket Earth Engine Anda. Jika menggunakan project yang terdaftar untuk penggunaan nonkomersial, Anda tidak akan dikenai biaya apa pun untuk membaca data dari BigQuery ke Earth Engine.

Performa

Selain pengoptimalan kueri di BigQuery, performa menampilkan hasil ke Earth Engine adalah fungsi dari ukuran hasil (yaitu, jumlah byte yang dibaca dari BigQuery) dan kompleksitas geometri yang dihasilkan.

Filter

Praktik terbaik untuk pemfilteran meliputi:

  • memfilter lebih awal dan lebih sering: Terapkan filter sedini mungkin dalam pipeline pemrosesan data, idealnya dalam kueri SQL BigQuery Anda. Hal ini mengurangi jumlah data yang ditransfer dan diproses oleh Earth Engine.
  • Meningkatkan selektivitas: Buat filter yang memilih subset data yang lebih kecil dan lebih spesifik. Hindari filter yang terlalu luas yang mengambil data yang tidak diperlukan.
  • Menggabungkan filter: Gunakan beberapa kondisi filter secara bersamaan untuk mempersempit hasil secara efektif.
  • Sederhanakan: Jika memungkinkan, bagi filter yang kompleks menjadi kondisi yang lebih sederhana untuk menghindari batas 1 MB untuk ukuran string filter.
  • Pengelompokan: Kueri geospasial dapat memiliki performa yang lebih baik pada kolom yang dikelompokkan.
  • Memilih pemfilteran di BigQuery: Untuk mengurangi ukuran data, sebaiknya lakukan pemfilteran awal di BigQuery sebelum pemrosesan lebih lanjut di Earth Engine. Jika tidak memungkinkan, terapkan filter tambahan sebagai filter pasca-filter dalam skrip Earth Engine Anda setelah memuat data dari BigQuery.

Batas seluruh sistem

  • Batas ukuran tabel 400 GB
    • Earth Engine tidak mengizinkan pembacaan tabel yang lebih besar dari 400 GB.
  • Ukuran tabel perantara 10 GB
    • Setiap hasil kueri dibatasi hingga 10 GB. Buat kueri Anda lebih selektif dengan hanya memilih kolom yang diperlukan, misalnya dengan menambahkan klausa LIMIT dan WHERE.
    • Earth Engine memberlakukan batas jumlah data yang dipindai di BigQuery.
  • Batas 1 MB untuk ukuran string filter setelah transformasi
    • Filter yang kompleks dapat menyebabkan string filter besar melebihi batas.
  • Waktu tunggu
    • Earth Engine menerapkan waktu tunggu ke kueri, yang dapat bervariasi bergantung pada lingkungan (misalnya, batch, online).
  • Batas BigQuery

Kontrol biaya

Memindahkan data antara BigQuery dan Earth Engine biasanya tidak dikenai biaya langsung. Namun, ukuran data yang ditransfer dapat memengaruhi biaya pemrosesan di BigQuery dan Earth Engine.

Jika kueri melibatkan pemrosesan di sisi BigQuery, kueri tersebut akan dikenai biaya BigQuery sesuai dengan konfigurasi BigQuery Anda.

Jika kueri melibatkan pemrosesan dalam Earth Engine dan project Anda terdaftar untuk penggunaan komersial, Anda akan dikenai biaya waktu EECU Earth Engine sesuai dengan konfigurasi penagihan Earth Engine Anda.

Log dan proses debug

Operasi baca

Saat membaca data dari BigQuery menggunakan ee.FeatureCollection.loadBigQueryTable(), operasi yang sesuai tidak dicatat ke dalam log secara eksplisit sebagai tugas di BigQuery. Artinya, Anda mungkin melihat detail logging lain (seperti log audit Cloud) yang tidak memiliki tugas baca BigQuery yang sesuai.

Histori kueri

Kueri yang dieksekusi menggunakan ee.FeatureCollection.runBigQuery() dicatat dalam histori kueri BigQuery project Anda. Anda dapat mengakses histori kueri melalui UI BigQuery di konsol Cloud.