news 2026/2/2 19:02:39

基于 GEE 的 NASA FLDAS 风速数据实现研究区平均风速空间格局与频次分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 GEE 的 NASA FLDAS 风速数据实现研究区平均风速空间格局与频次分析

目录

一、基础设置模块

(一)研究区导入与地图配置

(二)时间参数定义

二、数据加载与预处理模块

三、统计计算模块

(一)整体平均风速计算

(二)逐月平均风速统计

四、可视化模块

(一)直方图绘制与面板展示

(二)图例创建

(三)平均风速影像可视化

五、核心技术亮点、设计思路和输出结果说明

六、运行结果


若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

本代码基于 Google Earth Engine(GEE)平台开发,核心用途是对 2006-2007 年研究区的风速数据进行处理、分析与可视化。通过加载 NASA FLDAS 数据集的风速数据,完成研究区裁剪、时间筛选、统计计算(整体平均、逐月平均),并以地图图层、直方图、图例的形式呈现结果,实现了风速数据从获取到可视化的全流程处理。

一、基础设置模块

(一)研究区导入与地图配置

var roi = table; Map.addLayer(roi, {}, '研究区 ROI'); Map.centerObject(roi, 6);
  • 定义研究区边界roi,数据源为预设的table(通常是 GEE 中导入的矢量边界数据,如行政区、自定义研究范围等)。
  • 通过Map.addLayer()将研究区边界添加到地图画布,图层名称为 “研究区 ROI”,第二个参数{}为图层样式配置(此处使用默认样式)。
  • Map.centerObject(roi, 6)将地图视角自动定位到研究区中心,第二个参数6为地图缩放级别(数值越大视角越近,范围越小)。

(二)时间参数定义

var timeParams = { startYear: 2006, endYear: 2007, startDate: '2006-01-01', endDate: '2007-12-31', months: ee.List.sequence(1, 12), years: ee.List.sequence(2006, 2007) };
  • 以对象timeParams统一管理所有时间相关参数,方便后续调用和修改。
  • 明确数据时间范围为 2006 年 1 月 1 日至 2007 年 12 月 31 日,通过ee.List.sequence()生成 1-12 月的月份列表和 2006-2007 年的年份列表,为后续逐月统计做准备。
  • 设计优势:参数集中管理,若需扩展时间范围(如增加 2008 年数据),仅需修改endYearyears序列,无需改动后续逻辑代码。

二、数据加载与预处理模块

var windDataset = ee.ImageCollection("NASA/FLDAS/NOAH01/C/GL/M/V001") .filterBounds(roi) .filterDate(timeParams.startDate, timeParams.endDate) .select('Wind_f_tavg') .map(function(image) { return image.clip(roi); });
  • 数据来源:加载 NASA FLDAS 数据集(全球陆面数据同化系统),数据集 ID 为"NASA/FLDAS/NOAH01/C/GL/M/V001",该数据集包含全球陆面多种气象、水文变量,此处聚焦风速数据。
  • 数据筛选:
    • filterBounds(roi):筛选研究区范围内的数据,剔除研究区外的无效数据,提升计算效率。
    • filterDate(...):按预设时间范围筛选 2006-2007 年的数据。
    • select('Wind_f_tavg'):选择数据集中的风速变量(Wind_f_tavg表示近地面平均风速),排除其他无关变量(如温度、降水等)。
  • 数据裁剪:通过map()函数遍历影像集合中的每一幅影像,使用clip(roi)将影像裁剪至研究区边界,确保后续分析仅针对目标区域。

三、统计计算模块

(一)整体平均风速计算

var meanWind = windDataset.mean();
  • 功能说明:对筛选、裁剪后的 2006-2007 年所有风速影像计算平均值,得到研究区这段时间内的整体平均风速影像meanWind
  • 原理:GEE 中ImageCollection.mean()会对集合内所有影像的对应像素逐一计算均值,生成单幅汇总影像,反映长时间序列的平均状态。

(二)逐月平均风速统计

