list object has no attribute ZScan_GEE数据类型—Dictionary,List,Array

文本和数字的功能是进行描述和数据储存,而Dictionary,List和Array可以看作是文本和数字间通过不同结合形式而形成的新的数据类型。简单的说,Dictionary,List和Array是拥有了一定“格式”的文本或数字

1 Dictionary

//创建一个字典变量
var Dictionary_Profile = ee.Dictionary( {
Name: 'Mary',
Gender: 'Female',
Age: '> 30',
Location: 'Beijing'
} );
//冒号左边是关键词(Key),它就是变量,所以不需要加引号,冒号右边是关键词对应的内容(content)
//有相同 Key 字典变量组合后 true 在合并的字典中就会将重复的内容保留为第二个变量的值,false反之
var Dict_Combine = Dict_1.combine( Dict_2, true );
//字典内容更改
var Dict_Change = Dict_1.set('Age', '<30' );
//字典管检测陈列
var List_Keys= Dict_1.keys( );
print( List_Keys);
var The_Name = Dict_1.get('Name' );//单字段信息读取
var The_Values = Dict_1.values(['Name','Age','Location' ]);//多字段查询
var The_Contain = Dict_1.contains('Hight');//查询括号内的关键词是否存在于字典
var The_Size = Dict_1.size();//尺寸查询

2 List

List主要用来存储一系列数据,这些数据可以由不同的格式(比如数字,文本,字典等)组成。我们可以把List理解为“文件夹”,用来在GEE的代码中存储各种数据。

List内部通过逗号“,”来分割空间,同时其中的每一个空间都可以用来存储任意数据格式(包括遥感图像和矢量文件)的数据

var List_Example = ee.List( [1,2,3,'A','B','C',['Hello','Good','Bye']] );
//第7个位置(编号为6的位置是第七位)是另一个List
var List_Repeat = ee.List.repeat( 'Yeah!', 5 );//重复创建List
var List_Sequence= ee.List.sequence( 0, 9, 1 , null );//等差创建List
//分别代表等差数列的“首部数字”,“尾部数字”,“公差”和“项数”,其中“公差”和“项数”只能存在一个
///借助Docs查询
var List_1 = ee.List( [1992,01,20,'No.1'] );
var List_2 = List_1.set(0,1993);//两个参数分别表示“改写位置”和“改写内容”
var List_3 = List_1.set(-1,'No.2');//
var List_2 = List_1.replace(01,05);//替换第一个出现的01
var List_3 = List_1.replaceAll(01,05);//替换所有
var List_2 = List_1.add('Male');//末尾添加
var List_3 = List_1.insert(3,'Chongqing');//第四个位置插入
var List_1 = ee.List( [1992,01,20,'No.1']);//对应位置的元素打包到子数组中
var List_2 = List_1.zip(['Year','Month','Day']);
var List_Reverse = List_1.reverse( );//元素位置倒转
var List_Rotate = List_1.rotate(5);//以List_1的对称中心为中点进行180度翻转
var List_Sort = List_1.sort( );//排序
var List_2 = List_1.swap( 5,8 );//交换位置处元素
var List_2 = List_1.flatten( );//将List中的元素铺平到一位列表中
var List_1 = ee.List([1,1,2,2,3,3,4,4,5,5])
var List_2 = List_1.get(3);
var List_3 = List_1.remove(3);//删除第三个元素
var List_4 = List_1.removeAll([3,4]);//删去所谓值为3和4的元素
//判断等于与包含
var True_False_1 = List_1.equals( List_2 );
var True_False_2 = List_1.contains('li');
var True_False_3 = List_1.containsAll(List_3);
//5在List中出现的频率
var Frequency_Number = List_Number.frequency(5)
//Do是一个函数
var List_2 = List_1.map( Do );
//尺寸计算 相同
var Length_Number_1 = List_1.size( );
var Length_Number_2 = List_1.length( );

理解.map命令的作用是对List中的每一个对象(Object)都执行了某种相同的操作,这种相同的操作由function命令进行编写

