Google Earth Engine-05(GEE数据类型)

目录

 一、基础数据类型

1.1 数值 ee.Number()

1.2 字符串 ee.String()

1.3 字典 ee.Dictionary()

1.4 日期 ee.Date()

1.5 列表 ee.List()

1.6 数组 ee.Array()

二、地图数据

2.1 地图 Map

三、空间数据类型

3.1 几何图形 ee.Geometry()

3.1.1 Geometry基础类型方法

​编辑 3.1.2 空间计算方法

3.2 矢量数据 ee.Feature()

3.2.1 Feature基本操作方法

3.2.2 空间操作方法

3.3 矢量数据集合 ee.FeatureCollection() 

3.4 影像数据 ee.Image()

3.4.1 基本属性信息设置和获取

3.4.2 影像之间数学运算

3.4.3 统计计算

3.4..4 栅格数据转矢量

3.5 影像集合 ee.ImageCollection()

3.5.1 获取基本属性

3.5.2 过滤筛选

3.5.3 循环遍历

3.5.4 统计计算


        

        在GEE中,JS API中所定义的数据类型主要包括数值、字符串、字典、日期、列表、数组、地图、几何图形、矢量数据、矢量数据集合、影像数据、影像数据集等类别。上述数据类型主要可分为基础数据类型、地图数据及空间数据类型三大部分,如下图所示:

 一、基础数据类型

1.1 数值 ee.Number()

在GEE中,可以使用ee.Number()转换普通的数字,Number所具有的方法如下:

创建ee.Number()
修改number.unit8();number.int8();number.toInt().....
比较

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();.....

1.2 字符串 ee.String()

在GEE中,申明字符串子需要用ee.String()定义普通的字符串对象即可,并且ee.String()也提供了定义长度、拼接、大小写变换、获取索引等方法,常用的方法如下:

创建ee.String()
修改string.cat();string.replace()....
段落string.split();string.match()....
查询string.slice();string.length()....

1.3 字典 ee.Dictionary()

字典数据以键值对形式进行表示(js中的json,python中的字典){key:value},在GEE中,可以使用ee.Dictionary()进行创建,并提供修改、查询、对比等操作方法,常用的如下:

创建ee.Dictionary()
修改dictionary.combine();dictionary.set()
查询dictionarykeys();dictionary.get();dictionary.values()
判断是否包含dictionary.contains()
获取尺寸

dictionary.size() 

删除dictionary.remove() 
生成新字典ee.Dictionary.fromLists(keys, values)

1.4 日期 ee.Date()

在GEE中,可以使用 ee.Date()记录具体的时间,其中也提供获取时间信息、计算时间间隔和返回时间戳等方法,常用方法如下:

创建ee.Date();ee.Algorithms.Date();ee.Date.fromYMD();ee.Date.parse()
编辑Date.advance();Date.update()
调整Date.format();Date.milis();Date.getRange()
提取

Date.get();Date.getFraction();Date.unitRation();Date.difference();

Date.getRelative();

1.5 列表 ee.List()

列表是用于记录同类型数据的数据集。在GEE中,可以使用ee.List()定义列表数据类型,也提供了常用的的创建、转换、合并、删除、替换等操作的方法,如下:

创建ee.List();list.repeat();list.sequence()
修改

list.set(); list.replace();list.replaceAll();list.add();list.insert();list.zip()

list.reverse();list.rotate();list.sort();list.swap();list.flatten()

list.remove();list.removeAll()

查询list.get();list.map();list.length();list.size();list.slice()
比较

list.equals();list.contains();list.containsAll();list.indexOf();

list.indexOfSubList();list.lastIndexOfSubList();list.frequency()

合并list.cat()

1.6 数组 ee.Array()

数组ee.Array是由一连串的数字或字符串构成,[]嵌套数目表示了数组的维度,表示一维向量、二维矩阵、三位立方体等类型。

创建ee.Array(); ee.Array.identity(); ee.Array.repeat()
修改array.mask(); array.transpose();array.unit8();array.Unit8()
逻辑操作array.eq();  array.and();  array.or();  array.round();  array.bitwistAnd();  array.leftShift()
数学运算array.add();array.subtract();array.divide();array.multiply()

二、地图数据

2.1 地图 Map

1)Map.add(item)

该方法通常是在地图展示区加入各种ui使用,如ui.Label等。

 2)Map.centerObject(object,zoom)

设置地图居中位置,参数object是矢量数据或影像数据,zoom是缩放级别。

3)Map.addLayer(eeObject, visParams, name, shown, opacity)在地图上添加图层

