ابزار خط فرمان

ابزار earthengine برنامه کاربردی‌ای است که به شما امکان می‌دهد دارایی‌ها و تکالیف Earth Engine را از خط فرمان مدیریت کنید. وقتی Python API را نصب می‌کنید، به‌طور خودکار نصب می‌شود. برای بررسی اینکه ابزار نصب شده است و به‌درستی کار می‌کند، عبارت زیر را در خط فرمان تایپ کنید:

    earthengine

اگر ابزار به‌درستی نصب شده باشد، خلاصه کوتاهی از فرمان‌های دردسترس را چاپ می‌کند. برای دریافت راهنمایی درباره فرمانی خاص، از این دستور استفاده کنید:

    earthengine command -h

وقتی برای اولین‌بار Python API را نصب می‌کنید، باید بااستفاده از فرمان authenticate که در زیر شرح داده شده است به سیستم وارد شوید. بخش‌های زیر فرمان‌های دردسترس را با جزئیات بیشتر شرح می‌دهند.

اعتبارنامه‌های حساب سرویس

برای استفاده از CLI با اطلاعات کاربری حساب سرویس، از پرچم service_account_file برای اشاره به فایل JSON حاوی کلید حساب سرویس استفاده کنید.

    earthengine --service_account_file=service_account_creds.json

استفاده در Colab

«ابزار خط فرمان Earth Engine» ازپیش نصب شده است و برای استفاده در Google Colab آماده است.

اصالت‌سنجی

برای هر جلسه Colab جدید یا اگر ماشین مجازی به‌دلیل عدم فعالیت منقضی شود، اصالت‌سنجی کنید (اعتبارنامه‌ها در جلسات ذخیره نمی‌شوند).

کتابخانه کارخواه Python را وارد کنید و ee.Authenticate() را فراخوانی کنید تا جریان اصالت‌سنجی را راه‌اندازی کنید. پیام‌واره‌ها را برای تکمیل اصالت‌سنجی دنبال کنید. auth_mode پیش‌فرض در Colab،‏ colab است. برای گزینه‌های دیگر، راهنمای اصالت‌سنجی را ببینید.

import ee
ee.Authenticate()

اجرای فرمان

برای اجرای ابزارهای خط فرمان، مانند Earth Engine CLI، باید پیش‌وند فراخوانی‌های فرمان را با علامت تعجب اضافه کنید.

!earthengine -h

تنظیم پروژه Cloud

از گزینه --project برای تنظیم پروژه Cloud برای هر فرمان earthengine جداگانه استفاده کنید.

!earthengine --project my-project <command>

یا اینکه پروژه پیش‌فرضی را تنظیم کنید تا بااستفاده از فرمان set_project برای همه تماس‌های earthengine استفاده شود. پروژه به فایل اطلاعات اعتباری (~/.config/earthengine/credentials) اضافه خواهد شد و برای فرمان‌های بعدی استفاده می‌شود، مگراینکه با گزینه --project لغو شود. برای هر جلسه Colab جدید یا اگر ماشین مجازی به‌دلیل عدم فعالیت منقضی شود، پروژه پیش‌فرضی تنظیم کنید (اعتبارنامه‌ها در جلسات ذخیره نمی‌شوند).

!earthengine set_project my-project

مرجع فرمان

اصالت‌سنجی کردن

ابزار خط فرمان و کتابخانه کارخواه Python را در Earth Engine اصالت‌سنجی می‌کند. مثال:

    earthengine authenticate

Earth Engine از پروتکل OAuth 2.0 برای اصالت‌سنجی کارخواه‌ها استفاده می‌کند. فرمان earthengine authenticate شما را ازطریق مرورگر وب در فرایند اصالت‌سنجی راهنمایی می‌کند.

