Google Earth Engine学习笔记
背景:去年的一个项目要影像对比功能,本来数据都是客户航拍的,18年的影像数据已经航拍到了,结果去年管控不让拍了,所以这个艰巨的任务就落到我身上了。试过太乐地图(暂时不能下载历史影像,下载到的是18年的数据,毫无意义,原本的数据就是2018年的),后来试了中科图新的LocaSpace(下载后拼接为tif后有的png丢失,并且拼接后无法正常用geoserver发布),后来打算用bigMap,咨询了淘宝客服key要3500元左右,可以下载谷歌历史影像,但是当地19年年底的影像只有19级,有点模糊,我突然领悟到级别不是下载器说了算,而是本来谷歌数据决定的,本来都打算要买了,想通了这一点后,觉得没有买的必要性,后来发现了免费的红豆地球,下载到了那部分历史影像,本来我是非常讨厌这款软件的作者的,在群里乱踢人。不过这次倒是解了我燃眉之急。
Google Earth Engine,需要Scientific Internet,这还是一留学美国博士推荐的,打算这周趁着有点时间研究下,之前略微了解一些了,对于遥感小白来说,先学会下载数据再说。
一.先注册账号
我大概用的谷歌账号直接注册的,填一些必要的信息就行了。
后续:今天突然发现,我注册的竟然没通过,据说要教育邮箱才好通过,只能后面再说了!
https://medium.com/google-earth
https://www.bilibili.com/video/av48083555/?p=2
https://www.bilibili.com/video/av25240619/
2020.5.21
事情有了进展,我的账号本来是通过的,我以为没通过,因为用的时候报错 token、auth这种字眼,就觉得是权限问题。所以自己重新注册了个谷歌账号,特意用了英文名字,注册GEE时还把地区设为美国,机构设为美国的某所大学,提交后,得到反馈,说是没通过,具体邮件如下:
大概意思就是:感谢您的应用使用Earth Engine。很遗憾,我们无法使用所提供的信息来验证您的帐户。为了增加验证的可能性,请使用以下方式注册:与公认的研究或教育组织相关的电子邮件,您的全名,您的组织的全名(即无缩写)以及您要完成的工作的详细说明与地球引擎。您可能需要在隐身窗口中执行此操作。真诚的地球引擎小组
从GEE群里看到的情况是只要是.edu的邮箱基本秒过,问过一个教师行业的朋友,竟然也没有edu邮箱,以前觉得这种邮箱没啥用,到了关键时刻还真需要这个,据说有好多优惠,比如亚马逊prime,office。
当看完这封邮件,回想起跟之前的邮件不一样,突然觉得,之前应是审核通过了,之前收到的邮件内容为:
大概意思是:欢迎,你可以访问GEE的那些功能网站,建议先看看相关文档。
既然已经获取到许可了,就去随便找个例子先试试:
执行后:
这说明是可以用的。
总结:从GEE群里得知现在申请要教育邮箱才行,其它的很难通过,申请被驳回的邮件来看,也验证了这一点,具体解决办法要么找朋友的教育邮箱,据说国内的就行;要么去某购物网站买个临时用用,这种不安全,容易挂掉。我自己的用的是Gmail邮箱,5月初申请的,也通过了,找了下原因,当时注册GEE填资料也是随便填了下,国家还写了中国,那么原因只有一个了,我的谷歌邮箱是2015年的,算是老账号了,新申请的邮箱去注册GEE,直接被驳回,所以猜测gmail老账号通过率也很高。这个是之前做亚马逊时得到的经验,好多店家会养号,越是老账号,官方会人为你的信用更高,不会乱来。所以有条件的可以多申请一个谷歌账号,放那养着。
二.进入代码编辑平台
2020.5.26
今天看到这个例子惊艳到我了,所以想用这个例子来探索学习的思路。
左侧是示例代码;中间是代码块;右侧是输出的图表,图表右上角有个分享的按钮,点击后跳转网页可以保存图片或者输出csv;下方layer1是高程图,layer2是添加的点坐标(样式红色的点),layer旁边有滑块,可以调节图层的透明度。
现在结合代码和右边输出的图表,详细解析一下代码。
这代码打眼上去就很亲切,JavaScript,跟webGIS开发一样的思路,除了print函数没用过之外,别的都熟悉,看到print又以为是Python,但看到声明变量用var,Python貌似是不用var的,又查阅了官网,可以确定是JS代码。
Python代码和js代码都用过,以前觉得这两种语言太不正规了,最开始接触的是C语言,C#这种强类型语言,对弱类型的语言内心是不认可的,没想到几年后,Python很火,js在前端也是最火的,C#好多公司已经不用了,改用java。
现在直接分析代码(根据自己的开发经验所述,暂时没时间细看文档):
代码第三行,大概意思就是根据参数的名字来获取这张影像,声明一个变量elevation,将这张影像(对象)赋值给这个变量。如果我们不知道这个函数的意思,可以去查一下官方的reference:
4~23行,声明一个数组,这个数组共有9个点要素(有坐标有名字)。我们可以再去查一下ee.Feature()和ee.Geometry.Point(),根据这个例子,我们基本就知道怎么用了,细节的东西当然还是要去看reference。
25行,声明一个ee.FeatureCollection(),看字面意思是要素集合,就是把那9个点要素放到这个集合里。
27~32行,声明一个chart,里面的前两个参数是上面声明的,根据这个影像和点集获取到这9个位置的高程,比例尺为200,X坐标显示点名称。
33~41行,再对这个chart设置几个可选的属性,依次为标题,Y坐标轴的标题,图例,线宽,点的大小。
43行,打印chart,chart就出现在右侧控制台窗口,这点让我这个初学者觉得很神奇,谷歌简直太强大了。
45~46行,在地图上添加高程图层、点集图层,设置中心点坐标和缩放级别。
其实接触到GEE的最初的目的是下载影像,后面再研究吧,接下来要看官网的这几个东西,才能学好,目前,我们已经算是入门了。
三.在QGIS中使用GEE
先收藏几个不错的网址:
在QGIS中使用Google Earth Engine的270多个Python示例的集合
2020.6.4
解决问题:安装MiniConda 安装navigator
https://geoscripting-wur.github.io/Earth_Engine/
https://github.com/gee-community/qgis-earthengine-plugin/issues/35
https://github.com/gee-community/qgis-earthengine-plugin/issues?q=is%3Aissue+is%3Aclosed
参考网址:
Google Earth Engine学习笔记——介绍和入门
好消息!基于QGIS的Google Earth Engine插件已发布
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程