Google Earth Engine(GEE)——客户端python的安装与使用
包导入
Python API 包称为ee
. 必须为每个新的 Python 会话和脚本导入和初始化它:
import ee
向 Earth Engine 服务器进行身份验证:
ee.Authenticate()
您获取身份验证凭据的方式可能因您的环境而异。有关Colab 和Conda 中身份验证的更多详细信息,请参阅链接 。通常,本地安装的身份验证是生成持久授权令牌的一次性步骤,而诸如 Colab 之类的 VM 服务会限制令牌的生命周期。
初始化 API:
ee.Initialize()
语法
Python 和 JavaScript API 都访问相同的服务器端功能,但客户端表达式可能因语言语法差异而有所不同。下表列出了您在使用 Python API 时会遇到的常见语法差异,相对于 JavaScript API。
物业 | JavaScript | 蟒蛇 |
---|---|---|
功能定义 |
|
|
匿名函数映射 |
|
|
变量定义 |
|
|
逻辑运算符 |
|
|
多行方法链 |
|
|
字典键 |
|
|
字典对象访问 |
|
|
函数参数定义 |
|
|
布尔值 |
|
|
空值 |
|
|
注释 |
|
|
于 Python API 语法的注意事项:
- 匿名函数映射是通过函数实现的 ,它只接受一个表达式。当需要复杂的映射操作时,使用传统的命名函数。
lambda
- 作为关键字参数字典提供的函数参数必须指定为**kwargs;即,在函数输入字典前加上两个星号:
y = fun(**{'x': 0})
或y = fun(**arg_dict)
。
日期对象
使用模块定义和操作客户端日期对象 。在脚本中包含模块: datetime
import datetime
转换为客户端日期:ee.Date
-
ee_date = ee.Date('2020-01-01')
-
py_date = datetime.datetime.utcfromtimestamp(ee_date.getInfo()['value']/1000.0)
将客户端日期转换为ee.Date:
-
py_date = datetime.datetime.utcnow()
-
ee_date = ee.Date(py_date)
导出数据
使用 Python API 导出数据需要使用ee.batch
模块,该模块提供了Export
函数的接口 。像使用 JavaScript API 一样传递参数参数,注意上面语法表中指出的差异。导出任务必须通过start()
对定义的任务调用方法来启动。通过调用任务的status()
方法来查询任务的状态。以下示例演示导出ee.Image
对象。
创建导出任务:
-
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')
启动导出任务:
task.start()
检查导出任务状态:
task.status
注意:从 Python API 启动的任务也将出现在同一 Google 帐户的 JavaScript代码编辑器的“任务”选项卡中 。
打印对象
在 Python 中打印 Earth Engine 对象会打印对象的序列化请求,而不是对象本身。请参阅 客户端与服务器页面以了解其原因。
调用getInfo()
Earth Engine 对象以从服务器到客户端获取所需的对象:
-
# 加载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 元素使用第三方库。 Folium和 ipyleaflet提供交互式地图处理,而图表可以使用Matplotlib、 Altair或 seaborn来完成, 仅举几例。有关使用 Folium 和 Matplotlib 的信息,请参阅 Colab 设置笔记本中的地球引擎中的示例。
开发人员指南中的 Python
地球引擎开发人员指南中的一些示例包含 Python 代码(请继续关注!)。在这些特定页面上,您会在页面顶部找到按钮,将其作为 Colab Jupyter 笔记本运行或在 GitHub 上查看。您还将找到选项卡式代码片段小部件,它们允许您在 JavaScript 代码编辑器代码和等效的 Python Colab 代码之间切换。Colab 笔记本包含运行示例所需的一切,但如果您要复制和粘贴代码以在您自己的环境中运行,则需要先进行一些设置。
地球引擎设置
几乎每个示例都使用 Earth Engine API,因此您需要导入 API、验证和初始化。
-
import ee
-
ee.Authenticate()
-
ee.Initialize()
注意:如果您在 Colab 之外的环境中运行 Earth Engine Python 代码,则需要确保已安装 API 并且已将身份验证凭据保存到您的系统中。后续使用将只需要导入 API 并对其进行初始化。了解有关安装和 身份验证的更多信息 。
Folium交互式地图展示
所述大青叶 文库可用于显示ee.Image
对象的交互式地图。当 Python 示例显示地图图块时,整个地球引擎开发人员指南页面都使用 Folium 地图。在您可以运行这些示例之前,您需要将 Folium 导入您的 Python 会话,并向folium.Map
对象添加一个用于处理地球引擎图块的方法。方法如下:
-
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 © <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.pprint
import pprint
文章来源: blog.csdn.net,作者:此星光明2021年博客之星云计算Top3,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_31988139/article/details/119857847
- 点赞
- 收藏
- 关注作者
评论(0)