اگر از حالت اصالت‌سنجی پیش‌فرض gcloud استفاده می‌کنید، باید gcloud را نصب کنید. سایر حالت‌های اصالت‌سنجی دردسترس را ازطریق پارامتر auth_mode در راهنمای اصالت‌سنجی ببینید.

acl

فهرست کنترل دسترسی (ACL) دارایی Earth Engine را چاپ یا به‌روز می‌کند. ACL کنترل می‌کند چه کسی می‌تواند دارایی را بخواند یا در آن بنویسد. مثال‌ها:

    earthengine acl get projects/my-project/assets/asset_id
    earthengine acl set public projects/my-project/assets/asset_id
    earthengine acl ch -u username@gmail.com:R projects/my-project/assets/asset_id

زیرفرمان get شرح JSON از ACL را چاپ می‌کند. فرمان فرعی set یک ACL ارائه‌شده در فایلی با همان قالب JSON را تنظیم می‌کند. می‌توانید با ذخیره کردن خروجی از get و ارائه آن به set، یک ACL را از یک دارایی به دارایی‌های دیگر کپی کنید.

زیرفرمان set دو نام ACL ویژه را نیز می‌پذیرد:

  • private: اجازه‌ها را از همه به‌جز مالک برمی‌دارد.
  • public: به همه کاربران اجازه خواندن می‌دهد.

زیرفرمان ch به شما امکان می‌دهد تغییرات تکی در ACL ایجاد کنید. برای اعطای اجازه خواندن، -u username@gmail.com:R را مشخص کنید، برای اعطای اجازه نوشتن، -u username@gmail.com:W را مشخص کنید، و برای برداشتن اجازه‌های کاربر، -d username@gmail.com را مشخص کنید. از شناسه کاربر ویژه AllUsers ممکن است برای اعطا یا لغو اجازه خواندن به یا از همه کاربران استفاده شود. (توجه داشته باشید که لغو کردن اجازه‌های AllUsers باعث لغو شدن اجازه‌های اضافی که ممکن است به کاربران خاصی اعطا کرده باشید نمی‌شود.)

دارایی

فراداده‌های مرتبط با دارایی Earth Engine را چاپ یا به‌روز می‌کند. مثال‌ها:

    earthengine asset info projects/my-project/assets/asset_id
    earthengine asset set -p name=value projects/my-project/assets/asset_id
    earthengine asset setbands projects/my-project/assets/asset_id band1 band2

زیرفرمان info اطلاعات دقیقی درباره دارایی، ازجمله فراداده آن، در قالب JSON چاپ می‌کند. زیرفرمان set ویژگی‌های فراداده تکی را در دارایی تنظیم می‌کند. زیرفرمان setbands نام‌های باند دارایی را به‌روز می‌کند.

مقادیر ویژگی‌های فراداده‌ای که تنظیم می‌کنید ممکن است عدد یا رشته باشند. هنگام تنظیم نام‌های دارایی بااستفاده از پرچم --property یا -p، نام دارایی و مقدار را با علامت مساوی از هم جدا کنید. نوع داده به‌طور خودکار شناسایی می‌شود، یا می‌توانید آن را با افزودن پیشوند (string)،‏ (number)، یا (date) به نام ویژگی به‌طور صریح مشخص کنید. برای مثال، این کد یک ویژگی با مقدار رشته‌ای و مقدار "42" تنظیم می‌کند:

    earthengine asset set -p '(string)name=42' projects/my-project/assets/asset_id

(علامت‌های نقل‌قول در این مثال از تفسیر پرانتزها توسط پوسته جلوگیری می‌کند. بسته به پوسته و پلاتفرم شما، ممکن است لازم باشد یا نباشد.)

برای ایجاد ویژگی‌های خاص برای تجسم‌های باند طبقه‌بندی، می‌توانید فهرست‌های مقادیر و رنگ‌ها را به‌عنوان رشته‌های جداشده با کاما ذخیره کنید. برای مثال، برای تنظیم مقادیر پالت و کلاس برای باندی به‌نام landcover:

    earthengine asset set -p 'landcover_class_palette=ff0000,00ff00,0000ff' projects/my-project/assets/asset_id
    earthengine asset set -p 'landcover_class_values=1,2,3' projects/my-project/assets/asset_id

