前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Earth Engine(GEE)——客户端python的安装与使用

Google Earth Engine(GEE)——客户端python的安装与使用

作者头像
此星光明
发布2024-02-02 08:21:08
7440
发布2024-02-02 08:21:08
举报

包导入

Python API 包称为ee. 必须为每个新的 Python 会话和脚本导入和初始化它:

代码语言:javascript
复制
import ee

向 Earth Engine 服务器进行身份验证:

代码语言:javascript
复制
ee.Authenticate()

您获取身份验证凭据的方式可能因您的环境而异。有关ColabConda 中身份验证的更多详细信息,请参阅链接 。通常,本地安装的身份验证是生成持久授权令牌的一次性步骤,而诸如 Colab 之类的 VM 服务会限制令牌的生命周期。

初始化 API:

代码语言:javascript
复制
ee.Initialize()

语法

Python 和 JavaScript API 都访问相同的服务器端功能,但客户端表达式可能因语言语法差异而有所不同。下表列出了您在使用 Python API 时会遇到的常见语法差异,相对于 JavaScript API。

物业

JavaScript

蟒蛇

功能定义

function myFun(arg) { return arg; } var myFun = function(arg) { return arg; };

def my_fun(arg): return arg

匿名函数映射

var foo = col.map(function(arg) { return arg; });

foo = col.map(lambda arg: arg)

变量定义

var myVar = 'var';

my_var = 'var'

逻辑运算符

var match = such.and(that); var match = such.or(that); var match = such.not(that);

match = such.And(that) match = such.Or(that) match = such.Not(that)

多行方法链

var foo = my.really() .reallyLong() .methodChain();

foo = (my.really() .reallyLong() .methodChain())

字典键

var dic = {'key': value}; var dic = {key: value};

dic = {'key': value}

字典对象访问

var value = dic.key; var value = dic['key'];

value = dic['key']

函数参数定义

// Positional arguments.位置参数对象 var foo = fun(argX, argY, argZ); // Keyword arguments object.键值参数对象 var foo = fun({y: argY});

# Positional arguments. foo = fun(arg_x, arg_y, arg_z) # Keyword arguments dictionary. foo = fun(**{'y': arg_y}) # Keyword arguments. foo = fun(x=arg_x, z=arg_z)

布尔值

var t = true; var f = false;

t = True f = False

空值

var na = null;

na = None

注释

//注释 /* 段落注释 */

#

于 Python API 语法的注意事项:

  • 匿名函数映射是通过函数实现的 ,它只接受一个表达式。当需要复杂的映射操作时,使用传统的命名函数。 lambda
  • 作为关键字参数字典提供的函数参数必须指定为**kwargs;即,在函数输入字典前加上两个星号: y = fun(**{'x': 0})y = fun(**arg_dict)

日期对象

使用模块定义和操作客户端日期对象 。在脚本中包含模块: datetime

代码语言:javascript
复制
import datetime

转换为客户端日期:ee.Date

代码语言:javascript
复制
ee_date = ee.Date('2020-01-01')
py_date = datetime.datetime.utcfromtimestamp(ee_date.getInfo()['value']/1000.0)

将客户端日期转换为ee.Date:

代码语言:javascript
复制
py_date = datetime.datetime.utcnow()
ee_date = ee.Date(py_date)

导出数据

使用 Python API 导出数据需要使用ee.batch 模块,该模块提供了Export 函数的接口 。像使用 JavaScript API 一样传递参数参数,注意上面语法表中指出的差异。导出任务必须通过start()对定义的任务调用方法来启动。通过调用任务的status()方法来查询任务的状态。以下示例演示导出ee.Image对象。

创建导出任务:

代码语言:javascript
复制
task = ee.batch.Export.image.toDrive(image=my_image,  # an ee.Image object.
                                     region=my_geometry,  # an ee.Geometry object.
                                     description='mock_export',
                                     folder='gdrive_folder',
                                     fileNamePrefix='mock_export',
                                     scale=1000,
                                     crs='EPSG:4326')

启动导出任务:

代码语言:javascript
复制
task.start()

检查导出任务状态:

代码语言:javascript
复制
task.status

注意:从 Python API 启动的任务也将出现在同一 Google 帐户的 JavaScript代码编辑器的“任务”选项卡中 。

打印对象

