قبلاز اینکه بتوانید ازطریق کتابخانه کارخواه به Earth Engine درخواست ارسال کنید، باید اصالتسنجی کنید و از اطلاعات اعتباری حاصل برای مقداردهی اولیه کارخواه Earth Engine استفاده کنید.
ویرایشگر کد Earth Engine و جاوا اسکریپت
احراز هویت و مقداردهی اولیه بهطور خودکار در «ویرایشگر کد» انجام میشود. میتوانید انتخاب کنید که درخواستها ازطریق «پروژه ابری» از ورود به سیستم در بالا سمت راست ویرایشگر کد هدایت شوند.
اگر از «میانای برنامهسازی کاربردی جاوا اسکریپت» (خارج از «ویرایشگر کد») استفاده میکنید، از یکی از
یاریرسانهای اصالتسنجی در 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 غیرColab اجرا شودlocalhostاگر مرورگر وب شناسایی شود و هیچ باینری 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)
- یا از سرپرست بخواهید به شما اجازه ایجاد پروژه بدهد.
این جدول نشان میدهد که هر حالت از کدام ترکیب ویژگیها پشتیبانی میکند.
| محلی یا از دور؟ | پروژه موردنیاز | دوربین تفنگ قابل تنظیم | CLI محلی لازم است | مالک پروژه | |
|---|---|---|---|---|---|
localhost |
محلی | س | س | شمال | شمال |
colab |
دورکاری | س | شمال | شمال | شمال |
gcloud |
هر دو | س | س | شمال | شمال |
notebook |
هر دو | س | س | شمال | س |
اطلاعات اعتباری برای «حسابهای سرویس» و Compute Engine
ee.Initialize() از اطلاعات اعتباری Earth Engine (که ee.Authenticate() در ~/.config/earthengine/credentials ذخیره میکند) استفاده خواهد کرد یا اطلاعات اعتباری را از google.auth.default() بازیابی خواهد کرد، اما درصورت لزوم میتوانید آرگومان credentials= را برای استفاده از اطلاعات اعتباری از جای دیگر ارسال کنید و از این پیشفرضها عبور کنید.
اگر درحال اصالتسنجی کد پایتونی هستید که بدون حضور کاربر اجرا میشود، بهتر است با حساب سرویس اصالتسنجی کنید نه با حساب کاربر. برای استفاده از حسابهای سرویس با Earth Engine، این
اسناد
را ببینید. روشهای دیگر شامل
authenticate_service_account در واحد اصالتسنجی Colab و روشهای
توضیحدادهشده در راهنمای Cloud برای اصالتسنجی بهعنوان حساب
سرویس میشود.
اگر کد شما در ماشین مجازی Compute Engine اجرا میشود، حساب سرویس پیشفرض برای محیط ایجاد میشود که ee.Initialize() بهطور پیشفرض از آن استفاده خواهد کرد. اگر «پروژه Cloud» که ازطریق آن ماشین مجازی شروع شده است برای استفاده با Earth Engine (تجاری یا غیرتجاری) ثبت نشده باشد، ممکن است لازم باشد حساب سرویس را برای استفاده از Earth Engine ثبت کنید.
جزئیات حالتها
auth_mode=colab. ee.Authenticate() با اجرای colab.auth.authenticate_user() درصورت لزوم،
اطلاعات اعتباری پیشفرض پشتیبانیشده توسط Colab را ایجاد یا دریافت خواهد کرد. اعتبارنامهها همیشه از محدوده cloud-platform استفاده میکنند و همچنین میتوانند
برای فراخوانی دیگر Cloud APIs استفاده شوند.
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. این حالت چندمنظوره برای کار در
موقعیتهای دوردست طراحی شده است که خط فرمان محلی دردسترس نیست. شما را به صفحه «اصالتسنج Notebook» هدایت میکند که در آن باید یک «پروژه اصالتسنجی» انتخاب یا ایجاد کنید - جزئیات و راهنمای عیبیابی را در زیر ببینید. پروژهای که به ee.Initialize() منتقل میشود لازم نیست با این پروژه مطابقت داشته باشد - میتوانید
پروژه یکسانی را برای اصالتسنجی حفظ کنید و درعینحال در پروژههای مختلف در
دفترچههای مختلف کار کنید. توصیه میشود پروژه را بهطور صریح به
ee.Initialize() ارسال کنید، اما بهطور پیشفرض از پروژه اصالتسنجی استفاده خواهد شد.
دستورالعملهای گامبهگام برای حالت دفترچه
- مرورگر: دفترچه
- در سلول کد دفترچه، کد زیر را اجرا کنید تا
جریان اصالتسنجی بااستفاده از حالت «دفترچه» شروع شود.
برای باز کردن صفحه «اصالتسنج دفترچه» در زبانه جدید، روی پیوند در برونداد سلول کلیک کنید.import ee ee.Authenticate()
- در سلول کد دفترچه، کد زیر را اجرا کنید تا
جریان اصالتسنجی بااستفاده از حالت «دفترچه» شروع شود.
- مرورگر: Notebook Authenticator
- تأیید کنید که حساب کاربری صحیح فهرست شده است.
- «پروژه Google Cloud» را برای استفاده در «اصالتسنجی» انتخاب کنید. اگر نیاز به ایجاد پروژه جدیدی دارید، توصیه میکنیم از قرارداد نامگذاری «ee-xyz» استفاده کنید که در آن xyz نام کاربری معمول شما در Earth Engine است. (اگر نمیتوانید «پروژه ابری» را انتخاب یا ایجاد کنید، به بخش عیبیابی در زیر مراجعه کنید.)
- روی «تولید کد» کلیک کنید.
- مرورگر: انتخاب حساب
- صفحه انتخاب حساب به شما نشان داده خواهد شد. روی حساب کاربری که میخواهید از دفترچه به آن دسترسی بدهید کلیک کنید.
- مرورگر: صفحه هشدار
- صفحه هشداری نمایش داده میشود که نشان میدهد Google برنامه را ایجاد نکرده است (یعنی کد موجود در دفترچه). برای تأیید، روی «ادامه» کلیک کنید.
- مرورگر: صفحه موافقت
- مشخص کنید که آیا مایلید دامنههای درخواستی را اعطا کنید و روی ادامه دادن کلیک کنید.
- مرورگر: صفحه کد مجوز
- کد درستیسنجی مجوز را کپی کنید
- مرورگر: دفترچه
- به برگه دفترچه برگردید و کد درستیسنجی را در برونداد سلول دفترچه جایگذاری کنید.
- برونداد سلول باید «نشان مجوز باموفقیت ذخیره شد.» را نشان دهد.
- راهاندازی را ادامه دهید.
حالت دفترچه دارای پارامتر 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،
مثل بار کردن Cloud-Optimized GeoTIFF یا صادر کردن بروندادهای تکلیف):
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» و هم کتابخانههای مشتری (مثل ee.Authenticate()) پیکربندی شدهاند شامل همه این حوزهها میشوند: earthengine، cloud-platform، و drive (برای جزئیات بیشتر، بخشهای قبلی را ببینید).
درنتیجه، سفارشیسازی محدوده (برای مثال، استفاده از پارامتر scopes در ee.Authenticate(scopes=[...])) فقط درصورتی ضروری است که محدودیتهای امنیتی خاص یا خطمشیهای سازمانی داشته باشید که مستلزم محدود کردن اجازهها باشد.
عیبیابی
اگر نتوانم «پروژه Cloud» ایجاد کنم چه میشود؟
برخیاز سازمانها کنترل میکنند چه کسی میتواند «پروژههای Cloud» ایجاد کند. اگر هنگام تلاش برای ایجاد پروژه در صفحه «اصالتسنج Notebook» با خطا مواجه شدید، چند کار میتوانید انجام دهید:
- برای تأیید اینکه اجازههای لازم را دارید یا نه، سعی کنید مستقیماً پروژهای ایجاد کنید.
- با سرپرست سازمانتان صحبت کنید تا متوجه شوید چه فرایندهایی برای ایجاد پروژه دردسترس است.
- پروژهای از حساب غیرسازمانی ایجاد کنید و حسابی را که برای کار استفاده میکنید بهعنوان «مالک» پروژه اضافه کنید. توجه: برخیاز سازمانها خطمشیهای امنیتی دارند که از دسترسی به کارخواههای OAuth از پروژههای خارجی جلوگیری میکند.
خطا: «Earth Engine API قبلاً در پروژه XXX استفاده نشده است یا غیرفعال است»
ابتدا مطمئن شوید که پروژهای را در ee.Initialize() یا در خط فرمان پیکربندی کردهاید (پروژههای پیشفرضی که Cloud و Colab ارائه میدهند Earth Engine را فعال نخواهند داشت). دوم، مطمئن شوید که Earth Engine API در پروژه شما
فعال است.
خطا: «پروژه پیکربندی کارخواه OAuth2 ناسازگار دارد»
پروژههای ابری فقط میتوانند یک پیکربندی «کارخواه OAuth2» داشته باشند. با بررسی «شناسههای کارخواه OAuth 2.0» در صفحه «اعتبارنامهها» میتوانید ببینید آیا پروژه ابری پیکربندی «کارخواه OAuth2» دارد یا نه. باید یا پروژه Cloud دیگری را انتخاب کنید که پیکربندی سازگار ازقبل توسط «اصالتسنج دفترچه» در آن راهاندازی شده است، یا پروژه 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» است. -
gcloud: این دستور از جریان--launch-browserکه در مرجع gcloud توضیح داده شده است و--no-launch-browserدرصورت استفاده از ماشین از دور استفاده میکند. کارخواه اصالتسنجی استفادهشده «کتابخانه اصالتسنجی Google» است. -
notebook: ما یک کارخواه اصالتسنجی جدید بهطور ویژه برای کار شما ایجاد میکنیم - نشانی ایمیلتان را در صفحه موافقت خواهید دید. این مشتری در حالت «توسعه» تنظیم شده است که حالت ویژهای است که اجازه میدهد از نشانههای حالت جایگذاری قدیمیتر استفاده شود. باید از پروژه خودتان برای این کار استفاده کنیم، زیرا چنین کارفرمایانی را نمیتوان با تعداد زیادی کاربر همرسانی کرد.