本次我们讲一下如何利用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 © <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查看这个代码时,要点击右上角的“信任”才能看到最后的地图哦!