eeObejct:图层内容,可以是矢量数据、影像等;

visParams:显示图层内容样式参数;

name:图层的名称;

shown:图层是否显示;

opacity:图层的透明度;

其中visParams参数样式可以设置的内容包括:bands(波段列表)、min(最小值)、max(最大值)、gamma(伽马系数)、palette(颜色列表)、opacity(透明度)等。

三、空间数据类型

3.1 几何图形 ee.Geometry()

3.1.1 Geometry基础类型方法

 示例代码:

var line=ee.Geometry.LineString([[-103.28593749999999,38.46623315614578],[-94.98027343749999,40.534424706292405]])
var multiPolygon= ee.Geometry.MultiPolygon([[[[-84.29587208507718,39.96117602741789],[-84.20893110596711,38.095486162792234],[-81.32717506033146,40.59421005772966]]],[[[-83.68632812499999,34.7277971009936],[-81.97246093749999,37.8095219161184],[-85.00468749999999,37.63572230181635]]]]);
Map.addLayer(line,{color:"d63000"},"line");
Map.addLayer(multiPolygon,{color:"00ffff"},"multiPolygon");

实现效果: 

在Geometry的创建中,最快捷的方式是通过用户点击创建所需的几何图形,如下图所示:

 3.1.2 空间计算方法

在GEE中,不仅提供了Geometry的创建,还提供了针对各种Geometry的各种空间计算方法,如计算面积,提取中心点等,常用的操作如下所示:

area()计算Geometry的面积。
centroid()提取Geometry的中心点,返回值是对应的Geometry中心坐标。
bounds()提取Geometry对应的外接矩形。
buffer()对Geometry做缓冲区,传入的参数是正数,向外做缓冲区,传入的是负数相反。
intersects()判断两个Geometry是否相交,相交返回true,不相交返回false。
intersection()取得两个Geometry的相交部分,返回值为相交部分的新Geometry。
difference()取得两个Geometry不同的部分,返回在第一个Geometry但不在第二个Geometry内的部分。
corrdinates()获取Geometry的坐标信息。

3.2 矢量数据 ee.Feature()

在GEE中,Feature()类型的矢量数据是一种中间类型的数据,相比于Geometry多了一些需要存储的属性信息,类似于本地矢量数据的属性表。

3.2.1 Feature基本操作方法

ee. Feature(Geometry,var_args)创建Feature对象。
set(var_args)设置属性,其中var_args可以是字典或直接设置key和value,如set("count",1)或set({"count":1})。
get(property)通过属性名获取 Feature的对应属性值。
select(propertySelectors,newProperties,retainGeometry)用于直接筛选只包含特定属性的 Feature,或者可以对筛选的属性重新命名。
propertyNames()获取Feature对应的所有属性名称。

3.2.2 空间操作方法

因为Feature是包含了属性信息的Geometry,所以两者的空间操作方法也基本相同。

geometry()获取Feature对应的Geometry。
area()计算Feature的面积,返回值为平方米。
centroid()提取Feature的中心点,返回值是对应的Feature中心坐标。
bounds()提取Feature对应的外接矩形。
buffer()对Feature做缓冲区,传入的参数是正数,向外做缓冲区,传入的是负数相反。
intersects()判断两个Feature是否相交,相交返回true,不相交返回false。
intersection()取得两个Feature的相交部分,返回值为相交部分的新Feature。
difference()取得两个Feature不同的部分,返回在第一个Feature但不在第二个Feature内的部分。
geometry().corrdinates()获取Feature的坐标信息。

3.3 矢量数据集合 ee.FeatureCollection() 

矢量数据集是GEE中常用的数据格式,在GEE中,矢量数据的操作大多数基于矢量数据集进行。

1)FeatureCollection创建和合并 

ee.FeatureCollection(Feature1,Feature2...)创建FeatureCollection
merge()合并两个FeatureCollection,例如:fCol1.merge(fCol2)

2)FeatureCollection的过滤

filterMetadata()通过元信息进行过滤。
filterDate()通过时间进行过滤。
filterBounds()通过空间进行筛选过滤。

3) 查询

first()返回给定集合的第一个条目。
toList()将集合的元素作为列表返回。
aggregate_first()聚合集合中对象的给定属性,计算集合中第一个对象的属性值。
aggregate_array()聚合集合中对象的给定属性,计算所选属性的所有值的列表。

4)循环遍历矢量数据集

在GEE中,一般不用for循环进行操作,常用循环方法为map、iterate。

1.map循环

基础语法:

