GEE10:Earth Engine Reducers的图像矢栅转换及区域统计

news2024/11/25 20:29:31

目录

    • 1. Raster to Vector Conversion:image.reduceToVectors()
    • 2. Vector to Raster Conversion:featureCollection.reduceToImage()
    • 3. Grouped reductions
      • 3.1 Grouped reduceRegions (aka Zonal Statistics)
    • 4. Weighted Reductions

1. Raster to Vector Conversion:image.reduceToVectors()

在这里插入图片描述
将Image的栅格格式转换为FeatureCollection的矢量格式
在这里插入图片描述

// Reducers: Image.reduceToVectors()

// China boundary.
var china = countries.filter(ee.Filter.eq('ADM0_NAME', 'China'))

// Input 2012 nightlights image, clipped to China border
var nl2012 = ee.Image('NOAA/DMSP-OLS/NIGHTTIME_LIGHTS/F182012')
  .select('stable_lights')
  .clip(china);

// Arbitrary thresholds on the 6-bit nightlights image
var zones = nl2012.gt(30).add(nl2012.gt(55)).add(nl2012.gt(62));
zones = zones.mask(zones.neq(0));

// Convert zones of the thresholded nightlights to vectors
var vectors = zones.addBands(nl2012).reduceToVectors({
  geometry: china,
  crs: nl2012.projection(),
  scale: nl2012.projection().nominalScale(),
  geometryType: 'polygon',
  eightConnected: false,
  labelProperty: 'zone',
  reducer: ee.Reducer.mean(),
  // timeout done
  maxPixels: 1e10,
  tileScale: 2
});

// Display the result
Map.setCenter(117.6225, 39.712, 9);
Map.addLayer(zones, {min: 1, max: 3, palette: ['0000FF', '00FF00', 'FF0000']}, 'raster');
var display = ee.Image(0).mask(ee.Image(0)).paint(vectors, '000000', 3);
Map.addLayer(display, {palette: '000000'}, 'vectors');

在这里插入图片描述
在这里插入图片描述

2. Vector to Raster Conversion:featureCollection.reduceToImage()

在这里插入图片描述

// Reducers: FeatureCollection.reduceToImage()
var tiger = ee.FeatureCollection("TIGER/2010/Blocks");

Map.addLayer(tiger, {}, 'tiger')

var popImage = tiger.reduceToImage({
    properties: ['pop10'], 
    reducer: ee.Reducer.first()
});


Map.addLayer(popImage, {min: 0, max: 1000, palette: ['blue', 'green', 'red']}, 'popImage');

在这里插入图片描述
在这里插入图片描述

3. Grouped reductions

对图像的属性归为一个组,以组的形式进行显示,并且将属性按照州编码就行归类,显示每个州的总属性。

// To compute the total population and number of housing units in each state, 
// this example groups the output of a reduction of a census block FeatureCollection.

// Load a collection of US census blocks.
var blocks = ee.FeatureCollection('TIGER/2010/Blocks');

// Compute sums of the specified properties, grouped by state code.
var sums = blocks
  .filter(ee.Filter.and(
    ee.Filter.neq('pop10', null),
    ee.Filter.neq('housing10', null)))
  .reduceColumns({
    selectors: ['pop10', 'housing10', 'statefp10'],
    reducer: ee.Reducer.sum().repeat(2).group({
      groupField: 2,
      groupName: 'state-code',
    })
});

// Print the resultant Dictionary.
print(sums);

结果展示:
在这里插入图片描述

3.1 Grouped reduceRegions (aka Zonal Statistics)

通过使用 reducer.group() 按指定输入的值对 reducer 的输出进行分组,可以获得 Image 或 FeatureCollection 的每个区域中的统计信息。
要对 image.reduceRegions() 的输出进行分组,可以指定一个按整数像素值定义分组的分组带。
这种类型的计算有时称为 “区域统计” ,其中区域被指定为分组带,统计信息由Reducer确定。

在这里插入图片描述

