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
的信息,以此加深对矢量数据的理解。
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()……
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()
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()
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()
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()
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()
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)
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
从2008 年提出构想不断发展至今天,已经成为提供覆盖全球的地理空间数据的集成、处理、可视化和综合分析一站式解决方案的云端共享平台,总结GEE的平台具有如下优势:
GEE
面向全球科研人员、学生、教育工作者等提供非商业性质用户提供免费服务。GEE
平台,用户可以比较方便地处理全球影像数据,解决了用户受限自己本地机器运算能力不强,以及存储空间不足的问题,能够高校、快速地处理大范围的影像。GEE
已经拥有一个完整而良好的开发生态环境,开发者和平台核心团队人员可以通过论坛,会议等多种形式进行深入甲流,探讨各种问题,除了现有的工具资源,用户还可以利用GEE提供的开发包做二次开发,满足更多的需求,实现更加强大的功能。GEE
被广泛应用于各个领域,涵盖全球森林变化,全球地表水变化、作物产量估算、稻田制图、城市测绘、洪水测绘、火灾恢复和疟疾风险绘图等等不同主题。它还被整合到许多第三方应用中,例如分析物种栖息地范围(Map of Life
)、监测气候(Climate Engine
)和评估土地利用变化(Collect Earth
)等等。
Google Earth Engine
)基础教程,作者:王金柱欢迎大家关注预览我的博客Blog:HeartLoveLife
能力有限,敬请谅解!!