fCol=fCol.map(function(feature){
    ....
    ....

})

2.iterate循环

iterate是GEE中为了弥补map循环的缺点新增的循环方法,map循环的缺陷是只能对集合的所有元素进行循环处理,但是没有办法操作它目前具体索引或前后其他元素数据。iterate循环定义了一个初始值,然后遍历集合的具体元素,这样就可以实现初始值和这个元素的操作,最后返回相关结果重新赋值给初始值。

基础语法:iterate(algorithm,first)

(1)参数algorithm是回调方法,即每一次循环要调用的方法,格式为

function(element_data, first_data){
    ....
}

element_data:集合的每一个元素;
first_data:初始化定义的first数据,返回值是计算的结果并且会重新赋值给first;

(2) 参数first定义的初始化值无需是列表类型,但它最终和想要获得的结果是同一个类型值。

5)矢量集合数据统计分析aggregate_xxxx

.aggregate_stas/_histogram/_count/_count_distinct/
.aggregate_max/_min/_sum/_mean/_product/
.aggregate_sample_var/_total_var/_sample_sd/_total_sd/

6)  矢量数据转栅格

在GEE中,可以使用reduceToImage(properties, reducer)将矢量数据集转为栅格数据。

其中,参数properties是要转为栅格数据的属性,reducer是使用什么计算方式,如均值等。

3.4 影像数据 ee.Image()

Image的创建主要有GEE自带的数据集,用户上传和ee.image()/constant()及ee.Image.pixelLonLat()方法。

3.4.1 基本属性信息设置和获取

在GEE中,基本属性的获取和设置主要通过set()和get()方法获取,其他属性操作方法如获取波段名称列表bandName()、获取波段类型列表方法bandTypes()等,常用的如下:

get()获取影像属性信息
id()获取影像id列表
date()获取影像时间
bandNames()获取波段名称列表
bandTypes()获取波段类型列表
select()选择波段
clip()将图像剪辑到几何或特征。 输出波段与输入波段完全对应,但几何体未覆盖的数据被屏蔽。 输出图像保留输入图像的元数据。 使用 clipToCollection 将图像剪辑到 FeatureCollection。 返回剪切的图像。
mask()获取或设置图像的掩码。 输出图像保留输入图像的元数据和足迹。 掩码从零变为另一个值的像素将用零填充,或在像素类型范围内最接近零的值填充。 注意:设置掩码的版本将被弃用。 要在以前未遮罩的像素上设置图像的遮罩,请使用 Image.updateMask。 要取消屏蔽以前屏蔽的像素,请使用 Image.unmask。

3.4.2 影像之间数学运算

处理影像最本质的原理是对各波段进行各种运算,GEE中定义了常用的数学运算。

1)直接数学运算

add()加运算
subtract()减运算
multiply()乘运算
divide()除运算
sin()/cos()....三角函数
matrixXXX矩阵运算
arrayXXX数组运算
bitwiseXXX按位运算

2) normalizedDifference

该方法为(A-B)/(A+B)计算公式的缩略写法,常用于各类指数计算,例如计算NDVI:

var ndvi = image.noemalizedDifference(["B5","B4"])

3) expression表达式

 表达式主要用于复杂的指数计算,如EVI等,该方法可以将计算的内容通过表达式格式直观的展示出来,用户只需替换表达式中具体的变量即可。下表为expression中使用的操作符号:
 

算数运算符+ - * / % **加、减、乘、除、模除、指数(幂)
比较运算符==  !=  < > <= >=相等、不等、小于、大于、小于等于、大于等于
逻辑运算符&& || ! ^并、或、非、异或
条件运算符? :if then else

示例:

var EVI = image.expression(
    '2.5 * ((NIR - RED)/(NIR + 6 * RED -7.5 *BLUE + 1))',
    {
        'NIR' : image.select('B5'),
        'RED' : image.select('B4'),
        'BLUE' : image.select('B2'),
    }
).rename("EVI");

3.4.3 统计计算

1)   reducer计算

这种方法主要用于多波段的影像统计分析,例如计算三个波段的均值,可以使用ee.Reducer.mean()获取。

ee.Reducer.allNonZero()如果其所有输入都非零,则返回 1,否则返回 0。
ee.Reducer.anyNonZero()如果它的任何输入非零,则返回 1,否则返回 0。
ee.Reducer.count()返回一个计算非空输入数量的 Reducer。
ee.Reducer.countDistinct()返回一个计算不同输入数量的 Reducer。
ee.Reducer.mean()返回计算其输入的(加权)算术平均值的 Reducer。
ee.Reducer.max(numInputs)创建一个输出其(第一个)输入的最大值的化简器。 如果 numInputs 大于 1,则还输出附加输入的相应值。
ee.Reducer.product()返回一个计算其输入乘积的 Reducer。
ee.Reducer.sum()返回计算其输入的(加权)总和的 Reducer。
...........