var monthlyStats = ee.FeatureCollection( timeParams.years.map(function(y) { return timeParams.months.map(function(m) { var monthly = windDataset .filter(ee.Filter.calendarRange(y, y, 'year')) .filter(ee.Filter.calendarRange(m, m, 'month')); var monthlyMean = monthly.mean(); var stats = monthlyMean.reduceRegion({ reducer: ee.Reducer.mean(), geometry: roi, scale: 11000, maxPixels: 1e9 }); return ee.Feature(null, { year: y, month: m, wind_speed: stats.get('Wind_f_tavg') }); }); }).flatten() );
  • 功能说明:统计 2006-2007 年每个月的研究区平均风速,生成包含 “年份、月份、风速值” 的要素集合,用于后续直方图绘制。
  • 关键步骤拆解:
    • 嵌套map()遍历:外层遍历年份列表(2006、2007),内层遍历月份列表(1-12),实现对每个 “年 - 月” 组合的筛选。
    • 月度影像筛选:filter(ee.Filter.calendarRange(y, y, 'year'))filter(ee.Filter.calendarRange(m, m, 'month'))筛选出当前年、当月的风速影像集合。
    • 月度均值计算:monthly.mean()得到当月的平均风速影像monthlyMean
    • 区域统计:reduceRegion()对当月平均风速影像进行区域统计,参数说明:
      • reducer: ee.Reducer.mean():统计方式为计算区域内所有像素的均值(即研究区当月平均风速)。
      • geometry: roi:统计范围为研究区。
      • scale: 11000:统计的空间分辨率为 11000 米(与原始数据集分辨率匹配,避免重采样误差)。
      • maxPixels: 1e9:允许处理的最大像素数(避免因研究区过大导致计算超限)。
    • 结果封装:将 “年份(y)、月份(m)、风速值(stats.get ('Wind_f_tavg'))” 封装为ee.Feature,最终通过flatten()展平嵌套列表,生成一维要素集合monthlyStats

四、可视化模块

(一)直方图绘制与面板展示

var histogram = ui.Chart.feature.histogram({ features: monthlyStats, property: 'wind_speed', maxBuckets: 20 }).setOptions({ title: '2006-2007 月平均风速直方图', hAxis: { title: '风速 (m/s)' }, vAxis: { title: '频数' }, legend: { position: 'none' } }); var panel = ui.Panel({ style: { width: '450px', position: 'bottom-right', padding: '8px' } }); panel.add(histogram); Map.add(panel);
  • 功能说明:基于逐月平均风速数据绘制直方图,展示风速值的分布特征,并在地图上添加可视化面板。
  • 关键解析:
    • 直方图生成:ui.Chart.feature.histogram()用于生成要素集合的直方图,参数说明:
      • features: monthlyStats:数据源为逐月统计的要素集合。
      • property: 'wind_speed':统计的属性字段为 “风速值”。
      • maxBuckets: 20:直方图的柱形数量最多为 20 个(控制图表精度,避免柱形过多导致杂乱)。
    • 图表样式配置:setOptions()设置图表标题、横纵轴标签(横轴为风速,单位 m/s;纵轴为频数),隐藏图例(单变量直方图无需图例)。
    • 面板创建与添加:ui.Panel()创建一个位于地图右下角、宽度 450px 的面板,将直方图添加到面板后,通过Map.add(panel)挂载到地图上,方便用户查看。

(二)图例创建

var visualizationParams = { windSpeed: { min: 0.3750263580093698, max: 8.113219716238905, palette: ['#0e0e0e', '#281dc8', '#38913b', '#5af7ff', '#10ff22', '#f5ff62', '#ff640a'] } }; function createLegend() { var legend = ui.Panel({ style: { padding: '8px 15px', position: 'bottom-left', backgroundColor: 'rgba(255, 255, 255, 0.9)', width: '220px' } }); legend.add(ui.Label({ value: '平均风速 (m/s)', style: { fontWeight: 'bold', fontSize: '16px', margin: '0 0 10px 0' } })); var palette = visualizationParams.windSpeed.palette; var min = visualizationParams.windSpeed.min; var max = visualizationParams.windSpeed.max; var step = (max - min) / (palette.length - 1); palette.forEach(function(color, i) { var value = min + step * i; var item = ui.Panel({ layout: ui.Panel.Layout.flow('horizontal') }); item.add(ui.Label({ style: { backgroundColor: color, padding: '8px', margin: '0 6px 0 0', border: '1px solid #999' } })); item.add(ui.Label({ value: value.toFixed(2) + (i < palette.length - 1 ? ' - ' + (value + step).toFixed(2) : '+'), style: { fontSize: '14px' } })); legend.add(item); }); legend.add(ui.Label({ value: '数据来源: NASA FLDAS', style: { fontSize: '11px', margin: '10px 0 0 0' } })); return legend; }
  • 功能说明:创建地图图层的图例,用于解释平均风速影像的颜色对应的风速范围,提升地图可读性。
  • 关键解析:
    • 可视化参数定义:visualizationParams统一配置风速影像的可视化规则,包括风速最小值(min)、最大值(max)和颜色调色板(palette),颜色从深黑(低风速)渐变到橙色(高风速),便于直观区分风速等级。
    • 图例面板创建:createLegend()函数生成一个位于地图左下角、半透明白色背景的图例面板,包含标题、颜色块、数值范围标签和数据来源说明。
    • 颜色与数值匹配:通过计算步长step = (max - min) / (palette.length - 1),将颜色调色板与风速范围逐一对应,例如第一个颜色块对应0.38 - 1.57 m/s(保留两位小数),最后一个颜色块对应7.00+ m/s

(三)平均风速影像可视化