// Reducers: Grouping, land cover
var mcd12q1 = ee.ImageCollection("MODIS/006/MCD12Q1"),
    dmspols = ee.ImageCollection("NOAA/DMSP-OLS/NIGHTTIME_LIGHTS"),
    geometry = 
    /* color: #d63000 */
    /* displayProperties: [
      {
        "type": "rectangle"
      }
    ] */
    ee.Geometry.Polygon(
        [[[-125.08281249999999, 48.998022477518326],
          [-125.08281249999999, 24.871185409749824],
          [-61.71367187499999, 24.871185409749824],
          [-61.71367187499999, 48.998022477518326]]], null, false);

// MODIS land cover categories in 2020.
var landcover = mcd12q1.filterDate('2020').first()
  .select('LC_Type1'); // IGBP

// Nightlights imagery inputs
var nl2001 = dmspols.filterDate('2001').first().select('stable_lights')
var nl2012 = dmspols.filterDate('2012').first().select('stable_lights')

// Compute the nightlights decadal difference, add land cover codes.
var nlDiff = nl2012.subtract(nl2001).addBands(landcover);

// Grouped mean: change of nightlights by land cover category.
print(nlDiff.reduceRegion({
  reducer: ee.Reducer.mean().group({
    groupField: 1, 
    groupName: 'code',
  }), 
  geometry: geometry, 
  scale: 1000,
  maxPixels: 1e8
}));

结果展示:
在这里插入图片描述

4. Weighted Reductions

默认情况下,应用于图像的Reducer根据掩码值对输入进行加权。这与通过clip()等操作创建的分数像素有关。通过在Reducer上调用 unweighted() 来调整这种行为。使用未加权的Reducer将强制该区域中的所有像素具有相同的权重。

var weighted = image
  .reduceRegion({
    reducer: ee.Reducer.mean(),
    geometry: geometry,
    scale: 30
}).get('nd');

var unweighted = image
  .reduceRegion({
    reducer: ee.Reducer.mean().unweighted(),
    geometry: geometry,
    scale: 30
}).get('nd');

例子:

var l8sr = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2");

// Create an arbitrary region.
var geometry = ee.Geometry.Rectangle(-122.496, 37.532, -121.554, 37.538);
Map.centerObject(geometry)
Map.addLayer(geometry)

// Load a Landsat 8 input image.
var image = l8sr.filterBounds(geometry).first()

// Make an NDWI image.  It will have one band named 'nd'.
var ndwi = image.normalizedDifference(['SR_B3', 'SR_B5']);

// Compute the weighted mean of the NDWI image.
var weighted = ndwi
  .reduceRegion({
    reducer: ee.Reducer.mean(),
    geometry: geometry,
    scale: 30})
  .get('nd');

// Compute the UN-weighted mean of the NDWI image.
var unweighted = ndwi
  .reduceRegion({
    reducer: ee.Reducer.mean().unweighted(),
    geometry: geometry,
    scale: 30})
  .get('nd');

// Observe the difference between weighted and unweighted reductions.
print('weighted:', weighted);
print('unweighted:', unweighted);

weighted:
-0.21169499738972458
unweighted:
-0.21157474937536905

IDW:

// Mock up a feature collection.
var fc = ee.FeatureCollection([
  ee.Feature(ee.Geometry.Point([110.14444050980546, 28.774132610921978])),
  ee.Feature(ee.Geometry.Point([112.93496785355546, 28.23347679807143])),
  ee.Feature(ee.Geometry.Point([111.26504597855546, 29.235334712701505])),
  ee.Feature(ee.Geometry.Point([111.44082722855546, 27.378325472980837])),
  ee.Feature(ee.Geometry.Point([113.19863972855546, 27.884456252339465])),
  ee.Feature(ee.Geometry.Point( [113.72598347855546, 28.484840062759634]))
]);


// Set maximum distance to consider.
var maxDist = 1e4; // Meters

// Calculate pixel distance to nearest point.
var distance = fc.distance({searchRadius: maxDist, maxError: 10});