List的循环命令

//求1-1000自然数的和
var List_1 = ee.List.sequence(1,1000,1);
function Do ( Number_1, Number_2 )
{ return ee.Number(Number_1).add(Number_2);
}
var List_2 = List_1.iterate( Do, 0 );
print( List_1, List_2 );

理解.iterate()命令有两个参数,第一个参数是执行循环要执行的参数方程,第二个是循环的初始量就行。

61f54d32b7a16a72c8c02365f35e5c95.png

3 Array

“数组,阵列,矩阵”,其本质上仍属于List的范畴。作为高阶遥感分析中的核心数据格式(使用Array会灵活很多),可以这样理解Array:“带有方向的List”,同时应该注意这种List只能由数字构成。

把方括号外的(List间)逗号想象成换行键按下后的效果

var Array_1 = ee.Array( [[1], [2], [3]]); //3*1
var Array_2 = ee.Array( [[1, 2, 3]]); //1*3
print( Array_1,Array_2 );
var Array_1 = ee.Array.identity( 5 );//单位矩阵 对角线为1 其余为0

矩阵的重复

.repeat( , )的作用是将原矩阵沿着某个方向重复若干次,其中第一个参数是重复方向,第二个参数是拷贝个数。

dd9298952e039d1a0e6adf8fb0012504.png
矩阵重复
var Array_1 = ee.Array([ [ 1,2,3 ],[ 4,5,6 ] ]);
var Array_2 = Array_1.repeat( 1,2 );

矩阵的掩膜命令

var Array_1 = ee.Array( [ [1,1],[2,2],[3,3],[4,4]] );
var Array_2 = ee.Array( [ [ 0],[ 0],[ 1],[ 0]] );
var Array_3 = Array_1.mask( Array_2 );
print( Array_1, Array_2, Array_3 );

e23b77db350aad8682281de2fcc46999.png

矩阵的倒置命令

var Array_1 = ee.Array( [ [111,111,111],
[222,222,222] ]);
var Array_2 = Array_1.transpose();
var Array_3 = Array_2.transpose()
print( Array_1, Array_2,Array_3);

0b44f4d233acd309c3fc549489f40f9d.png

矩阵的数据转换

var Array_1 = ee.Array( [ [1.1, 2.2, 3.3], [4.4, 5.5, 6.6] ] );
var Array_2 = Array_1.uint8();
print( Array_1, Array_2 );

f2672d7175d4f92ff9efd5259514d506.png

矩阵的比较

相等处的元素为1,不等为0

var Array_1 = ee.Array( [ [1,1],[2,2],[3,3],[4,4]] );
var Array_2 = ee.Array( [ [1,2],[3,4],[4,3],[2,1]] );
var Array_3 = Array_1.eq( Array_2 );
print( Array_1, Array_2, Array_3 );

78dfb21b666f798dab9d87bfba6e728a.png

矩阵的交并

var Array_1 = ee.Array( [ [1,0],[0,0],[3.14,1.41]] );
var Array_2 = ee.Array( [ [1,2],[0,0],[3,4]] );
var Array_and = Array_1.and( Array_2 );
var Array_or = Array_1.or( Array_2 );
print( Array_1, Array_2, Array_and, Array_or );

dceeb02c4361a468b552fa0d9492b147.png

矩阵的函数命令(类似的命令参照Number部分)

var Array_1 = ee.Array( [-3.14, 1.414] );
var Array_2 = Array_1.ceil().abs();

矩阵的数学命令(位运算 移位等类似参照number,不过是多了几行几列的元素)

var Array_1 = ee.Array( [ [1,2,3,4] ] );
var Array_2 = ee.Array( [ [5,6,7,8] ] );
var Result_Array = Array_1.add(Array_2);
print ( Array_1, Array_2, Result_Array );

b358529231c1b748a2cdf7893c155eec.png

eeb8852c85592dad49b23d806673ad6e.png

参考:
由王金柱(西南大学&迪肯大学)创作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值