قبلاز اینکه بتوانید ازطریق کتابخانه کارخواه درخواستهایی به Earth Engine ارسال کنید، باید اصالتسنجی کنید و از اطلاعات اعتباری حاصل برای مقداردهی اولیه کارخواه Earth Engine استفاده کنید.
Earth Engine Code Editor و جاوا اسکریپت
اصالتسنجی و مقداردهی اولیه بهطور خودکار در Code Editor انجام میشود. میتوانید انتخاب کنید که درخواستها ازطریق «پروژه ابری» از ورود به سیستم شما در بالا سمت چپ ویرایشگر کد هدایت شوند.
اگر از JavaScript API (خارج از «ویرایشگر کد») استفاده میکنید، از یکی از
کمککنندههای اصالتسنجی در ee.data (برای مثال،
ee.data.authenticateViaPopup())
و سپس ee.initialize() استفاده کنید، همانطور که در
این مثال نشان داده شده است.
پایتون و خط فرمان
پیشاز استفاده از کتابخانه کارخواه Python در Earth Engine، باید اصالتسنجی کنید (هویتتان را درستیسنجی کنید) و از اطلاعات اعتباری حاصل برای مقداردهی اولیه کارخواه Python استفاده کنید. جریانهای اصالتسنجی از پروژههای Cloud برای اصالتسنجی استفاده میکنند، و برای استفاده بدون پرداخت (رایگان، غیرتجاری) و همچنین استفاده با پرداخت استفاده میشوند. برای اصالتسنجی و مقداردهی اولیه، این دستور را اجرا کنید
ee.Authenticate()
ee.Initialize(project='my-project')
این کار ابتدا بهترین حالت اصالتسنجی را برای محیط شما انتخاب میکند و
از شما میخواهد دسترسی به اسکریپتهایتان را تأیید کنید. اگر اعتبارنامه ازقبل وجود داشته باشد،
بهطور خودکار دوباره استفاده میشود - برای ایجاد اعتبارنامه جدید،
ee.Authenticate(force=True) را اجرا کنید.
مرحله مقداردهی اولیه تأیید میکند که اطلاعات اعتباری معتبر وجود دارد، چه از ee.Authenticate() ایجاد شده باشد یا ازقبل بهعنوان اطلاعات اعتباری پیشفرض Google وجود داشته باشد. سپس
کتابخانه کارخواه Python را با روشهایی که سرور زیرینه
پشتیبانی میکند مقداردهی اولیه میکند. باید پروژهای را ارائه دهید که مالک آن هستید یا
اجازه استفاده از آن را دارید. برای ثبت پروژه و فعال کردن Earth Engine API، به راهاندازی پروژه Cloud مراجعه کنید. از این پروژه برای اجرای همه عملیات Earth Engine استفاده خواهد شد.
در خط فرمان، فراخوانی معادل earthengine authenticate است. اگر
اعتبارنامه منقضی یا نامعتبر است، ممکن است لازم باشد earthengine
authenticate --force را اجرا کنید. فراخوانیهای خط فرمان در هر تماس مقداردهی اولیه میشوند،
و میتوانید از آرگومان --project برای تنظیم پروژه استفاده کنید.
همچنین میتوانید با اجرای earthengine
set_project {my-project}، پروژهای را برای همه تماسهای آینده پیکربندی کنید. خط فرمان و ee.Initialize() هروقت پروژهای مستقیماً مشخص نشده باشد
از این استفاده خواهند کرد. اگر از اصالتسنجی ازطریق
gcloud (به زیر مراجعه کنید) استفاده میکنید، پروژهای که توسط gcloud auth application-default
set-quota-project {my-project} تنظیم شده است بهعنوان مورد نهایی استفاده خواهد شد.
جزئیات اصالتسنجی
هدف از جریانهای اصالتسنجی Earth Engine دریافت «توکن» امنیتی از حساب واردشده به سیستم شما است که میتواند برای دادن اجازه به اسکریپتهای شما برای دسترسی به دادههایتان ذخیره شود. به دلایل امنیتی، سیستم اصالتسنجی Google چنین کدهای امنیتی را فقط به سیستمهایی که میتوانند ایمن شوند ارسال میکند - یادداشتهای فنی زیر را ببینید.
بهدلیل حساسیت نسبت به نوع سیستمهای درگیر، روشهای مختلفی برای ادامه کار بسته به وضعیت خاص شما وجود دارد. اکثر گزینهها توسط پارامتر auth_mode کنترل میشوند: یا بهعنوان ee.Authenticate(auth_mode=...) یا earthengine authenticate --auth_mode=... در خط فرمان.
توجه داشته باشید که اگر اعتبارنامه Google ازقبل در محیط شما وجود داشته باشد، ممکن است اصلاً نیازی به فراخوانی ee.Authenticate() نداشته باشید. ماشینهای مجازی Google Cloud، App Engine، و محیطهای دیگر «اعتبارنامههای محیطی» قابلاستفاده ارائه میدهند و gcloud auth
application-default login نیز آنها را ایجاد خواهد کرد.
بااینحال، توصیه میشود ee.Authenticate() در ابتدای همه اسکریپتها قرار گیرد تا
سازگاری به حداکثر برسد. بدون پارامتر auth_mode، برای کار کردن در اکثر موقعیتها طراحی شده است، اما اگر حالت پیشفرض کار نکرد، جزئیات زیر را دنبال کنید.
حالت پیشفرض بهصورت زیر انتخاب میشود:
colabاگر در دفترچه Google Colab اجرا شودnotebookدرصورت اجرا در سایر دفترچههای Jupyter غیر Colablocalhostاگر مرورگر وب شناسایی شود و هیچ باینری gcloud نصب نشده باشد-
gcloud، درغیراینصورت. برای این حالت باید gcloud را نصب کنید.
جدول و راهنمای مرجع سریع
این راهنمای تصمیمگیری گزینههای احتمالی را درصورتیکه حالت پیشفرض انتخابشده
توسط ee.Authenticate() کار نکند، شرح میدهد. برای مثال، اگر در محیطهای دفتر یادداشت دیگری اجرا میکنید، ممکن است لازم باشد notebook را بهطور صریح مشخص کنید.
- محیط محلی.
- «محلی» یعنی اینکه شما کد را در پوسته Python یا دفترچه Python در دستگاهی که مقابلتان است اجرا میکنید - یا دقیقتر بگوییم، در همان دستگاهی که مرورگر وب شما در آن اجرا میشود. این شامل موقعیتهای رایانه از دور میشود که در آن هم Python و هم مرورگر در یک دستگاه (راهدور) قرار دارند.
- استفاده از
auth_mode=localhostآسانترین روش است و اگر gcloud نصب نشده باشد، بهطور پیشفرض انتخاب میشود، اما اسکریپت شما فقط در محیطهای محلی کار خواهد کرد. -
auth_mode=gcloudوauth_mode=notebookنیز دردسترس هستند.
- محیط ازراهدور.
- «ازراهدور» یعنی مرورگرتان در یک ماشین (محلی) است اما کدتان در جای دیگری اجرا میشود، مثلاً در ایستگاه کاری ازراهدور یا دفترچه یادداشت مبتنی بر وب.
- اگر در Colab هستید، از
auth_mode=colabاستفاده کنید؛ یا اگر لازم استscopesرا برای فراخوانی میاناهای برنامهسازی کاربردی دیگر تنظیم کنید، ازgcloudاستفاده کنید. - اگر میتوانید gcloud را هم در ماشین راه دور و هم در ماشین محلیتان نصب کنید،
از
auth_mode=gcloudاستفاده کنید. - اگر میتوانید از پروژه اصالتسنجی استفاده کنید (به زیر مراجعه کنید)، از
auth_mode=notebookاستفاده کنید. - درغیراینصورت، اگر نمیتوانید از پروژه استفاده کنید یا gcloud را نصب کنید یا از Colab استفاده کنید یا از مرورگر در همان ماشین استفاده کنید:
- (دوباره) با سرپرست درباره ایجاد پروژه صحبت کنید. برای مثال:
- از سرپرست بخواهید پروژهای را برای شما پیکربندی کند (بهعنوان «مالک» یا «ویرایشگر» یا «ویرایشگر پیکربندی OAuth»)
- یا از سرپرست بخواهید به شما اجازه دهد پروژه ایجاد کنید.
این جدول نشان میدهد کدام ترکیب از ویژگیها توسط هر حالت پشتیبانی میشود.
| برای محلی یا از راه دور؟ | پروژه لازم است | Scopes Settable | Local CLI Needed | مالک پروژه | |
|---|---|---|---|---|---|
localhost |
محلی | س | س | شمال | شمال |
colab |
دورکاری | س | شمال | شمال | شمال |
gcloud |
هر دو | س | س | شمال | شمال |
notebook |
هر دو | س | س | شمال | س |
اعتبارنامههای «حسابهای سرویس» و Compute Engine
ee.Initialize() از اطلاعات اعتباری Earth Engine (که
ee.Authenticate() در ~/.config/earthengine/credentials ذخیره میکند) استفاده خواهد کرد یا
اطلاعات اعتباری را از google.auth.default() بازیابی میکند، اما درصورت لزوم میتوانید شناسه
credentials= را برای استفاده از اطلاعات اعتباری از جای دیگری ارسال کنید و این
پیشفرضها را دور بزنید.
اگر کد Python را که بدون نظارت اجرا خواهد شد اصالتسنجی میکنید، ممکن است بخواهید
بهجای حساب کاربری، با حساب سرویس اصالتسنجی کنید. برای استفاده از حسابهای سرویس با Earth Engine،
این
اسناد را ببینید. روشهای دیگر شامل
authenticate_service_account در ماژول اصالتسنجی Colab و روشهای
شرحدادهشده در راهنمای Cloud برای اصالتسنجی بهعنوان حساب
سرویس است.
اگر کدتان در ماشین مجازی Compute Engine اجرا میشود، حساب سرویس پیشفرضی برای محیط ایجاد میشود که ee.Initialize() بهطور پیشفرض از آن استفاده خواهد کرد. اگر «پروژه ابری» که VM ازطریق آن راهاندازی شده است برای استفاده با Earth Engine (تجاری یا غیرتجاری) ثبت نشده باشد، ممکن است لازم باشد حساب سرویس را برای استفاده از Earth Engine ثبت کنید.
جزئیات حالتها
auth_mode=colab. ee.Authenticate() با اجرای colab.auth.authenticate_user() درصورت لزوم، اعتبارنامههای پیشفرض پشتیبانیشده توسط Colab را ایجاد یا دریافت خواهد کرد. اعتبارنامهها همیشه از دامنه cloud-platform استفاده میکنند و همچنین میتوانند
برای فراخوانی دیگر Cloud APIها استفاده شوند.
auth_mode=gcloud. این کار اصالتسنجی را به ابزار gcloud واگذار میکند و مانند اجرای gcloud auth application-default login با دامنههای پیشفرض Earth Engine (earthengine، cloud-platform، و drive) یا دامنههای موجود در شناسه scopes است. حالت gcloud هم در موارد محلی و هم در موارد ازراهدور کار میکند.
دستورالعملهای گامبهگام برای حالت gcloud (موارد محلی و ازراهدور)
- تأیید کنید که gcloud در ماشین محلی نصب شده باشد.
- در پایانه،
gcloud helpرا اجرا کنید. اگر gcloud نصب نشده است، این دستورالعملها را برای نصب gcloud دنبال کنید.
- در پایانه،
- پایانه ماشین محلی
- در پایانه،
earthengine authenticateرا اجرا کنید. - خروجی فرمان نشان میدهد که از gcloud برای واکشی اطلاعات کاربری استفاده میشود.
- پنجره مرورگر در صفحه انتخاب حساب باز میشود. اگر مرورگر بهطور خودکار باز نشد، روی نشانی وب کلیک کنید.
- در پایانه،
- مرورگر: انتخاب حساب
- حسابی را که میخواهید برای اصالتسنجی استفاده شود انتخاب کنید.
- مرورگر: صفحه رضایت
- مشخص کنید که آیا مایل به اعطای دامنههای درخواستی هستید یا نه و روی «مجاز کردن» کلیک کنید.
- مرورگر: صفحه تأیید
- مرورگر صفحهای را نشان میدهد که تأیید میکند اصالتسنجی شدهاید و
فرمان
earthengine authenticateدر پنجره ترمینال شما «کد مجازسازی با موفقیت ذخیره شد» را گزارش میکند. - در موارد نادر، صفحه وب کدی به شما میدهد تا آن را در محیط Python جایگذاری کنید.
- مرورگر صفحهای را نشان میدهد که تأیید میکند اصالتسنجی شدهاید و
فرمان
- راهاندازی را ادامه دهید.
auth_mode=localhost. این جریان شبیه gcloud برای مواردی است که gcloud
نصب نشده است. این دستور همان مراحل gcloud را انجام میدهد، اما فقط برای
مورد محلی کار میکند. میتوانید شماره درگاه اینترنت اختیاری ارائه دهید، مثلاً
localhost:8086، یا از localhost:0 برای انتخاب خودکار درگاه استفاده کنید. درگاه پیشفرض
۸۰۸۵ است.
auth_mode=notebook. این حالت چندمنظوره برای کار در شرایطی طراحی شده است که
خطوط فرمان محلی دردسترس نیستند. این دکمه شما را به صفحه «اصالتسنج دفتر یادداشت» میفرستد که در آنجا باید یک «پروژه اصالتسنجی» را انتخاب یا ایجاد کنید - جزئیات و راهنمای عیبیابی را در زیر ببینید. پروژه
منتقلشده به ee.Initialize() لازم نیست با این مطابقت داشته باشد - میتوانید
همان پروژه را برای اصالتسنجی نگه دارید و درعینحال در پروژههای مختلف در
دفترهای یادداشت مختلف کار کنید. توصیه میشود پروژه را بهطور صریح به ee.Initialize() ارسال کنید، اما پروژه اصالتسنجی بهطور پیشفرض استفاده خواهد شد.
دستورالعملهای گامبهگام برای حالت دفتر یادداشت
- مرورگر: Notebook
- در سلول کد دفتر یادداشت، کد زیر را اجرا کنید تا جریان اصالتسنجی بااستفاده از حالت «دفتر یادداشت» شروع شود.
روی پیوند موجود در خروجی سلول کلیک کنید تا صفحه «اصالتسنج Notebook» در برگه جدیدی باز شود.import ee ee.Authenticate()
- در سلول کد دفتر یادداشت، کد زیر را اجرا کنید تا جریان اصالتسنجی بااستفاده از حالت «دفتر یادداشت» شروع شود.
- مرورگر: Notebook Authenticator
- بررسی کنید حساب کاربری صحیح فهرست شده باشد.
- یک «پروژه Google Cloud» برای استفاده در «اصالتسنجی» انتخاب کنید. اگر باید پروژه جدیدی ایجاد کنید، توصیه میکنیم از قرارداد نامگذاری «ee-xyz» استفاده کنید که xyz نام کاربری معمول شما در Earth Engine است. (اگر نمیتوانید «پروژه ابری» انتخاب یا ایجاد کنید، بخش عیبیابی زیر را ببینید.)
- روی «تولید کد» کلیک کنید.
- مرورگر: انتخاب حساب
- صفحه انتخاب حساب به شما نشان داده خواهد شد. روی حساب کاربریای که میخواهید از دفتر یادداشت به آن دسترسی اعطا کنید کلیک کنید.
- مرورگر: صفحه هشدار
- صفحه هشداری نشان داده میشود که بیان میکند Google این برنامه را ایجاد نکرده است (یعنی کد موجود در دفتر یادداشت). برای تأیید، روی «ادامه» کلیک کنید.
- مرورگر: صفحه رضایت
- مشخص کنید که آیا مایلید دامنههای درخواستی را اعطا کنید و روی ادامه کلیک کنید.
- مرورگر: صفحه کد مجوز
- کپی کردن کد درستیسنجی مجوز
- مرورگر: Notebook
- به برگه دفتر یادداشت برگردید و کد درستیسنجی را در خروجی سلول دفتر یادداشت جایگذاری کنید.
- برونداد سلول باید نشان دهد «Successfully saved authorization token.»
- راهاندازی را ادامه دهید.
حالت Notebook پارامتر quiet دارد که بهندرت استفاده میشود: اگر تنظیم شود،
«غیرتعاملی» اجرا میشود و از شما نمیخواهد کد اصالتسنجی را وارد کنید و منتظر نمیماند.
درعوض، فرمانی برای اجرا کردن جهت ذخیره کد ارائه میدهد.
پروژههای اصالتسنجی
باید مالک، ویرایشگر، یا ویرایشگر پیکربندی OAuth در پروژه اصالتسنجی استفادهشده در حالت دفتر یادداشت باشید. در بسیاری از موارد، بهویژه در تیمهای کوچکتر، پروژه اصالتسنجی که در صفحه «اصالتسنج دفتر یادداشت» استفاده میکنید میتواند همان پروژه اصلی باشد که برای کارهای دیگر استفاده میکنید.
بهدلیل نگرانیهای امنیتی، «پیکربندی کارخواه OAuth» در پروژه اصالتسنجی یک راهاندازی یکباره است. اگر شما یا کاربران دیگر به دلایل دیگری کارخواه OAuth را در پروژه راهاندازی کرده باشید، نمیتوان آن را برداشت و خطایی با این مضمون خواهید دید: «پیکربندی کارخواه OAuth2 ناسازگار است.» باید از پروژه دیگری برای اصالتسنجی استفاده کنید، یا از حالتهای colab، localhost، یا gcloud در بالا استفاده کنید.
جزئیات درباره دامنهها
تنظیمات اصالتسنجی پیشفرض Earth Engine شامل همه دامنههای دردسترس است، بنابراین اگر پیشفرضها نیازهای شما را برآورده میکند، میتوانید از این بخش رد شوید.
دامنههای Earth Engine: یک دامنه OAuth 2.0 مجموعه منابع و عملیاتی را که یک برنامه مجاز است ازطرف کاربر به آنها دسترسی داشته باشد، تعریف و محدود میکند. وقتی از OAuth برای اصالتسنجی با Earth Engine استفاده میکنید، باید یک یا چند مورد از دامنههای زیر را درخواست کنید:
-
https://www.googleapis.com/auth/earthengine: دسترسی خواندن و نوشتن به داراییها و منابع Earth Engine. برای ایجاد، اصلاح، یا حذف داراییها، مدیریت اجازههای دارایی، و اجرای تکالیف صادر کردن لازم است. -
https://www.googleapis.com/auth/earthengine.readonly: دسترسی فقط خواندنی به داراییهای Earth Engine.
هر دو دامنه امکان اجرای اسکریپتها و محاسبات (مانند ارزیابی عبارتها یا ارائه تجسمهای نقشه) را فراهم میکنند.
گسترههای Google Cloud و Drive: اگر پُرسمانها یا اسکریپتهای Earth Engine شما به دادهها یا داراییهای خارجی ارجاع میدهند، اطلاعات اعتباری شما باید شامل گسترههای مناسب برای آن سرویسها نیز باشد:
- Cloud Storage (GCS) (هنگام خواندن از یا نوشتن در مخزنهای Cloud Storage، مثل بار کردن GeoTIFFهای بهینهشده ابری (COG) یا صادر کردن خروجیهای تکلیف):
https://www.googleapis.com/auth/devstorage.full_controlhttps://www.googleapis.com/auth/devstorage.read_writehttps://www.googleapis.com/auth/devstorage.read_only
- BigQuery (BQ) (هنگام خواندن جدولها یا نوشتن برونبردها در BigQuery):
https://www.googleapis.com/auth/bigquery
- Google Drive (هنگام دسترسی به دادهها یا صادر کردن آنها به Google Drive):
https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/drive.readonly
Google Cloud همچنین گسترههای وسیعی را ارائه میدهد که همه سرویسهای Google Cloud را دربرمیگیرد:
- Cloud Platform (دسترسی گسترده به سرویسهای Google Cloud، شامل
Earth Engine، Cloud Storage، و BigQuery؛ توجه داشته باشید که Google Drive یک
سرویس Workspace جداگانه است و تحت پوشش این گسترهها نیست):
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/cloud-platform.read-only
دامنههای پیشفرض: دامنههای پیشفرض پیکربندیشده توسط Earth Engine Code
Editor و کتابخانههای کارخواه (مانند ee.Authenticate()) شامل همه این
دامنهها میشود: earthengine، cloud-platform، و drive (برای جزئیات به بخشهای قبلی مراجعه کنید).
بنابراین، سفارشیسازی دامنه (برای مثال، بااستفاده از پارامتر scopes
در ee.Authenticate(scopes=[...])) فقط درصورتی لازم است که محدودیتهای امنیتی خاص
یا خطمشیهای سازمانی داشته باشید که مستلزم محدود کردن
اجازهها باشد.
عیبیابی
اگر نتوانم «پروژه ابری» ایجاد کنم چه میشود؟
برخیاز سازمانها کنترل میکنند که چه کسی میتواند «پروژههای ابری» ایجاد کند. اگر هنگام تلاش برای ایجاد پروژه، در صفحه «اصالتسنج Notebook» خطایی دریافت کردید، چند راهکار وجود دارد که میتوانید امتحان کنید:
- سعی کنید مستقیماً پروژهای ایجاد کنید تا مطمئن شوید اجازههای لازم را دارید یا نه.
- با سرپرست سازمانتان صحبت کنید تا متوجه شوید چه فرایندهایی برای ایجاد پروژه دردسترس است.
- پروژهای را از حسابی غیرسازمانی ایجاد کنید و حسابی را که برای کار استفاده میکنید بهعنوان «مالک» پروژه اضافه کنید. توجه: برخیاز سازمانها خطمشیهای امنیتیای دارند که از دسترسی به کارخواههای OAuth از پروژههای خارجی جلوگیری میکند.
خطا: «Earth Engine API قبلاً در پروژه XXX استفاده نشده است یا غیرفعال است»
ابتدا مطمئن شوید که پروژهای را در ee.Initialize() یا در خط فرمان پیکربندی کردهاید (پروژههای پیشفرضی که Cloud و Colab ارائه میدهند Earth Engine را فعال نخواهند کرد). دوم، مطمئن شوید Earth Engine API در پروژه شما
فعال
باشد.
خطا: «پروژه پیکربندی کارخواه OAuth2 ناسازگار دارد»
پروژههای ابری فقط میتوانند یک پیکربندی «کارخواه OAuth2» داشته باشند. با بررسی «شناسههای کارخواه» OAuth 2.0 در صفحه «اعتبارنامهها»، میتوانید بررسی کنید که آیا پروژه Cloud دارای پیکربندی «کارخواه» OAuth2 است یا نه. باید پروژه Cloud دیگری را انتخاب کنید که پیکربندی سازگاری داشته باشد که قبلاً توسط Notebook Authenticator راهاندازی شده باشد، یا پروژه Cloud بدون کارخواه OAuth2 را انتخاب یا ایجاد کنید. اصالتسنج این پروژه را بهطور خودکار پیکربندی خواهد کرد. متأسفانه، سیستم OAuth به کاربران اجازه نمیدهد پیکربندیها را حذف کنند، بنابراین باید از پروژه دیگری استفاده کنید. این پروژه لازم نیست همان پروژهای باشد که برای کارهای دیگر Earth Engine استفاده میشود. توجه داشته باشید که این خطا در حالت Colab رخ نمیدهد.
خطا: «gcloud ناموفق بود. لطفاً خطاهای بالا را بررسی کنید و درصورت نیاز gcloud را نصب کنید.»
اگر gcloud نصب نشده باشد یا در PATH شما نباشد، ممکن است این خطا رخ دهد. همچنین ممکن است
اگر ee.Authenticate(auth_mode='gcloud') را از داخل سلول کد دفتر یادداشت
فراخوانی کنید، این اتفاق بیفتد. بهجای آن از ee.Authenticate() استفاده کنید که بهطور پیشفرض از اصالتسنجی حالت دفترچه استفاده میکند. اگر نمیتوانید پروژه ایجاد کنید، راهحل بالا را ببینید.
اگر به ماشین محلی برای نصب gcloud دسترسی نداشته باشم چه؟
اگر در محیطی فقط وبی کار میکنید که به پایانه محلی دسترسی ندارد،
و همچنان باید از پایانه ازراهدور استفاده کنید، میتوانید با راهاندازی حالت دفترچه یادداشت با اجرای فرمان earthengine
authenticate --auth_mode=notebook،
ابزار خط فرمان را مقداردهی اولیه کنید.
خطای ۴۰۰: redirect_uri_mismatch
اگر در دستگاهی از راه دور بدون دسترسی به مرورگر وب اصالتسنجی کنید، ممکن است این خطا را دریافت کنید. اگر earthengine authenticate را از خط فرمان اجرا میکنید، --quiet را اضافه کنید یا اگر از کارخواه Python استفاده میکنید، ee.Authenticate(quiet=True) را اضافه کنید. این کار مستلزم آن است که با gcloud از دستگاهی که به مرورگر وب دسترسی دارد اصالتسنجی کنید.
خطا: «برنامه شما بااستفاده از «اعتبارنامه پیشفرض برنامه» محلی اصالتسنجی میکند. میانای برنامهسازی کاربردی earthengine.googleapis.com به پروژه سهمیه نیاز دارد که بهطور پیشفرض تنظیم نشده است.»
این خطا ممکن است زمانی رخ دهد که Earth Engine نتواند شناسه پروژه شما را تعیین کند. اگر
گزینههای عیبیابی Google Cloud
کار نمیکند، earthengine set_project YOUR_PROJECT_ID یا gcloud
auth application-default set-quota-project YOUR_PROJECT_ID را اجرا کنید.
خطا: «دامنههای الزامی برای [Cloud Storage / BigQuery] وجود ندارد»
این خطا زمانی رخ میدهد که درخواست Earth Engine به منابع Cloud Storage یا
BigQuery دسترسی پیدا میکند، اما اعتبارنامههای استفادهشده برای مقداردهی اولیه Earth Engine
شامل دامنههای لازم برای آن سرویس (یا دامنه cloud-platform
که همه سرویسهای Google Cloud را دربرمیگیرد) نباشد. این معمولاً زمانی اتفاق میافتد که
پارامتر scopes را درطول اصالتسنجی سفارشی کرده باشید (برای مثال، فقط
دامنههای Earth Engine را به ee.Authenticate(scopes=[...]) ارائه کرده باشید) یا اگر
اعتبارنامههای موجود بدون آن دامنهها ایجاد شده باشند.
دو راه برای حل این مشکل وجود دارد:
- اصالتسنجی مجدد با دامنههای پیشفرض: اطلاعات کاربری پیشفرض برای Earth Engine شامل دامنه
cloud-platformاست که هم Cloud Storage و هم BigQuery را دربرمیگیرد. بااستفاده از تنظیمات پیشفرض، دوباره اصالتسنجی کنید:- در Python:
ee.Authenticate(force=True) - در خط فرمان:
earthengine authenticate --force
- در Python:
- گنجاندن دامنههای الزامی: اگر محیط شما به سفارشیسازی دامنهها نیاز دارد، مطمئن شوید فهرست
scopesشما شاملhttps://www.googleapis.com/auth/cloud-platformیا دامنه سرویس خاص (مانندhttps://www.googleapis.com/auth/devstorage.full_controlیاhttps://www.googleapis.com/auth/devstorage.read_onlyبرای Cloud Storage، یاhttps://www.googleapis.com/auth/bigqueryبرای BigQuery) باشد.
برای جزئیات بیشتر درباره دامنههای دردسترس، جزئیات مربوط به دامنهها را ببینید.
یادداشتهای فنی
برای کسانی که کنجکاوی فنی دارند: نیاز به این سازوکارهای مختلف ایجاد اعتبارنامه از نیاز به ارسال اعتبارنامه به محیطی شناختهشده و قابلاعتماد ناشی میشود. در اینجا بحث کوتاهی درباره موارد مختلف بالا ارائه شده است.
- قبلاً حالت
pasteوجود داشت که به شما یک کد میداد تا در هر جایی جایگذاری کنید، و این حالت بسیار پرخطر تلقی شد و دیگر دردسترس نیست. colab:auth.authenticate_user()از شما درخواست میکند اعتبارنامهها را با کارخواه اصالتسنجی «Colab»، یعنی خود محیط دفتر، همرسانی کنید. سپس این دادهها ازطریقgoogle.auth.default()دردسترس قرار میگیرند و توسطee.Initialize()استفاده میشوند.-
localhost: اطلاعات کاربری از مرورگر به درگاهی در دستگاه محلی شما منتقل میشود. در این شرایط، امنیت سرتاسر به این واقعیت بستگی دارد که دستگاه محلی شما درمعرض خطر قرار نگرفته باشد. کارخواه اصالتسنجیای که خواهید دید «Earth Engine Authenticator» است. gcloud: این گزینه از جریان--launch-browserشرحدادهشده در مرجع gcloud، و--no-launch-browser(اگر در دستگاه راه دور باشد) استفاده میکند. کارخواه احراز هویت استفادهشده «Google Auth Library» است.notebook: ما یک کارخواه اصالتسنجی جدید بهطور خاص برای کار شما ایجاد میکنیم - نشانی ایمیلتان را در صفحه رضایت خواهید دید. این کارخواه در حالت «توسعه» تنظیم شده است که حالت خاصی است که به توکنهای حالت جایگذاری قدیمیتر اجازه میدهد. برای این کار باید از پروژه خودتان استفاده کنیم، زیرا چنین کارخواههایی را نمیتوان با تعداد زیادی کاربر همرسانی کرد.