// Convert distance to linear weight between 0 and 1.
var weight = distance.subtract(maxDist).abs().divide(maxDist);

// Display the distance and weight images.
Map.centerObject(fc, 9);
Map.addLayer(distance, {min:0, max: maxDist}, 'Meters');
Map.addLayer(fc, {min:0, max: 1}, 'Weight');
Map.addLayer(fc, {color: 'red'}, 'Points');

结果展示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM整合案例[企业权限管理系统]-学习笔记01【SVN的基本介绍】

Java后端-学习路线-笔记汇总表【黑马程序员】SSM整合案例[企业权限管理系统]-学习笔记01【SVN的基本介绍】【day01】SSM整合案例[企业权限管理系统]-学习笔记02【TortoiseSVN的基本操作】SSM整合案例[企业权限管理系统]-学习笔记03【TortoiseSVN及IDEA下SVN的使用】SSM整合案例…

四旋翼无人机学习第21节--allergo软件中的元器件高亮显示与丝印3D显示设置

1 allergo软件中的元器件高亮显示 在设计PCB的时候,会出现元器件高亮的情况,并且在项目重启后,这种现象依然存在。现在终于找到了原因的所以。点击高亮的元器件,右键选择选择Dehighlight即可。 取消高亮后的元器件显示。 2 解决…

已解决Building wheels for collected packages: lxml

已解决(pip安装第三方模块lxml模块报错)Building wheels for collected packages: lxml Building wheel for lxml (setup.py) … error error: subprocess-exited-with-error python setup.py bdist_wheel did not run successfully. note: This error o…

Polar vector and axial vector(极矢量和轴向矢量)

Polar vector and axial vector引言Polar vector中文翻译定义第一种第二种第三种性质举例Axial vector中文翻译定义性质举例讨论引言 今天来给大家介绍一下Polar vector和axial vector,即极矢量和轴向矢量。 Polar vector 中文翻译 极矢量 定义 第一种 在基础…

倍增算法讲解——序列、RMQ和LCA

倍增算法 文章目录倍增算法定义倍增在序列上的应用查找例一例二快速幂RMQ(区间最值)天才的记忆LCA(最近公共祖先)向上标记法树上倍增法祖孙询问Tarjan算法距离总结定义 倍增 从字面的上意思看就是成倍的增长 ,这是指我们在进行递…

C++系列案例-大数据减法-绘制余弦曲线-兔子数量-快速排序

文章目录关于C的几个经典案例代码大数减法问题绘制余弦曲线兔子数量问题快速排序问题函数运行全部源码关于C的几个经典案例代码 大数减法问题 因为较大整数的相加很可能超出整型的32位限制,或者本身就是超出限制的大数之间的加减运算。 所以我们需要单独写一个能大…

C语言程序设计易混、易错知识点(下篇)

有环的单向链表跟无环的单向链表不可能相交 -正确 有环的单向链表和无环的单向链表不能相交,因为当相交的时候,无环的单向链表也会被迫存在一个环,只不过这个环的”起点“可能不是原来单向链表的头结点 如果两个单向链表相交,那这…

Vmware Pro 17 设置共享文件夹

目录 一、概述 二、在VMware设置共享文件夹详细步骤 一、概述 VMware 是运行在Windows系统上的,很多时候需要将 Windows 系统上的资料或代码复制到运行在VMware上的虚拟机,通常有两种方法可以完成复制,一个是在Vmware软件上设置共享文件夹&…

网络分层模型和应用协议

网络分层模型和应用协议 分层模型 分层模型的意义 当遇到一个复杂问题的时候,可以使用分层的思想把问题简单化。 比如, 你有一杯82年的可乐,想要分享给你的朋友张富贵,但你们已经很久没有联系,要完成这件事&#xf…

《深入浅出计算机组成原理》学习笔记 Day2

