این سند راهنمایی در مورد ادغام موتور Google Earth (EE) با BigQuery (BQ) برای تجزیه و تحلیل جغرافیایی کارآمد ارائه می دهد. این انتقال داده بین دو پلتفرم، ملاحظات عملکرد، محدودیتها و پیامدهای هزینه را پوشش میدهد.
BigQuery چیست؟
BigQuery انبار داده بدون سرور و کاملاً مدیریت شده گوگل است که تجزیه و تحلیل مقیاس پذیر را بر روی پتابایت داده امکان پذیر می کند. در پرس و جوهای پرسرعت SQL برتری دارد و از داده های مکانی پشتیبانی می کند.
چه زمانی باید از BigQuery یا Earth Engine استفاده کنم؟
| BigQuery | موتور زمین | |
|---|---|---|
| نوع داده | داده های برداری تحلیلی و ساختار یافته در درجه اول. از عملیات جغرافیایی بر روی داده های GEOGRAPHY پشتیبانی می کند. | در درجه اول داده های شطرنجی است، اما از داده های برداری نیز پشتیبانی می کند. |
| پردازش | پرس و جوهای مبتنی بر SQL، بهینهسازی شده برای ادغامها و پیوستنها در مقیاس بزرگ. ادغام عمیق با BQ Machine Learning. | APIهای جاوا اسکریپت و پایتون برای پردازش و تحلیل شطرنجی، از جمله الگوریتمهای پیشرفته جغرافیایی و یادگیری ماشین. |
| مقیاس | ذخیره سازی و تجزیه و تحلیل در مقیاس پتابایت روی پردازش داده های جدولی تمرکز کنید. | ذخیره سازی و تجزیه و تحلیل در مقیاس پتابایت تمرکز بر تجزیه و تحلیل جغرافیایی، با محدودیت در مقیاس پردازش داده های برداری. |
| موارد استفاده کنید | ذخیره سازی داده ها، هوش تجاری، تجزیه و تحلیل جغرافیایی در مجموعه داده های برداری بزرگ. | تجزیه و تحلیل جغرافیایی، سنجش از دور، پایش محیطی، یادگیری ماشین بر روی داده های شطرنجی. |
داده های برداری و شطرنجی
داده های برداری نقاط، خطوط و چند ضلعی های روی سطح زمین هستند. در BigQuery، داده های برداری با استفاده از نوع داده GEOGRAPHY ذخیره می شود. در Earth Engine، این اشیاء ee.Geometry هستند.
دادههای شطرنجی شبکههایی از پیکسلها هستند. Earth Engine برای مدیریت و پردازش مجموعه داده های شطرنجی بزرگ بهینه شده است.
مزایای استفاده از هر دو سیستم
مقیاس پذیری BigQuery به شما امکان می دهد با مجموعه داده های جدولی عظیمی کار کنید که پردازش آنها فقط در Earth Engine ممکن است چالش برانگیز باشد، و Earth Engine می تواند غنی سازی در مقیاس بزرگ و پردازش برداری به شطرنجی را که در BigQuery امکان پذیر نیست، تقویت کند.
Earth Engine نسبت به BigQuery از طیف گستردهتری از توابع و دادههای مکانی پشتیبانی میکند، اما BigQuery ادغام بسیار غنیتری با سایر ابزارها و خدمات دارد.
داده های Earth Engine را به BigQuery منتقل کنید
Earth Engine می تواند داده ها را مستقیماً به BigQuery برای تجزیه و تحلیل بیشتر و ادغام با مجموعه داده های دیگر صادر کند.
Export.table.toBigQuery()
از تابع Export.table.toBigQuery() برای راه اندازی کارهای صادرات ناهمزمان که نتایج محاسبات Earth Engine را در BigQuery می نویسند، استفاده کنید. این وظایف Earth Engine را می توان از نمای Task در Cloud Console یا در Earth Engine Code Editor مشاهده و کنترل کرد.
جاوا اسکریپت
// 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 });
پایتون
# 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()
برای اطلاعات بیشتر به مستندات عملکرد کامل مراجعه کنید.
APIهای سنکرون
هیچ رابط مستقیمی در Earth Engine برای نوشتن همزمان داده ها به طور مستقیم در BigQuery وجود ندارد. میتوانید از کتابخانه مشتری BigQuery برای زبان دلخواه خود (Python، Java، Go، و غیره) برای پخش جریانی دادهها در BigQuery استفاده کنید، یا از API ذخیرهسازی RPC برای انتقال دادههای همزمان یا تقریباً همزمان استفاده کنید.
| موضوع | جزئیات |
|---|---|
| پیش نیازها | پروژه باید دارای BigQuery API و BigQuery Storage API فعال باشد. |
| مجوزها | شما باید دسترسی نوشتن به مجموعه داده BigQuery و اجازه ایجاد شغل در پروژه هدف داشته باشید. لیست مجوزهای لازم را برای جزئیات بیشتر ببینید. برای اطلاعات دقیق در مورد مدیریت مجوزها به مستندات کنترل دسترسی BigQuery مراجعه کنید. |
| قیمت گذاری | برای استفاده از BigQuery، از جمله ذخیره و تجزیه و تحلیل دادههای Earth Engine که به BigQuery صادر میکنید، هزینههایی متحمل خواهید شد. برای جزئیات، به قیمت صادرات Earth Engine به BigQuery مراجعه کنید. |
| محدودیت ها | داده های به دست آمده باید با مدل جدول BigQuery با محدودیت اضافی 8 مگابایت در هر ردیف مطابقت داشته باشد. همچنین به مجموعه مشکلات شناخته شده برای صادر کردن داده های Earth Engine به BigQuery مراجعه کنید. |
داده ها را مستقیماً از BigQuery بارگیری کنید
تابع ee.FeatureCollection.loadBigQueryTable() دادهها را مستقیماً از جدول BigQuery بارگیری میکند بدون اینکه آنها را در BigQuery تبدیل کند.
جاوا اسکریپت
// 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);
پایتون
# 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())
| موضوع | جزئیات |
|---|---|
| پیش نیازها | پروژه باید دارای BigQuery API و BigQuery Storage API فعال باشد. |
| مجوزها | علاوه بر نقشها و مجوزهای استاندارد ، باید دسترسی خواندن در جدول BigQuery هدف و اجازه ایجاد جلسات خواندن در پروژه هدف داشته باشید. مجوزهای خاص BigQuery مورد نیاز عبارتند از: - bigquery.tables.get - bigquery.tables.getData - bigquery.readSession.create - bigquery.jobs.create برای اطلاعات دقیق در مورد مدیریت مجوزها به مستندات کنترل دسترسی BigQuery مراجعه کنید. |
| قیمت گذاری | اگر از پروژه ای استفاده می کنید که برای استفاده تجاری Earth Engine ثبت شده است، هیچ هزینه اضافی Earth Engine مربوط به خواندن جدول BigQuery وجود ندارد، اما هزینه های زمان EECU مربوط به پردازش داده ها در Earth Engine را متحمل خواهید شد. طرح دقیق قیمت گذاری توسط طرح Earth Engine شما تعیین می شود. اگر از پروژهای استفاده میکنید که برای استفاده غیرتجاری ثبت شده است، برای خواندن دادهها از BigQuery در Earth Engine هیچ هزینهای دریافت نمیکنید. حتی اگر برای استفاده از BigQuery هزینه ای پرداخت نخواهید کرد، BigQuery به عنوان یک محصول تجاری نیاز دارد که پروژه شما یک حساب صورتحساب مرتبط داشته باشد. برای کسب اطلاعات بیشتر درباره حسابهای صورتحساب، به اسناد فعال، غیرفعال یا تغییر صورتحساب مراجعه کنید. توجه: در پیشنمایش خصوصی، ممکن است برای جریان داده BigQuery نیز هزینه دریافت کنید. |
| محدودیت ها | فیلترهای مجموعه ویژگی ها به BigQuery ارسال می شوند و در آنجا اعمال می شوند. BigQuery دارای محدودیت اندازه برای بندهای فیلتر دریافتی است. اگر پیام خطای «فیلتر خیلی بزرگ» را مشاهده کردید، فیلتر را ساده کنید. یکی از منابع رایج برای رسیدن به این حد ممکن است هندسه پیچیده ای باشد که در فراخوانی .filterBounds() در Earth Engine استفاده می شود. |
کوئری های BigQuery را از Earth Engine اجرا کنید
تابع ee.FeatureCollection.runBigQuery() محاسبات BigQuery را برای ارزیابی یک پرس و جوی SQL مستقیماً در برابر جداول BigQuery و بازیابی نتایج به عنوان یک FeatureCollection موتور زمین انجام می دهد.
جاوا اسکریپت
// 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());
پایتون
# 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())
هزینه ها
برای استفاده از این عملکرد یک حساب صورتحساب ضروری است.
موتور زمین
اگر از پروژه ای استفاده می کنید که برای استفاده تجاری Earth Engine ثبت شده است، هیچ هزینه اضافی Earth Engine مربوط به اجرای جدول BigQuery وجود ندارد، اما هزینه های زمان EECU مربوط به پردازش داده ها در Earth Engine را متحمل خواهید شد. طرح دقیق قیمت گذاری توسط طرح Earth Engine شما تعیین می شود.
اگر از پروژهای استفاده میکنید که برای استفاده غیرتجاری ثبت شده است، برای خواندن دادهها از BigQuery در Earth Engine هیچ هزینهای دریافت نمیکنید.
BigQuery
این روش هزینههای BigQuery را بر اساس طرح قیمتگذاری شما (در صورت تقاضا یا با اسلات) متحمل میشود. اگر رزرو BigQuery دارید، استفاده از این روش هزینههای درخواستی اضافی ایجاد نمیکند.
| موضوع | جزئیات |
|---|---|
| پیش نیازها | برای استفاده از این تابع یک حساب صورتحساب ضروری است و BigQuery API باید فعال باشد. |
| مجوزها | اطمینان حاصل کنید که حساب خدمات Earth Engine مجوزهای لازم برای استفاده از BigQuery و Earth Engine را دارد. اعتبار کاربری مورد استفاده برای احراز هویت باید دارای مجوز bigquery.jobs.create و bigquery.jobs.get باشد. برای اطلاعات دقیق در مورد مدیریت مجوزها به مستندات کنترل دسترسی BigQuery مراجعه کنید. |
| قیمت گذاری | این روش هزینههای BigQuery را بر اساس طرح قیمتگذاری شما (در صورت تقاضا یا با اسلات) متحمل میشود. اگر رزرو BigQuery دارید، استفاده از این روش هزینههای درخواستی اضافی ایجاد نمیکند. اگر از پروژه ای استفاده می کنید که برای استفاده تجاری Earth Engine ثبت شده است، هیچ هزینه اضافی Earth Engine مربوط به اجرای جدول BigQuery وجود ندارد، اما هزینه های زمان EECU مربوط به پردازش داده ها در Earth Engine را متحمل خواهید شد. طرح دقیق قیمت گذاری توسط طرح Earth Engine شما تعیین می شود. اگر از پروژهای استفاده میکنید که برای استفاده غیرتجاری ثبت شده است، برای خواندن دادهها از BigQuery در Earth Engine هیچ هزینهای دریافت نمیکنید. |
عملکرد
علاوه بر بهینه سازی پرس و جو در BigQuery ، عملکرد بازگرداندن نتایج به Earth Engine تابعی از اندازه نتایج (یعنی مقدار بایت های خوانده شده از BigQuery) و پیچیدگی هندسه های حاصل است.
فیلترها
بهترین روش ها برای فیلتر کردن عبارتند از:
- فیلتر کردن زودهنگام و اغلب: فیلترها را تا حد امکان در مراحل اولیه پردازش داده اعمال کنید، به طور ایده آل در جستارهای BigQuery SQL خود. این مقدار داده های منتقل شده و پردازش شده توسط Earth Engine را کاهش می دهد.
- افزایش گزینش پذیری: فیلترهایی را ایجاد کنید که زیر مجموعه داده های کوچکتر و خاص تری را انتخاب می کنند. از فیلترهای بیش از حد گسترده ای که داده های غیر ضروری را بازیابی می کنند اجتناب کنید.
- فیلترها را ترکیب کنید: از شرایط فیلتر چندگانه در ارتباط استفاده کنید تا نتایج را به طور موثر محدود کنید.
- ساده سازی: در صورت امکان، فیلترهای پیچیده را به شرایط ساده تر تقسیم کنید تا از حد مجاز 1 مگابایت برای اندازه رشته فیلتر جلوگیری کنید.
- خوشه بندی: پرس و جوهای مکانی می توانند عملکرد بیشتری نسبت به ستون های خوشه ای داشته باشند.
- ترجیح دادن فیلتر در BigQuery: برای کاهش اندازه داده ها، همیشه بهتر است قبل از پردازش بیشتر در Earth Engine، فیلتر اولیه را در BigQuery انجام دهید. وقتی این امکان وجود ندارد، پس از بارگیری دادهها از BigQuery، فیلترهای اضافی را به عنوان فیلترهای پست در اسکریپت Earth Engine خود اعمال کنید.
محدودیت های سیستم
- محدودیت اندازه جدول 400 گیگابایت
- Earth Engine اجازه خواندن جداول بزرگتر از 400 گیگابایت را نمی دهد.
- اندازه های میز متوسط 10 گیگابایتی
- هر نتیجه پرس و جو به 10 گیگابایت محدود می شود. با انتخاب تنها ستون های ضروری، برای مثال با افزودن بندهای
LIMITوWHERE، درخواست خود را انتخابی تر کنید. - Earth Engine محدودیتی بر میزان داده های اسکن شده در BigQuery اعمال می کند.
- هر نتیجه پرس و جو به 10 گیگابایت محدود می شود. با انتخاب تنها ستون های ضروری، برای مثال با افزودن بندهای
- محدودیت 1 مگابایت برای اندازه رشته فیلتر پس از تبدیل
- فیلترهای پیچیده می توانند منجر به فراتر رفتن رشته های فیلتر بزرگ از حد شوند.
- تایم اوت ها
- Earth Engine زمانبندیهایی را برای درخواستها اعمال میکند، که بسته به حوزه (مثلاً دستهای، آنلاین) میتواند متفاوت باشد.
- محدودیت های BigQuery
- برای جزئیات در مورد محدودیتهای شغلی درخواستی، به مستندات سهمیه BigQuery مراجعه کنید.
کنترل هزینه
انتقال داده ها بین BigQuery و Earth Engine معمولاً هزینه مستقیمی را متحمل نمی شود. با این حال، اندازه داده های منتقل شده می تواند بر هزینه های پردازش در BigQuery و Earth Engine تأثیر بگذارد.
اگر درخواستی شامل پردازش در سمت BigQuery باشد، طبق پیکربندی BigQuery شما هزینههای BigQuery را متحمل میشود.
اگر درخواستی شامل پردازش در Earth Engine باشد و پروژه شما برای استفاده تجاری ثبت شده باشد، طبق پیکربندی صورتحساب Earth Engine، هزینههای زمان EECU را متحمل خواهید شد.
گزارش ها و اشکال زدایی
عملیات را بخوانید
هنگام خواندن داده ها از BigQuery با استفاده از ee.FeatureCollection.loadBigQueryTable() ، عملیات مربوطه به صراحت به عنوان یک کار در BigQuery ثبت نمی شود. این بدان معناست که ممکن است سایر جزئیات ثبتنام (مانند گزارشهای حسابرسی ابری) را ببینید که هیچ کار خواندنی مربوط به BigQuery ندارند.
تاریخچه پرس و جو
کوئری هایی که با استفاده از ee.FeatureCollection.runBigQuery() اجرا می شوند در تاریخچه پرس و جوی BigQuery پروژه شما ثبت می شوند. میتوانید از طریق رابط کاربری BigQuery در کنسول Cloud به تاریخچه سؤالات خود دسترسی پیدا کنید.