Map.addLayer( meanWind, visualizationParams.windSpeed, 'Mean Wind Speed(平均风速)' ); Map.add(createLegend());
  • 功能说明:将整体平均风速影像添加到地图,并挂载图例,完成最终的地图可视化。
  • 关键解析:
    • Map.addLayer()的三个参数分别为:待可视化的影像(meanWind)、可视化配置(visualizationParams.windSpeed,即之前定义的颜色和数值范围)、图层名称(中英文结合,便于识别)。
    • Map.add(createLegend())将创建好的图例添加到地图,与风速影像配套展示,让用户能快速解读地图上不同颜色代表的风速大小。

五、核心技术亮点、设计思路和输出结果说明

模块化设计:

代码按“基础设置→数据加载→统计计算→可视化”的逻辑拆分模块,每个模块功能独立,参数集中管理(如timeParamsvisualizationParams),便于后续维护和功能扩展(如修改时间范围、更换可视化颜色)。

GEE 核心功能应用:

  • 影像集合处理:灵活运用filterBounds()filterDate()select()map()mean()等方法,实现数据的筛选、裁剪、汇总。
  • 区域统计:reduceRegion()结合ee.Reducer.mean(),高效计算研究区平均风速,通过scale参数确保统计精度与原始数据匹配。
  • 交互式可视化:利用ui.Chart绘制统计图表,ui.Panel创建自定义面板,createLegend()生成个性化图例,提升结果展示的直观性和交互性。

性能优化考量:

  • 数据筛选先行:先通过filterBounds()filterDate()剔除无效数据,再进行裁剪和计算,减少处理的数据量。
  • 合理设置参数:maxPixels: 1e9避免因研究区过大导致计算超限,scale: 11000匹配原始数据集分辨率,避免不必要的重采样开销。

输出结果说明:

  • 地图图层:研究区边界图层、2006-2007 年整体平均风速影像图层(颜色对应风速等级)。
  • 直方图面板:位于地图右下角,展示逐月平均风速的分布情况,可直观查看风速的集中区间(如多数月份风速集中在 2-4 m/s)。
  • 图例面板:位于地图左下角,标注颜色对应的风速范围和数据来源,帮助用户解读地图信息。

六、运行结果

研究区平均风速空间格局与频次分析结果可视化
研究区月平均风速直方图

若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/30 15:24:58

OptiScaler游戏画质优化工具深度解析

OptiScaler游戏画质优化工具深度解析 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 在当今游戏图形技术日新月异的背景下&#xf…

作者头像 李华
网站建设 2026/1/31 21:09:09

16、Yocto项目开发工具与流程详解

Yocto项目开发工具与流程详解 1. JTAG设备调试配置 在进行JTAG设备调试时,需要进行一系列的配置操作。 - 从JTAG Device菜单中选择相应选项,必须启用“Use remote target”选项。 - 从Startup选项卡中,选择“Load symbols”选项。同时,要确保“Use Project binary”选项…

作者头像 李华
网站建设 2026/2/1 23:59:19

25、深入解析Linux相关技术:从CGL到汽车级Linux

深入解析Linux相关技术:从CGL到汽车级Linux 在当今的技术领域,Linux系统凭借其开源、灵活和强大的特性,在多个领域得到了广泛的应用。本文将深入探讨几个重要的Linux相关技术,包括CGL(Carrier Grade Linux)的分类、汽车级Linux(Automotive Grade Linux)、载波级虚拟化…

作者头像 李华
网站建设 2026/1/30 19:25:21

Nature同款 | 跟着顶刊学配色第 26 期

在发表科研论文的过程中&#xff0c;制作精美的绘图能够在第一时间吸引编辑和审稿人的眼球。配色是提升绘图吸引力至关重要的一环&#xff0c;而提升自己配色审美最直接的方法就是跟着顶刊学习。本系列文章收集了顶刊中的绘图&#xff0c;并提取了颜色代码&#xff0c;希望能为…

作者头像 李华
网站建设 2026/1/24 17:19:27

Gin框架架构详解:高性能Go语言Web框架的设计哲学与实践

1 Gin框架简介Gin是一个用Go语言编写的高性能Web框架&#xff0c;以其极简的API设计和卓越的执行效率而闻名。自从2014年发布以来&#xff0c;Gin迅速成为Go生态中最受欢迎的Web框架之一。与那些重型的全栈框架不同&#xff0c;Gin定位为一个轻量级框架&#xff0c;专注于提供H…

作者头像 李华
网站建设 2026/2/2 11:33:57

【OpenHarmony】轻量级公共基础库commonlibrary_utils_lite

OpenHarmony 轻量级公共基础库 (commonlibrary_utils_lite) 模块 目录 模块概述模块结构模块间交互状态机转换图接口设计 1. 模块概述 1.1 功能与目标 主要功能 轻量级公共基础库&#xff08;commonlibrary_utils_lite&#xff09;是OpenHarmony系统中的通用基础组件库&…

作者头像 李华