Google Earth Engine (GEE)
是由谷歌公司开发的众多应用之一。借助谷歌公司超强的服务器运算能力以及与 NASA
的合作关系,GEE
平台将Landsat
、MODIS
、 Sentinel
等可以公开获取的遥感图像数据存储在谷歌的磁盘阵列中,使得 GEE
用户可以方便的提取、调用和分析海量的遥感大数据资源。
GEE
它是一个集科学分析以及地理信息数据可视化的综合性平台。简单的说,GEE
是一个“遥感大数据”分析和呈现的平台。作为地理云计算服务平台 ,GEE
将地理数据分析算法封装成函数接口的形式提供给用户,通过互联网可以使用户快速地访问海量的影像数据以及其他空间数据,而不需要下载到本地,在云端实现当前地理空间数据分析的全部流程。通过云计算还可以使共享的计算机软硬件资源和地理大数据,按需求提供给用户使用,使任何用户都可以使用服务商提供的多平台软硬件资源和地理大数据,开展常规个人计算机无法实现的地理计算和数据分析。
GEE
在设计之初就是为了服务科研人员而构建的,因此在概念上可以将 GEE
视为一种工具,类似于菜刀之于厨师或者猎枪之于猎手,而不应该将其当作一种复杂的计算机编程平台。
GEE
包含图形用户界面和应用程序编程接口。GEE
是一个主要依靠编码命令进行空间分析和操作的平台,但 GEE
也有适合界面操作的平台:GEE
的图形用户界面(Graphical User Interface, GUI
)。GEE
的 GUI
的优点在于符合人的操作直觉,并且对新用户友好,缺点是功能较少,可以实现的空间分析有限。GEE
的应用程序编程接口(Application Programming Interface, API
)是 GEE
的核心功能所在,也是 GEE
用户最为关注的平台,与 GUI
相比,API
可以调用 GEE
平台中的所有数据和功能。可以说,学习 GEE
就是学习 GEE
的 API
。
GEE
中存储着海量的遥感数据,熟悉这些数据能够让用户更加便捷的实现空间和地理分析目标。总体上,GEE
的数据可以分为 4 个种类:栅格数据,栅格集数据,矢量数据,矢量集数据。
⛄栅格数据 GEE
中的栅格数据主要包括来源自遥感卫星的数据和空间插值数据产品。
数据集
空间分辨率
时间分辨率
时间覆盖
空间覆盖
Landsat
Landsat 8 OLI/TIRS
30m
16day
2013-Now
Global
Landsat 7 ETM+
30m
16day
2000-Now
Global
Landsat 5 TM
30m
16day
1984-2012
Global
Landsat 4–8 surface reflectance
30m
16day
1984-Now
Global
Sentinel
Sentinel 1 A/B ground range detected
10m
6day
2014-Now
Global
Sentinel 2A MSI
20m
10day
2015-Now
Global
MODIS
MOD08 atmosphere
1°
daily
2000-Now
Global
MOD09 surface reflectance
500m
1/8day
2000-Now
Global
MOD10 snow cover
500m
1day
2000-Now
Global
MOD11 temperature and emissivity
1000m
1/8day
2000-Now
Global
MCD12 Land cover
500m
Annual
2000-Now
Global
MOD13 Vegetation indices
500/250m
16day
2000-Now
Global
MOD14 Thermal anomalies & fire
1000m
8day
2000-Now
Global
MCD15 Leaf area index/FPAR
500m
4day
2000-Now
Global
MOD17 Gross primary productivity
500m
8day
2000-Now
Global
MCD43 BRDF-adjusted reflectance
1000/500m
8/16day
2000-Now
Global
MOD44 veg. cover conversion
250m
Annual
2000-Now
Global
MCD45 thermal anomalies and fire
500m
30day
2000-Now
Global
ASTER
L1 T radiance
15/30/90m
1day
2000-Now
Global
Global emissivity
100m
Once
2000-2010
Global
Other imagery
PROBA-V top of canopy reflectance
100/300m
2day
2013-Now
Global
EO-1 hyperion hyperspectral radiance
30m
Targeted
2001-Now
Global
DMSP-OLS nighttime lights
1km
Annual
1992-2013
Global
USDA NAIP aerial imagery
1m
Sub-annual
2003-2015
CONUS
地形
Shuttle Radar Topography Mission
30m
single
2000
60°N–54°S
USGS GMTED2010
10m
single
Multiple
US
USGS National Elevation Dataset
7.5″
single
Multiple
83°N–57°S
GTOPO30
30″
single
Multiple
Global
ETOPO1
1′
single
Multiple
Global
注:来源 Google Earth Engine: Planetary-scale geospatial analysis for everyone [J]. Remote Sensing of Environment
GEE
中其他的主要栅格产品包括土地利用数据,气象数据和人口数据等。这些数据与遥感影像数据相比,主要用来反映某些社会因子的空间分布,或者反映地表以上空间的自然特征。
数据集
空间分辨率
时间分辨率
时间覆盖
空间覆盖
土地利用
GlobCover
300m
Non-periodic
2009
90°N–65°S
USGS National Landcover Database
30m
Non-periodic
1992-2011
CONUS
UMD global forest change
30m
Annual
2000-2014
80°N–57°S
JRC global surface water
300m
Monthly
1984-2015
78°N–60°S
GLCF tree cover
30m
5year
2000-2010
Global
USDA NASS cropland data layer
30m
Annual
1997-2015
CONUS
气象
Global precipitation measurement
6′
3h
2014-Now
Global
TRMM 3B42 precipitation
15′
3h
1985-2015
50°N–50°S
CHIRPS precipitation
3′
5day
1981-Now
50°N–50°S
NLDAS-2
7.5′
1h
1979-Now
North America
GLDAS-2
15′
3h
1948-2010
Global
NCEP reanalysis
2.5°
6h
1948-Now
Global
ORNL DAYMET weather
1km
12 Images
1980-Now
North America
GRIDMET
4km
1day
1979-Now
CONUS
NCEP global forecast system
15′
6h
2015-Now
Global
NCEP climate forecast system
12′
6h
1979-Now
Global
WorldClim
30″
12 Images
1960-1990
Global
NEX downscaled climate projections
1km
1day
1950-2099
North America
人口
WorldPop
100m
5year
Multiple
2010–2015
GPWv4
30″
5year
2000-2020
85°N–60°S
注:来源 Google Earth Engine: Planetary-scale geospatial analysis for everyone [J]. Remote Sensing of Environment
⛄矢量数据 简单来说,矢量数据可以理解为点、线和面类型的数据。在处理空间问题时,常常需要确定某个地理要素的位置(例如某区域商店的位置),或者某些线状地物的位置(河流、道路等),以及某些面状物的分布(行政边界等)。在确定矢量空间要素空间特征的基础上,再给这些空间要素贴上标签(名称,面积,权属等),那么就得到了包含一定信息的矢量数据。我们通常将这种矢量数据成为“特征矢量”(Feature
),将其空间形状称为“地理特征”(Geometry
),将贴上去的标签信息称为“属性”(Property
)。我们分别从ArcGIS
和GEE
中添加并查看Feature
的信息,以此加深对矢量数据的理解。
⛄数据类型和参数类型 👀GEE 的数据类型 (String
, Number
) 显示:print (string) 创建:ee.String () 修改:string.cat () string.replace () 段落:string.split () string.match 查询:string.slice () string.length ()
创建:ee.Number () 修改:number.uint8 () number.Uint8 () number.int8 () number.toInt8 ()…… 比较:number.eq () number.neq ()…… number.and () number.or () ee.Algorithms .IsEqua ()…… 运算:number.abs () number.round () number.pow ()…… 字位:number.bitwiseAnd () number.bitwiseOr () number.bitwise_and () number.bitwise_or () number.leftShift () number.right_shift ()……
👀GEE 的数据类型(Dictionary
,List
,Array
) 创建:ee.Dicionary () 修改:dictionary.combine () dinctionary.set () 查询:dictionary.keys () dictionary.get () dictionary.values () 对比:dictionary.contains () 尺寸:dictionary.size ()
创建:ee.List () list.repeat () list.sequence () 修改:list.set () list.replaceAll () list.add () list.insert () list.zip () list.reverse () list.rotate () list.sort () list.swap () list.flatten () 查询:list.get () list.remove () list.removeAll () 比较:list.equals () list.contains () list.containsALL () list. indexOf () list.indexOfSubList () list.lastIndexOfSubList () list.frequency () 其他:list.map () list.iterate () list.length () list.size ()
创建:ee.Array () ee.Array .identity () ee.Array .repeat () 修改:array.mask () array.transpose () array.uint8 () array.Uint8 () 数学:array.eq () array.and () array.or () array.round () array.bitwiseAnd () array.leftShift ()
👀GEE 的数据类型(Geometry
,Feature
,FeatureCollection
) 创建:ee.Geometry .Point () ee.Geometry .Multipoint () 绘图工具 …… 几何:Geometry .transform () geometry.centroid () geometry.simplify () geometry.bounds () geometry.buffer () geometry.union () …… 查询:geometry.geometries () geometry.coordinates () geometry.length () geometry.area () geometry.perimeter () geometry.distance () 转换:geometry.toGeoJSON ()
创建:ee.Feature () 绘图工具 编辑:Feature .select () Feature .transform () Feature .set /setMulti () 几何:Feature .centroid /simplify/bounds/convexHull/buffer () Feature .union /intersection/difference/symmetricDifference () 提取:Feature .geometry () Feature .get () Feature .Length /Area /Perimeter ()
创建:GEE 自带 上传 FushionTable ee.FeatureCollection () .randomPoints () 手绘… 编辑:.filterMetadata () .limit () .filterDate () .filterBounds () .filter () .select () .distinct () .union () .merge () .set () .remap () .sort () .makeArray () 转换:.geometry () .reduceToImage () 查询:.first () .toList () .aggregate_first () .aggregate_array () 统计:.aggregate_stats /_histogram/_count/_count_distinct .aggregate_max /_min/_sum/_mean/_product .aggregate_sample_var /_total_var/_sample_sd/_total_sd/ 其他: .map ()
👀GEE 的数据类型 (Image
,ImageCollection
) 创建: GEE 自带 用户上传 ee.image ()/constant () ee.Image .pixelLonLat () 编辑: .mask () .clip () .select () .slice () .addBands () .reproject () .rbgtohsv () .hsvtorbg () .unit8 () .cast () .set () .setMulti () .remap () .where () .metadata () .clamp () .unitScale () .interpolate () .eq ()…… .abs ()…… .sin () …… .bitWiseAnd ()…… .reduce () 地形: image.derivative () ee.Terrain .products () ee.Algorithm .Terrain () ee.Terrain .slope () ee.Terrain .aspect () ee.Terrain .fillMinima () ee.Terrain .hillshade () ee.Terrain .hillshadow () ee.Algorithm .Hillshadow () 纹理: .entropy () .Texture () .zeroCrossing () .ee .Algorithms .CannyEdgeDetector () ee.Algorithms .HoughTransform () 邻域: .focal_max () .focal_min () .focal_median () .focal_mode () .convolve () .reduceNeighborhood () 转换: .Image .ToVector () Image .ToArray () Image .arrayFlatten () 其他: .CrossCorrelation () .distance () Export .image ()
创建: ee.ImageCollection () ee.ImageCollection .load () 筛选: .limit () .filterMetadata () .filterDate () .filterBounds () .filter () .select () .distinct () .comnibe () .unit8 ()…… .set () .setMulti () 求值: .mosaic () .and /or () .sum /product/max/min/mean/mode/median/count () 转换: .first () .toList () .toArray ()
👀GEE 的数据类型 (Landsat Images
, ConfusionMarix
) LansatCollection .qualityMosaic ()LansatCollection .unmixing ()LansatCollection .normalizedDifference ()ee.Algorithms .Landsat .simpleCloudScore () ee.Algorithms .Landsat .simpleComposite ()
创建: ee.ConfusionMatrix () 转换: ConfusionMatrix .array () 精度: .kappa () .accuracy () .producersAccuracy () .consumersAccuracy () .order ()
👀GEE 的参数类型 (Date
, DateRange
) 创建:ee.Date () ee.Algorithms .Date () ee.Date .fromYMD () ee.Date .parse () 编辑:Date .advance () Date .update () 调整:Date .format () Date .milis () Date .getRange () 提取:Date .get () Date .gerFraction () Date .unitRation () Date .difference ()
创建: ee.DateRange () ee.DateRange .unbounded () 联并: DateRange .Union () DateRange .intersection () 查询: DateRange .start () DateRange .end () 判断: .intersencts () .contains () .inEmpty () .isUnbounded ()
👀GEE 的参数类型 (Filter
,Join
) 创建:ee.Filter .eq () ee.Filter .neq () ee.Filter .ge () ee.Filter .gte () ee.Filter .le () ee.Filter .lte () ee.Filter .maxDifference () 字段:ee.Filter .stringContains () ee.Filter .StarsWith () ee.Filter .EndWith () ee.Filter .Rangecontains () ee.Filter .listContains () ee.Filter .inList () 时间:ee.Filter .calendarRange () ee.FilterDateRangeContains () ee.Filter .dayOfYear () 转换:ee.Filter .and () ee.Filter .or () ee.Filter .not () ee.Filter ()
ee.Join .simple () ee.Join .inverted () ee.Join .inner () ee.Join .saveAll () ee.Join .saveBest () ee.Join .saveFirst () Spatial Joins (ee.Filter .withinDistance /ee.Filter .intersects )
👀GEE 的参数类型 (Reducer
,Kernel
,Algorithm
) 创建: ee.Reducer .count () .countEvery () .first () .histogram () .allNonZero () .anyNonZero () .frequencyHistrogram () .toList () .toCollection () 数学: sum () .product () .mean () .variance () .std_dev () .sampleVariance () .sampleStdDev () .max () .min () .minMax () .median () .mode () .intervalMean () .percentile () .linearFit () 转换: .setOutputs () .getOutputs () .combine () .repeat () .repeat () .group () .unweighted () .splitWeights ()
创建: ee.Kernel .roberts () ee.Kernel .prewitt () ee.Kernel .sobel () ee.Kernel .compass () ee.Kernel .kirsch () ee.Kernel .laplacian4 () ee.Kernel .laplacian8 () ee.Kernel .euclidean () ee.Kernel .gaussian () ee.Kernel .manhattan () ee.Kernel .chebyshev () ee.Kernel .circle () ee.Kernel .octagon () ee.Kernel .square () ee.Kernel .diamond () ee.Kernel .cross () ee.Kernel .plus () ee.Kernel .fixed () 编辑: Kernel .rotate () kernel.add () print (Kernel )
Algorithm ,算法的目的是减少重复运算,我们可将其理解为一个“小程序”,借助这个小程序可以对数据集内的每一个数据都进行同样的操作。下边是算法的语法格式:function 函数名(变量) { 操作 } 算法的核心在于操作的编写。编写操作时要注意两点,第一,应该按照目标数据集确定变量名,比如针对栅格数据集的操作变量可以写作 Image 或者 img,这样能够提高操作的可读性。第二,操作必须包含 return 命令以告诉 GEE 算法的目的是什么。
⛄GEE平台优势与应用 随着云计算技术的不断发展,GEE
从2008 年提出构想不断发展至今天,已经成为提供覆盖全球的地理空间数据的集成、处理、可视化和综合分析一站式解决方案的云端共享平台,总结GEE的平台具有如下优势:
免费向非商业用户提供使用 。GEE
面向全球科研人员、学生、教育工作者等提供非商业性质用户提供免费服务。
算法高集成度以及可定制性 。在算法集成方面,提供了持续更新的智能算法以及可供研究者定制的功能接口,这将激励研究者不断尝试新的算法来实现科学构想,而不只是停留在理论层面,这将进一步促进平台的智能化发展,很多以往难以解决的问题都将开启新的思路。
后台处理运算能力强 。使用GEE
平台,用户可以比较方便地处理全球影像数据,解决了用户受限自己本地机器运算能力不强,以及存储空间不足的问题,能够高校、快速地处理大范围的影像。
完整的生态开发环境 。目前GEE
已经拥有一个完整而良好的开发生态环境,开发者和平台核心团队人员可以通过论坛,会议等多种形式进行深入甲流,探讨各种问题,除了现有的工具资源,用户还可以利用GEE提供的开发包做二次开发,满足更多的需求,实现更加强大的功能。
GEE
被广泛应用于各个领域,涵盖全球森林变化,全球地表水变化、作物产量估算、稻田制图、城市测绘、洪水测绘、火灾恢复和疟疾风险绘图等等不同主题。它还被整合到许多第三方应用中,例如分析物种栖息地范围(Map of Life
)、监测气候(Climate Engine
)和评估土地利用变化(Collect Earth
)等等。
参考资料
遥感云计算平台:Google Earth Engine
遥感大数据工具(Google Earth Engine
)基础教程,作者:王金柱