【GEE笔记5】数据筛选Filter

15 篇文章 16 订阅

过滤筛选就是从数据中筛选出符合条件的数据,比如在海量的Landsat数据中选出符合你的研究区间和研究时间内的数据。

在GEE中实现过滤的方法叫做Filter,主要的过滤规则可分为:

  • 空间过滤
  • 时间过滤
  • 属性过滤

具体方法有:

  1. 关系比较型筛选器
ee.Filter.eq()	ee.Filter.neq()	ee.Filter.ge()	ee.Filter.gte()	ee.Filter.le()	
ee.Filter.lte()	
  1. 差值筛选器
ee.Filter.maxDifference()
  1. 字符筛选器
ee.Filter.stringContains()	ee.Filter.StarsWith()	ee.Filter.EndWith()	
ee.Filter.Rangecontains()	ee.Filter.listContains()	ee.Filter.inList()
  1. 时间筛选器
ee.Filter.calendarRange()	ee.FilterDateRangeContains()	ee.Filter.dayOfYear()
  1. 与或非筛选
ee.Filter.and()	ee.Filter.or()	ee.Filter.not()	ee.Filter()
// ee.Filter.and = ee.Filter

1.关系比较型

var filter_1 = ee.Filter.eq/neq/gt/gte/lt/lte('字段','字段值');  
	// eq/ neq/ gt/ gte/ lt/ lte
	// equales/ notEquals/ greaterThan/ greaterThanOrEquals/ lessThan/ lessThanOrEquals
	//关系进行判断,返回筛选器
var result_filter = (FeatureCollection/ImageCollection).fliter(filter_1);      
//此时筛选结果仍为Collection类型。

若返回非Collection类型,如下所示:

var result_filter = (FeatureCollection/ImageCollection).fliter(filter_1).first();
  • 案例:
var CQ_Area = CQ.get('Shape_Area') 
var Smaller_Than_CQ_Filter = ee.Filter.lt('Shape_Area',CQ_Area) // 筛选出面积比CQ小的元素
var Smaller_Than_CQ_Provinces = China_Provinces.filter(Smaller_Than_CQ_Filter) //返回结果

2.差值筛选器

ee.Filter.maxDifference()
两个量之间某一变量的差值小于设定阈值

var filter_1 = ee.Filter.maxDifference('最大差值','属性字段','字段数值'); 
var filter_1 = ee.Filter.maxDifference('10','area',100); 
//表示面积字段area与100最大相差10的区域 
var result_filter = (FeatureCollection/ImageCollection).fliter(filter_1);   

3.字符筛选器

  • 起始字符串ee.Filter.StarsWith()
  • 末尾字符串ee.Filter.EndWith()
  • 中间包含字符串ee.Filter.stringContains()
var filter_1 = ee.Filter.stringStartsWith('字段''起始字符串');
// 筛选出指定字段内以某一字符为开头的数据
var filter_2 = ee.Filter.stringEndsWith('字段''末尾字符串');
// 筛选出指定字段内以某一字符为末尾的数据
var filter_3 = ee.Filter.stringContains('字段''包含字符串');
// 筛选出指定字段内包含某一字符为的数据
  • 字符范围筛选ee.Filter.Rangecontains()
var filter_1 = ee.Filter.rangeContains('字段''起始字母', '终止字母');
'var filter_1 = ee.Filter.rangeContains('NAME','B', 'D');'
//表示筛选出NAME字段中包含字母B到D的全部区域
  • 针对某些字段内以列表形式存在的字段值,需要用到ee.Filter.listContains()
var filter_1 = ee.Filter.listContains('字段''列表内包含值');
  • 针对多值进行筛选时,需要用到列表进行多值筛选ee.Filter.inList()
    创建一个list,对属于这个list的值进行筛选
var list_1 = ee.List('字符串1', '字符串2', '字符串3');
var filter_1 = ee.Filter.inlist('字段',list_1);
//筛选出字段中包含列表内某些元素的结果(多值筛选)

4. 时间筛选器

  • 年中日/月筛选ee.Filter.dayOfYear()
var filter_1 = ee.Filter.calendarRange(day1, day2, 'day_of_year');
//筛选一年中第day1到第day2天中的影像
var filter_2 = ee.Filter.calendarRange(month1, month2, 'month_of_year');
//按月份筛选
  • 日历筛选ee.Filter.calendarRange()
    案例
    筛选某地点2022-01-01至2022-08-01的Landsat8数据
var Point = ee.Geometry.Point(119.2351, 29.3642);
var L8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_TOA")
                .filterDate('2021-01-01','2022-01-01')
                .filterBounds(Point);
                
var L8_00_200_Filter = ee.Filter.calendarRange(00,200,'day_of_year');
var L8_00_200_Images = L8.filter(L8_00_200_Filter);

print(L8,L8_00_100_Images);

其中L8有19景影像,前200天有13景
在这里插入图片描述

  • 时间范围和属性包含筛选ee.FilterDateRangeContains()
var Point = ee.Geometry.Point(119.2351, 29.3642);
var L8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_TOA")
                .filterDate('2021-01-01','2022-01-01')
                .filterBounds(Point);

var Date_Range   = ee.DateRange( '2021-01-01', '2021-05-01' );
var Rang_Filter  = ee.Filter.dateRangeContains(null, null, 'DATE_ACQUIRED', Date_Range );
var L8_Filted_Images = L8.filter(Rang_Filter)

print(L8,L8_Filted_Images)

对于

var Rang_Filter  = ee.Filter.dateRangeContains(null, null, 'DATE_ACQUIRED', Date_Range );

解释如下:
在这里插入图片描述

5. 与或非筛选

var filter_1 = ee.Filter.and(filter_A, filter_B);
//筛选交filter
var filter_2 = ee.Filter.or(filter_A, filter_B);
//筛选并filter
var filter_2 = filter_1.not();
//要filter_1筛选结果不符合的部分
ee.Filter.and = ee.Filter
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vigo*GIS_RS

来瓶可乐~

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

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

打赏作者

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

抵扣说明:

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

余额充值