2)reduceRegion

该方法用于统计某个区域的具体信息,基本语法如下:

reduceRegion(reducer, geometry, scale, crs, crsTransform, bestEffort, maxPixels, tileScale)



(1)reducer:计算方法,如计算均值mean等;
(2)geometry:统计区域的边界;
(3)scale:计算统计使用的分辨率;
(4)crs: 投影信息;
(5)crsTransform:投影信息参数;
(6)bestEffort:如果统计区域内像素过多,是否只取可以计算的最大像素数据;
(7)maxPixels:统计区域最多可以有多少像素;
(8)tileScale:系统内部优化参数,填写2的N次方,避免出现计算机内存不足问题;

其常用参数是reducer、geometry、scale、maxPixels、tileScale,其他在使用时一般使用默认值即可。 

示例代码:

var mean = ndvi.reduceRegion({
    reducer: ee.Reducer.mean(),
    geometry: roi,
scale: 30
})


其中roi为划定区域的geometry;
ndvi为从影像中计算得出的ndvi数据;

3)reduceRegions

该方法与上述reduceRegion基本相同,不同之处在于该方法可以对多个指定区域进行统计分析,并将结果数据写入新的矢量数据且返回这个矢量数据,基本语法如下:

reduceRegions(collection, reducer, scale, crs, crsTransform, tileScale)


(1)collection:统计分析使用的矢量集合数据;
(2)reducer:计算方法,如计算均值mean等;
(3)scale:计算统计使用的分辨率;
(4)crs: 投影信息;
(5)crsTransform:投影信息参数;
(8)tileScale:系统内部优化参数,填写2的N次方,避免出现计算机内存不足问题;

 示例代码:

var mean = ndvi.reduceRegion({
    reducer: ee.Reducer.mean(),
    geometry: roi,
scale: 30
})


其中roi为划定多个矢量区域的geometry;
ndvi为从影像中计算得出的ndvi数据;

3.4..4 栅格数据转矢量

栅格数据转换为矢量数据在做数据分析或提取边界是非常有用,在GEE中转换方法是reduceToVectors,基本语法如下:

reduceToVectors(reducer, geometry, scale, geometryType, eightConnected, labelProperty, crs, crsTransform, bestEffort, maxPixels, tileScale, geometryInNativeProjection)



(1)reducer:计算方法;
(2)geometry:范围;
(3)scale:分辨率;
(4)geometryType:生成的适量类型,默认是polygon类型;
(5)eightConnected:是否是八连通,默认是true;
(6)labelProperty:属性表的标签,默认label;
(7)crs:投影信息;
(8)crsTransform:投影信息参数;
(9)bestEffort:如果像素过多,是否只提取有限像素实现计算要求;
(10)maxPixels:最大像素数量,默认le8,通常设置lel3;
(11)tileScale:优化内部计算使用,可以减少计算内存溢出问题;
(12)geometryInNativeProjection:在像素的投影信息下创建矢量数据,默认为false,这个选项几乎都是false;

 

3.5 影像集合 ee.ImageCollection()

影像集合与矢量集合数据处理方法类似,常用的有过滤方法、循环遍历方法等。

3.5.1 获取基本属性

ee.ImageCollection()创建影像数据集
ee.ImageCollection.load()加载影像数据集
set()设置影像数据集属性
get()获取影像数据集属性
size()获取影像集合的大小
limit()固定筛选指定个数影像

3.5.2 过滤筛选

filterBounds空间过滤
filterDate时间过滤
filterMetadata元信息过滤
filter过滤器

3.5.3 循环遍历

在ImageCollection中,循环遍历的方法为map或iterate,用法与矢量数据集的循环遍历用法相似,可参考本篇上述内容。

3.5.4 统计计算

1)reduce

影像中reduce用于计算多波段数据,此处reduce方法则是要将影像集合中的所有影像按照对应波段计算,然后生成单景影像。在GEE中,所有的操作底层都是在操作像素,所以计算结果是对应的所有像素的计算结果。

reduce(reducer, parallelScale)


(1)reducer:使用计算方法,如均值、最大值、最小值等;
(2)parallelScale:缩放比例,是一个后台的优化参数,如果计算内存溢出可以设置大一些的参数,如2、4等。

2)reduceColumns

