Sử dụng Google Earth Engine với Module Bundler


Sử dụng Google Earth Engine với Module Bundler

Sử dụng Google Earth Engine với Module Bundler

Khi sử dụng thư viện Google Earth Engine trên Client (package @google/earthengine ), dựa trên example về kết nối trên client của Google:
Ta có thể viết lại tương tự:
const CLIENT_ID = process.env.CLIENT_ID
import ee from '@google/earthengine'

const onImmediateFailed = () => {
  ee.data.authenticateViaPopup(function () {
    runAnalysis()
  })
}

const runAnalysis = () => {
	ee.initialize()
	console.log('Connection successful!')
}

export const authenticate = () => {
  return new Promise((resolve) => {
    ee.data.authenticate(
      CLIENT_ID,
      runAnalysis,
      null,
      null,
      onImmediateFailed
    )
  })
}
Mọi thứ đều ổn, đoạn text "Connection successful!" sẽ hiện nếu ta F12, nhưng nếu ta gọi bất kì một phương thức nào, chẳng hạn:
const collection = ee.ImageCollection('MODIS/006/MOD13A2')
                         .filterDate('2018-01-01', '2019-01-01')
                         .select('NDVI')

const mapObj = collection.mean()
Sẽ xuất hiện lỗi sau:
notion image
Lỗi này xảy ra khi ta sử dụng các trình đóng gói (Webpack, ESBuild,....), thường phổ biến khi dùng một số Front-End framework như React, Vue,.... được install từ CLI đi kèm với module bundler (create-react-app, vitejs, vue-cli,...)
Để sửa lỗi trên, ta chỉ cần khai báo object ee như biến toàn cục (global), chẳng hạn:
// ...
const runAnalysis = () => {
	ee.initialize()
	window.ee = ee
}
//....