命令行工具

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() 以触发身份验证流程。按照提示完成身份验证。Colab 中的默认 auth_modecolab,如需了解其他选项,请参阅身份验证指南

import ee
ee.Authenticate()

命令执行

如需运行命令行实用程序(例如 Earth Engine CLI),您需要在命令调用前面添加感叹号。

!earthengine -h

设置 Cloud 项目

使用 --project 选项为每个 earthengine 命令设置一个 Cloud 项目。

!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

输出或更新 Earth Engine 资产的访问控制列表 (ACL)。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 子命令会输出 ACL 的 JSON 说明。set 子命令会设置在采用相同 JSON 格式的文件中提供的 ACL。您可以保存 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

info 子命令会以 JSON 形式输出有关资源的详细信息,包括其元数据。set 子命令用于设置资产的各个元数据属性。

您设置的元数据属性的值可以是数字或字符串。使用 --property-p 标志设置属性名称时,请使用等号将属性名称和值分隔开来。系统会自动检测数据类型,您也可以通过在属性名称前面添加 (string)(number)(date) 来明确指定数据类型。例如,以下代码会将字符串值属性设置为值 "42"

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

(此示例中的引号可防止 shell 解读圆括号。它们不一定是必需的,具体取决于您的 shell 和平台。)

日期属性只是数字,表示自 Unix 纪元( 1970 年 1 月 1 日午夜)以来经过的毫秒数,可以直接指定为数字,也可以采用以下格式之一:

    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

create

创建新的文件夹和图片合集。示例:

    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

如需查看项目配置,请使用 get 子命令:

    earthengine alpha project_config get

如果您有权查看项目的批处理任务设置,输出内容将包含:

  • maxConcurrentExports:一个数字,表示可针对给定项目的所有用户并行运行的批量任务数量上限。默认情况下,此值设为关联结算账号的订阅方案允许的最大值。

此外,如果您有权查看方案配置,则输出包含以下内容:

  • planMaxConcurrentExports,一个数字,表示可以针对使用结算账号的所有用户和项目并行运行的批处理任务的数量上限。

set

如需更新项目的配置,请使用 set 子命令。您可以配置以下设置:

例如,若要将项目配置为仅允许为给定项目并行运行 10 个任务,请执行以下操作:

    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 子命令用于取消一个或多个正在运行的任务。

upload

将 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(默认值)、samplemodeminmax 之一。这将控制 Earth Engine 生成图片低分辨率版本金字塔的具体方式:

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

您可以使用 --last_band_alpha 指明应从最后一个波段的 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

如需创建由外部图片支持的资源,请使用清单运行 upload_image 命令:

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

示例清单如下:

{
  "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"
}

如需详细了解如何构建清单,请参阅 Cloud GeoTIFF 指南和图片清单指南。