该方法用来统计属性的基本信息,常见的操作如统计集合的所有索引信息,并且返回这个列表。

reduceColumns(reducer, selectors, weightSelectors)


(1)reducer:使用计算方法,如均值、最大值、最小值等;
(2)selectors:属性列表;
(3)weightSelectors:属性列表对应的权重信息,通常是默认值;

  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 将模型上传到Google Earth Engine (GEE) 并使用的步骤如下: 1. 准备数据:首先,您需要准备您的模型所需的数据数据可以来自不同的来源,包括卫星图像、气象数据等。确保您的数据已经导入到GEE数据目录中。 2. 创建模型:使用合适的编程语言(例如JavaScript)创建您的模型。模型可以是机器学习模型、地理空间分析模型或其他类型的模型。 3. 上传模型:将您的模型上传到GEE的代码编辑器中。您可以使用GEE提供的API来上传模型,例如`ee.Model.fromAsset()`函数。 4. 部署模型:在上传模型后,您可以选择将其部署为一个可调用的函数,以便在GEE中使用。部署模型的方法取决于您使用的编程语言和模型类型。例如,如果您使用JavaScript开发,您可以使用GEE的`ee.Function()`函数来将模型部署为函数。 5. 在GEE中使用模型:一旦您的模型成功部署,您可以在GEE的代码编辑器中使用它。通过调用模型函数并传入输入参数,可以对数据进行分析、预测或其他操作。 需要注意的是,GEE是一个强大的地理空间分析平台,因此在将模型上传到GEE之前,您可能需要熟悉GEE的API和编程语言(例如JavaScript)的使用。如果您之前没有使用过GEE,建议先学习相关的文档和示例,以便更好地理解和使用GEE的功能。 ### 回答2: 要将模型上传到Google Earth Engine并使用,您需要按照以下步骤进行操作: 1. 创建Google Earth Engine账户:首先,您需要创建一个Google Earth Engine的账户。您可以使用现有的Google账户登录或创建一个新的账户。 2. 安装Earth Engine Python API:您需要在本地计算机上安装Google Earth Engine的Python API。可以在Google Earth Engine官方文档中找到安装指南。 3. 编写Python脚本:根据您的模型需求,编写一个Python脚本,可以使用Earth Engine Python API库来访问和处理遥感数据。 4. 将模型上传到Earth Engine:在Python脚本中,您可以使用Earth Engine Python API上传模型。首先,您需要将模型以适当的格式保存到本地计算机。然后,使用API提供的方法将模型上传到Earth Engine服务器。 5. 使用模型:一旦模型成功上传到Earth Engine,您就可以在Earth Engine的平台上使用它了。您可以使用Python脚本中的Earth Engine Python API代码,连接到模型并使用它来处理和分析遥感数据。 总之,要将模型上传到Google Earth Engine并使用,您需要创建一个Earth Engine账户,安装Earth Engine Python API,编写Python脚本,将模型上传到Earth Engine服务器,并使用Earth Engine Python API来连接和使用模型。这样,您就可以在Earth Engine的平台上进行遥感数据处理和分析了。 ### 回答3: 要将模型上传到Google Earth Engine并使用,需要按照以下步骤进行操作: 1. 创建Google Earth Engine账号:首先,在Google Earth Engine网站上创建一个账号。如果没有账号,需要申请并等待Google审核通过。 2. 安装Earth Engine Python API:在本地计算机上安装Earth Engine Python API。可以使用pip工具来安装,在终端中运行以下命令:pip install earthengine-api 3. 创建一个Earth Engine脚本:使用Python编写一个Earth Engine脚本,在该脚本中定义模型的输入和输出。可以使用Earth Engine提供的算法和数据集,也可以自己上传和使用数据集。 4. 将脚本上传到Earth Engine代码编辑器:将编写的脚本上传到Earth Engine代码编辑器中。在代码编辑器中,可以编辑和运行脚本,并查看结果。 5. 运行模型脚本:在代码编辑器中,运行模型脚本以上传模型到Earth Engine。脚本将发送请求给Earth Engine服务器,服务器将运行脚本并生成结果。 6. 使用结果:脚本运行完成后,可以使用Earth Engine提供的工具来查看和分析结果。可以在Google Earth Engine平台上使用可视化工具来显示生成的结果,并进行进一步的分析和处理。 总之,要将模型上传到Google Earth Engine并使用,需要创建账号,安装Python API,编写脚本,上传到代码编辑器,运行脚本,然后使用Earth Engine提供的工具来查看和分析结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HM-hhxx!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值