文章目录指令篇1. 从高级语言到机器指令1.1 CPU的作用1.2 代码如何变为机器码1.3 指令的分类2. 指令跳转2.1 CPU 是如何执行指令2.2 条件和循环的本质3. 函数调用3.1 栈的作用3.2 Stack Overflow指令篇 1. 从高级语言到机器指令 计算机或者说CPU本身并没有能力去理解这些高级…

配置远程服务器时候sftp的配置以及注意事项【在本地配置sftp】

我之所以不用PutTy是因为这个工具有问题,在我的电脑上怎么也安装不上,也找了很多办法根本没用。如这个 我试过修改权限以及各种安装办法连安装都不行。 所以才决定直接使用vscode自带的上传工具上传到服务器。 想要上传到服务器,需要使用vsc…

2023牛客寒假算法基础集训营1 -- G-鸡格线(map + 内置二分写法)

题目如下: 示例1 输入 3 5 0 2 114514 2 1 1 2 2 2 1 1 3 1 2输出 114516 114551 3445思路 or 题解: 通过 f(x)round(10∗x)f(x) round(10*\sqrt{x})f(x)round(10∗x​) 我们可得到: 经过至多 111111 次 0 -> 01~99 -> 99100 ~ i…

如何利用jar命令把前端代码打进jar包

目录背景介绍简单介绍几个常用的jar命令参数查询一个文件在jar包中的位置将文件解压到当前目录把一个目录打包进jar把一个文件打包进jar更新jar的shell脚本update.sh命令执行过程部分截图背景介绍 前后端分离是目前主流的开发模式,部署的时候也是利用类似nginx实现…

C++之多态

文章目录一、多态的理解二、多态的定义及实现1.多态的构成条件2.虚函数3.虚函数的重写/覆盖4. C11 的 override 和 final5.重载、重写/覆盖、隐藏/重定义三、抽象类四、多态的原理1.虚函数表2.多态的原理3.动态绑定与静态绑定五、单继承和多继承关系的虚函数表1.单继承中的虚函…

【Git】IDEA 集成 Git

7、IDEA 集成 Git 7.1、配置 Git 忽略文件 1、Eclipse 特定文件 2、IDEA 特定文件 3、Maven 工程的 target 目录 问题 1:为什么要忽略他们? 答:与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。 …

联合变换相关器摄远物镜光学设计

联合变换相关器摄远物镜光学设计 联合变换相关器工作原理 随着科学技术的飞速发展,光学相关探测器件由最初的匹配滤波器发展到今天的联合变换相关器,联合变换相关器与范得耳-卢格特相关器相比,具有灵活性好、识别精度高等特点,所…

Media基础知识一

1.视频文件是什么? FLV, MKV, MP4是不同的视频后缀名,不同的视频格式就像一个容器。容器里封装的是音视频流。 FFmpeg:一款开源软件,用来处理音视频,对音视频进行编解码。要在Android中使用FFmpeg,需要下载…

vue-element-admin 换肤功能,登录后不同权限不同皮肤,刷新不会失效

一、拉vue-element-admin的代码跑起来 安装依赖时会遇到一些问题,tui-editor装不上,需要按照以下步骤删除它 1、vue-element-admin\package.json 删除‘tui-editor’:‘1.3.3’依赖项。 2、vue-element-admin\src\components 删除MarkdownE…

C++ 三种智能指针及其设计实现unique_ptr、 share_ptr 指针

0、差不多春节啦。。。。。 好久没有写博客,写一写吧。。。。。。 祝大家嗨皮,提前恭喜发财 1、三种智能指针的使用方法 C 有3种指针:share_ptr, unique_ptr, weak_ptr 1.1)unique_ptr 指针 std::unique_ptr 是一种独占的智能指…

Sklearn标准化和归一化方法汇总(1):标准化 / 标准差归一化 / Z-Score归一化

Sklearn中与特征缩放有关的五个函数和类,全部位于sklearn.preprocessing包内。作为一个系列文章,我们将逐一讲解Sklearn中提供的标准化和归一化方法,以下是本系列已发布的文章列表: Sklearn标准化和归一化方法汇总(1)&#xff1a…