• 【GEE笔记5】数据筛选Filter


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

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

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

    具体方法有:

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

    1.关系比较型

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

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

    var result_filter = (FeatureCollection/ImageCollection).fliter(filter_1).first();
    
    • 1
    • 案例:
    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) //返回结果
    
    • 1
    • 2
    • 3

    2.差值筛选器

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

    var filter_1 = ee.Filter.maxDifference('最大差值','属性字段','字段数值'); 
    var filter_1 = ee.Filter.maxDifference('10','area',100); 
    //表示面积字段area与100最大相差10的区域 
    
    • 1
    • 2
    • 3
    var result_filter = (FeatureCollection/ImageCollection).fliter(filter_1);   
    
    • 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('字段''包含字符串');
    // 筛选出指定字段内包含某一字符为的数据
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 字符范围筛选ee.Filter.Rangecontains()
    var filter_1 = ee.Filter.rangeContains('字段''起始字母', '终止字母');
    'var filter_1 = ee.Filter.rangeContains('NAME','B', 'D');'
    //表示筛选出NAME字段中包含字母B到D的全部区域
    
    • 1
    • 2
    • 3
    • 针对某些字段内以列表形式存在的字段值,需要用到ee.Filter.listContains()
    var filter_1 = ee.Filter.listContains('字段''列表内包含值');
    
    • 1
    • 针对多值进行筛选时,需要用到列表进行多值筛选ee.Filter.inList()
      创建一个list,对属于这个list的值进行筛选
    var list_1 = ee.List('字符串1', '字符串2', '字符串3');
    var filter_1 = ee.Filter.inlist('字段',list_1);
    //筛选出字段中包含列表内某些元素的结果(多值筛选)
    
    • 1
    • 2
    • 3

    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');
    //按月份筛选
    
    • 1
    • 2
    • 3
    • 4
    • 日历筛选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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    其中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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    对于

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

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    用Python中的马尔科夫链模拟文本
    html的日期选择插件
    JDK1.8新特性(部分)【Lambda表达式、函数式接口】--学习JavaEE的day41
    Java递归实现迷宫问题和八皇后
    一Vue基础:绑定样式、条件渲染、列表渲染、列表过滤
    在Linux下安装配置bochs,并成功跑一个简单的boot引导(超详细)
    代码随想录day39 || 动态规划 || 不同路径
    html5期末大作业:基于HTML+CSS技术实现——传统手工艺术雕刻网站(3页)
    PIL如何批量给图片添加文字水印?
    【无标题】
  • 原文地址:https://blog.csdn.net/qq_41159191/article/details/126201426