برای حذف کردن یک ویژگی، آن را روی null بدون نوع تنظیم کنید:

    earthengine asset set -p name=null projects/my-project/assets/asset_id

ویژگی‌های تاریخ فقط اعدادی هستند که تعداد میلی‌ثانیه‌ها را از مبدأ یونیکس (یعنی نیمه‌شب ۱ ژانویه ۱۹۷۰) نشان می‌دهند و ممکن است مستقیماً به‌صورت عدد یا در یکی از قالب‌های زیر مشخص شوند:

    YYYY-MM-DD
    YYYY-MM-DDThh:mm:ss
    YYYY-MM-DDThh:mm:ss.f

منطقه زمانی UTC درنظر گرفته می‌شود. می‌توانید ویژگی‌های خاص زمان شروع و پایان را بااستفاده از پرچم‌های --time_start و --time_end تنظیم کنید:

    earthengine asset set --time_start 1978-10-15T12:34:56 projects/my-project/assets/asset_id

cp

دارایی را کپی می‌کند. مثال:

    earthengine cp projects/my-project/assets/asset_id projects/my-project/assets/new_asset_id

ایجاد

پوشه‌ها و مجموعه‌های تصویر جدید ایجاد می‌کند. مثال:

    earthengine create folder projects/my-project/assets/folder_id
    earthengine create collection projects/my-project/assets/collection_id

از زیرفرمان folder برای ایجاد پوشه و از collection برای ایجاد مجموعه تصویر استفاده کنید. می‌توانید گزینه -p را برای ایجاد بازگشتی پوشه‌های والد درصورت نیاز مشخص کنید. پوشه‌ها و تصاویر جدیداً ایجادشده به‌طور پیش‌فرض ACL خصوصی دارند.

ls

محتوای یک یا چند پوشه یا مجموعه را فهرست می‌کند. مثال:

    earthengine ls users/username

گزینه -l درخواست قالب طولانی با اطلاعات بیشتر درباره هر دارایی را می‌دهد (درحال‌حاضر فقط نوع آن). می‌توانید --max_items number (یا به‌طور خلاصه -m) را برای محدود کردن تعداد موارد از هر پوشه یا مجموعه‌ای که فهرست می‌کنید مشخص کنید:

    earthengine ls -m 10 projects/my-project/assets/my_large_collection

اجرای فرمان ls بدون آرگومان، پوشه‌های سطح بالا را که متعلق به شما است فهرست می‌کند.

مدل

ابزاری که با آن می‌توان مدل‌های ذخیره‌شده TensorFlow را دستکاری کرد.

model prepare

مدل ذخیره‌شده‌ای را برای ارائه در Earth Engine آماده کنید. به‌طور دقیق، این کار SavedModel شما را به شکلی تبدیل می‌کند که برای پردازش درخواست‌های Earth Engine مناسب باشد. (درباره SavedModel بیشتر بدانید.)

    earthengine model prepare my_source_dir my_dest_dir '{"Conv2D:0":"my_input_band"}' '{"Sigmoid:0":"my_output_band"}'

در اینجا درباره مدل‌های AI Platform بیشتر بدانید. نمونه کامل را در اینجا ببینید.

mv

دارایی را منتقل می‌کند یا نام آن را تغییر می‌دهد. مثال:

    earthengine mv projects/my-project/assets/asset_id projects/my-project/assets/new_asset_id

project_config

مقادیر پیکربندی پروژه را تنظیم می‌کند. قبل‌از استفاده از این فرمان، حتماً پروژه‌ای را بااستفاده از set_project تنظیم کنید.

دریافت