在 Python 中打印 Earth Engine 对象会打印对象的序列化请求,而不是对象本身。请参阅 客户端与服务器页面以了解其原因。

调用getInfo()Earth Engine 对象以从服务器到客户端获取所需的对象:

代码语言:javascript
复制
# 加载Landsat 影像.
img = ee.Image('LANDSAT/LT05/C01/T1_SR/LT05_034033_20000913')

# 不调用 getInfo() 打印图像对象;打印序列化的请求指令。
#这个比较省事
print(img)

# 通过调用 getInfo() 打印图像对象;打印图像元数据。
#注意两者的区别一个是获取影像的基本信息,一个是获取元数据
print(img.getInfo())

请注意,这getInfo()是一个同步操作,这意味着getInfo()调用之后的表达式的执行将被阻止,直到结果返回给客户端。此外,对大量数据或昂贵计算的请求可能会返回错误和/或挂起。通常,最佳做法是 导出您的结果,完成后,将它们导入新脚本以进行进一步分析。

注意:调用getInfo()脚本会阻止执行。此外,对大量数据或昂贵计算的请求可能会返回错误和/或挂起。 导出以获得昂贵、大型或长时间运行的计算的结果。

用户界面对象

Earth Engineui模块只能通过 JavaScript API 代码编辑器使用。在 Python 中为 UI 元素使用第三方库。 Foliumipyleaflet提供交互式地图处理,而图表可以使用MatplotlibAltairseaborn来完成, 仅举几例。有关使用 Folium 和 Matplotlib 的信息,请参阅 Colab 设置笔记本中的地球引擎中的示例。

开发人员指南中的 Python

地球引擎开发人员指南中的一些示例包含 Python 代码(请继续关注!)。在这些特定页面上,您会在页面顶部找到按钮,将其作为 Colab Jupyter 笔记本运行或在 GitHub 上查看。您还将找到选项卡式代码片段小部件,它们允许您在 JavaScript 代码编辑器代码和等效的 Python Colab 代码之间切换。Colab 笔记本包含运行示例所需的一切,但如果您要复制和粘贴代码以在您自己的环境中运行,则需要先进行一些设置。

地球引擎设置

几乎每个示例都使用 Earth Engine API,因此您需要导入 API、验证和初始化。

代码语言:javascript
复制
import ee
ee.Authenticate()
ee.Initialize()

注意:如果您在 Colab 之外的环境中运行 Earth Engine Python 代码,则需要确保已安装 API 并且已将身份验证凭据保存到您的系统中。后续使用将只需要导入 API 并对其进行初始化。了解有关安装身份验证的更多信息 。


Folium交互式地图展示

所述大青叶 文库可用于显示ee.Image对象的交互式地图。当 Python 示例显示地图图块时,整个地球引擎开发人员指南页面都使用 Folium 地图。在您可以运行这些示例之前,您需要将 Folium 导入您的 Python 会话,并向folium.Map对象添加一个用于处理地球引擎图块的方法。方法如下:

代码语言:javascript
复制
import folium

#定义一个加载的图层的函数然后设定对象,视觉参数和名称等,当然这里需要接入Google所以要科学上网
def add_ee_layer(self, ee_image_object, vis_params, name):
  map_id_dict = ee.Image(ee_image_object).getMapId(vis_params)
  folium.raster_layers.TileLayer(
      tiles=map_id_dict['tile_fetcher'].url_format,
      attr='Map Data &copy; <a href="https://earthengine.google.com/">Google Earth Engine</a>',
      name=name,
      overlay=True,
      control=True
  ).add_to(self)

folium.Map.add_ee_layer = add_ee_layer

注意: Folium 可能需要安装在 Colab 之外的环境中;每一次都需要重新加载,因为过后会重新进行验证

漂亮的印刷品

一些打印的 Earth Engine 对象采用嵌套的 JSON 格式,该格式很长和/或很复杂。为了提高这些情况下的可读性,使用了该 函数;根据需要直接包含在示例中。 pprint.pprintimport pprint

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 包导入
  • 语法
  • 日期对象
  • 导出数据
  • 打印对象
  • 用户界面对象
  • 开发人员指南中的 Python
    • 地球引擎设置
      • Folium交互式地图展示
        • 漂亮的印刷品
        相关产品与服务
        多因子身份认证
        多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档