Google colab(Python)来编写GEE代码

2022-04-29 08:43:40 浏览数 (1)

本次我们讲一下如何利用Google的colab使用GEE。colab是Google推出的云端的jupyter notebook,使用Google的算力,甚至可以白嫖Google的GPU,简直美滋滋。

但是,我们这次主要还是说一下如何利用colab也就是python代码来使用GEE。总体来说,GEE在python和JavaScript中的使用差不了太多。只要掌握了js代码的编写,python应该也很快能上手。

我们这次就以展示Landsat-8数据为例,来简单介绍一下。

01

首先找到colab

我们首先打开谷歌云盘,然后右击,就可以找到colab啦!如果没找到colab的话,就点击关联更多应用,在搜索框搜一下Colaboratory,点击安装就可以啦。

02

编写正式代码之前的准备工作

我们要使用colab编写GEE的代码就要先授权。

第一步:

代码语言:javascript复制
from google.colab import auth
auth.authenticate_user()

写了上述代码,就会出来一个链接还有一个框框,点击进去,然后选择你的账号,再点击允许,会出现一串代码,把这个代码粘贴到刚才出现的框框里面再按回车就可以。

第二步:

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

和上个授权一样,也需要点击链接,然后粘贴代码回车。

03

正式的代码

首先,我们定义一个Landsat-8的去云函数,并选取数据。

代码语言:javascript复制
def maskL8sr(image):
#这个与js中1<<3和1<<5(位运算)一样的效果,都是去除云及阴影。
#这两种都表示2的3次方和2的5次方
  cloudShadowBitMask = ee.Number(2).pow(3).int()
  cloudsBitMask = ee.Number(2).pow(5).int()
  qa = image.select('pixel_qa')
  mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0).And(
    qa.bitwiseAnd(cloudsBitMask).eq(0))
  return image.updateMask(mask).divide(10000)


L8SR = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
# 对影像集做平均
image = L8SR.filterDate('2018-06-01', '2018-10-31').map(maskL8sr).mean()

然后,我们导入folium库,对数据进行可视化。

代码语言:javascript复制
import folium
# 设置可视化参数,以假彩色进行显示
mapid = image.getMapId({'bands': ['B5', 'B4', 'B3'], 'min': 0, 'max': 0.3})
map = folium.Map(location=[38., -122.5])


folium.TileLayer(
    tiles=mapid['tile_fetcher'].url_format,
    attr='Map Data &copy; <a href="https://earthengine.google.com/">Google Earth Engine</a>',
    overlay=True,
    name='median composite',
  ).add_to(map)
map.add_child(folium.LayerControl())
map

这样,我们就可以看到我们熟悉的Landsat-8的数据啦!

使用colab还有一点就是可以和Google AI paltform进行联动,训练自己需要的深度学习模型(Tensorflow),GEE自带的模型真的不太够。

我们可以把训练好的模型上传到AI platform,然后通过GEE调用模型。这个我们以后应该会讲。

本期的代码我已经保存为ipynb格式供大家学习参考。

https://pan.bnu.edu.cn/l/snpiDW

使用自己电脑的jupyter notebook查看这个代码时,要点击右上角的“信任”才能看到最后的地图哦!

0 人点赞