برای مشاهده پیکربندی پروژه، از زیرفرمان get استفاده کنید:

    earthengine alpha project_config get

اگر اجازه مشاهده تنظیمات تکلیف دسته‌ای پروژه را داشته باشید، خروجی حاوی موارد زیر است:

  • ‫maxConcurrentExports: عددی که حداکثر تعداد کارهای دسته‌ای را که می‌توانند به‌طور موازی در همه کاربران برای پروژه موردنظر اجرا شوند نشان می‌دهد. به‌طور پیش‌فرض، این مقدار روی حداکثر مجاز برای طرح اشتراک حساب صورت‌حساب مرتبط تنظیم شده است.

علاوه‌براین، اگر اجازه مشاهده پیکربندی طرح را داشته باشید، خروجی حاوی موارد زیر است:

  • planMaxConcurrentExports، عددی که حداکثر تعداد کارهای دسته‌ای را نشان می‌دهد که می‌توانند به‌طور موازی در همه کاربران و پروژه‌هایی که از حساب صورت‌حساب استفاده می‌کنند اجرا شوند.

تنظیم

برای به‌روزرسانی پیکربندی پروژه، از زیرفرمان set استفاده کنید. تنظیمات زیر را می‌توان پیکربندی کرد:

برای مثال، برای پیکربندی پروژه‌ای که فقط اجازه می‌دهد ۱۰ تکلیف به‌طور موازی برای پروژه موردنظر اجرا شود:

    earthengine alpha project_config set --max_concurrent_exports=10

خروجی پیکربندی به‌روزشده پروژه را نمایش می‌دهد، که با آنچه get برمی‌گرداند یکسان است.

برای اطلاعات بیشتر درباره موازی‌سازی دسته‌ای تکلیف، به صفحه سهمیه‌های Earth Engine مراجعه کنید.

rm

یک یا چند دارایی را حذف می‌کند. مثال:

    earthengine rm projects/my-project/assets/asset_id
    earthengine rm -r projects/my-project/assets/folder_id

می‌توانید از پرچم -r برای حذف محتوای پوشه یا مجموعه به‌صورت بازگشتی استفاده کنید. برای ایمنی هنگام حذف چندین دارایی، می‌توانید از پرچم --dry_run استفاده کنید تا دقیقاً آنچه را که حذف خواهد شد بدون حذف واقعی چیزی تأیید کنید.

set_project

پروژه Google Cloud را که درخواست‌های محاسباتی ازطریق آن هدایت می‌شود تنظیم می‌کند.

    earthengine set_project foo-project

این فرمان قبل‌از اجرای فرمان‌هایی که به عملکرد Cloud نیاز دارند، مثلاً model، لازم است.

تکلیف

اطلاعات مربوط به کارهای طولانی‌مدت را چاپ یا مدیریت می‌کند. مثال‌ها:

    earthengine task list
    earthengine task list -l
    earthengine task info TASK_ID
    earthengine task cancel TASK_ID

زیرفرمان list اطلاعات پایه درباره تکالیفی را که اخیراً ارسال کرده‌اید فهرست می‌کند. گزینه -l درخواست قالب طولانی با اطلاعات بیشتر درباره هر تکلیف می‌کند. زیرفرمان info اطلاعات دقیقی درباره تکالیف فردی چاپ می‌کند. زیرفرمان cancel یک یا چند تکلیف درحال اجرا را لغو می‌کند.

بارگذاری

تصاویر یا جدول‌ها را از Google Cloud Storage در Earth Engine بارگذاری می‌کند، یا دارایی‌هایی را که با تصاویر خارجی پشتیبانی می‌شوند ایجاد می‌کند.

تصویر

برای بارگذاری دارایی تصویری بااستفاده از تنظیمات پیش‌فرض:

    earthengine upload image --asset_id=projects/my-project/assets/asset_id gs://bucket/image.tif

