Google Earth Engine学习笔记1:账户申请、安装与使用(Python)

Oct 8,2020   2643 words   10 min


Google Earth Engine,简称GEE,是一个由Google开发的地理信息处理服务框架。Google Earth不用多说,但是Google Earth Engine倒还是第一次听说,是在上巫老师的全球对地观测课程的时候听说的。它的特点在于拥有非常齐全的卫星遥感数据,而且还有比较完善的开发API,可以方便地进行基于影像的开发与应用。用GEE官网这里的话说就是“影像+算法+应用”。

简单了解了一下GEE的API,主要分为JavaScript和Python两套版本。对JavaScript提供了在线代码编辑器,对于Python则提供了本地包可供调用。不过需要注意的是GEE的全部运算都是在Google Cloud云端完成的。无论是编写JS或者是Python的脚本,都是调用云端的数据和计算资源进行处理,不在本地机器上运算的。所以不要以为GEE是一个离线的库,可以离线开发。它是一个在线的服务,你通过编写代码去调用这个服务。有点类似于超算的工作模式。本篇博客主要记录Google Earth Engine的申请以及Python版本的安装与初步使用。

0.前提条件

对于GEE,官网打开、申请注册、安装、使用,需要全程科学上网,否则进行不下去。如果做不到这点,可以先研究下如何科学上网。

1.账户申请

和众多地图API一样,要想使用GEE必须先申请。官网是这里 我们直接点击右上角的“Sign Up”即可进行注册。注册过程本身没什么好说的,填一些相关信息就好,但是会有一些坑。首先如果你有edu邮箱,强烈建议用edu邮箱申请个谷歌账号进行注册,否则可能会被秒拒。例如我用的正常使用的谷歌账号进行注册,直接就秒拒了,如下。 说是无法验证我提供的信息。亏我还很认真地写了申请理由。用我的edu邮箱进行注册则是秒过,如下。这从另一个方面也似乎说明,申请理由其实没那么重要,基本不会看。 之后再登录GEE的官网,就会看到如下页面,这就说明你注册成功,可以使用了。

2.Python版安装

安装其实非常简单,和其它库一样,直接pip就安装好了。打开控制台,输入pip install earthengine-api即可,如下。 如果中途出现什么错误,按照错误提示基本都能解决,GEE不是很难装。基本可能是一些依赖包的版本问题等等。安装好以后可以打开Python环境,输入import ee进行测试,没报错的话就OK了。

3.授权与激活

在本地第一次使用之前需要进行授权与激活,这样后续才能使用。注意激活过程最好把科学上网软件设置成全局模式(激活完成后可以切换回PAC模式),否则有可能失败(在我的电脑上是这样),如下。 然后打开控制台,在控制台中输入earthengine authenticate,如下所示。 之后会弹出一个窗口,如下。 我们输入账号的邮箱和密码。 然后点击”Allow”接受。 之后就会出现一串密钥,我们把它复制,并粘贴回控制台中,回车即可。 这最后一步是会连接Google服务器的,所以如果你代理没有设置好的话,这一步可能就会报各种各样连接失败的错误。至此,本机的授权与激活就完成了。其保存的密钥文件可以在控制台中输入dir %UserProfile%\.config\earthengine\credentials找到,如下。 如果想重新激活,直接把这个路径下的文件删掉就可以了。

4.GEE使用

GEE也有一些官方的示例代码,在Github上,点击查看。同样的,在使用GEE之前,还需要设置一下代理。如果像官方示例中,直接ee.Initialize()是会报time out错误的,不符合国情。所以需要在Python代码中设置下本机代理的端口。具体方法如下。打开开始菜单-设置-网络和Internet-代理,在其中找到本机代理的地址和端口,如下所示。 本机的代理地址和端口是127.0.0.1:10809。然后在Python代码中这样写(记得地址和端口要换成你自己的):

import os
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:10809'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:10809'

完整代码如下。

import ee
import os

if __name__ == '__main__':
    # 记得换成你自己的代理地址
    os.environ['HTTP_PROXY'] = 'http://127.0.0.1:10809'
    os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:10809'

    # GEE初始化
    ee.Initialize()

    # 新建一个影像并输出信息
    img = ee.Image('CGIAR/SRTM90_V4')
    print(img.getInfo())

    # 获取它的下载地址
    path = img.getDownloadURL({
        'scale': 30,
        'crs': 'EPSG:4326',
        'region': '[[-120, 35], [-119, 35], [-119, 34], [-120, 34]]'
    })

    # 打印该地址
    print(path)

在上述代码中,我们获取了SRTM90的数据,数据区域、尺度等都在代码中指定了。控制台输出如下。 可以看到,输出了一个链接,点击就可以下载对应区域数据的预览图。需要注意的是这里获取到的并不是原始数据,原始数据是需要通过GEE的Export模块导出的,而不是这样下载。这里返回的是GEE的Image对象,里面会包含数据的相关信息,可以通过打印查看。

至此,GEE的账户申请、安装和DEMO测试就介绍完了,之后会进一步介绍相关使用。

5.参考资料

  • [1] https://earthengine.google.com/
  • [2] https://developers.google.com/earth-engine
  • [3] https://developers.google.com/earth-engine/guides/python_install
  • [4] https://developers.google.com/earth-engine/guides/python_install-conda#get_credentials
  • [5] https://blog.csdn.net/RS_cj/article/details/85008690

本文作者原创,未经许可不得转载,谢谢配合

返回顶部