اگر چند فایل تصویری ورودی مشخص کنید، آن‌ها به‌عنوان کاشی‌های یک دارایی تصویری واحد تفسیر خواهند شد. در بارگذاری دارایی‌های تصویری: گزینه‌های پیشرفته می‌توانید درباره گزینه‌های بارگذاری تصاویر در Earth Engine بیشتر بدانید.

می‌توانید خط‌مشی کاهش هرمی را بااستفاده از پرچم --pyramiding_policy مشخص کنید که می‌تواند روی یکی از این موارد تنظیم شود: mean (پیش‌فرض)، sample، mode، min، یا max. این گزینه نحوه تولید هرم نسخه‌های با وضوح پایین‌تر تصویرتان را توسط Earth Engine کنترل می‌کند:

    earthengine upload image --asset_id=projects/my-project/assets/asset_id --pyramiding_policy=sample gs://bucket/image.tif

می‌توانید از --last_band_alpha استفاده کنید تا نشان دهید که ماسک تصویر باید از کانال آلفا در آخرین باند گرفته شود:

    earthengine upload image --asset_id=projects/my-project/assets/asset_id --last_band_alpha gs://bucket/image.tif

بااستفاده از پرچم --nodata_value می‌توانید مقدار بدون داده را مشخص کنید. این کار هر پیکسلی را در تصویر با آن مقدار ماسک می‌کند:

    earthengine upload image --asset_id=users/myuser/asset --nodata_value=255 gs://bucket/image.tif

همچنین می‌توانید ویژگی‌های فراداده را برای تنظیم روی دارایی بااستفاده از همان پرچم‌هایی که توسط فرمان asset set توضیح داده‌شده در بالا پذیرفته شده‌اند، مشخص کنید. این گزینه‌ها در راهنمای مانیفست تصویر نیز شرح داده شده‌اند.

جدول

برای بارگذاری کردن Shapefile،‏ CSV، یا TFRecord از Google Cloud Storage در دارایی جدول Earth Engine، می‌توانید از هرکدام از موارد زیر استفاده کنید:

    earthengine upload table --asset_id=projects/my-project/assets/myUploadedShapefile gs://bucket/foo.shp
    earthengine upload table --asset_id=projects/my-project/assets/myUploadedCSV gs://bucket/foo.csv
    earthengine upload table --asset_id=projects/my-project/assets/myUploadedTFRecord gs://bucket/foo.tfrecord

گزینه‌های زیادی در رابطه با نحوه تفسیر فایل‌های CSV و TFRecord وجود دارد. با مراجعه به راهنمای مانیفست جدول یا با دستور زیر می‌توانید فهرست کامل گزینه‌های بارگذاری جدول را ببینید:

    earthengine upload table -h

external_image

برای ثبت GeoTIFF بهینه‌شده ابری (COG) در Cloud Storage به‌عنوان دارایی COG-backed (که در API تصویر خارجی نامیده می‌شود)، فرمان upload external_image را با مانیفست اجرا کنید:

earthengine upload external_image --manifest /tmp/foo.json

برای رونویسی دارایی موجود، --force را اضافه کنید، مثلاً برای اشاره به نسخه جدیدی از فایل آن (به به‌روزرسانی دارایی‌های COG-backed مراجعه کنید).

نمونه مانیفست:

{
  "name": "projects/{project}/assets/cogdemo1",
  "tilesets": [
    { "id": "0", "sources": [{ "uris": ["gs://ee-docs-demos/COG_demo.tif"] }] }
  ],
  "properties": {
    "source": "https://code.earthengine.google.com/d541cf8b268b2f9d8f834c255698201d"
  },
  "startTime": "2016-01-01T00:00:00.000000000Z",
  "endTime": "2016-12-31T15:01:23.000000000Z"
}

برای جزئیات بیشتر درباره ساخت مانیفست، راهنمای ثبت COG و راهنمای مانیفست تصویر را ببینید.