博客网站做外贸可以吗,利用虚拟主机建设网站的实验报告,品牌营销模式,郑州网站推广专员目录 一、前期基础配置模块 二、气象数据集加载与预处理模块 #xff08;一#xff09;降水量数据集加载#xff08;CHIRPS/DAILY#xff09; #xff08;二#xff09;气温数据集加载与预处理#xff08;ERA5-LAND/DAILY_AGGR#xff09; 三、时间尺度聚合模块 …目录一、前期基础配置模块二、气象数据集加载与预处理模块一降水量数据集加载CHIRPS/DAILY二气温数据集加载与预处理ERA5-LAND/DAILY_AGGR三、时间尺度聚合模块一降水量聚合函数aggregatePrecip二气温聚合函数aggregateTemp三调用聚合函数生成各尺度影像集四、可视化图表生成模块一图表生成自定义函数createChart二调用函数生成并打印所有图表五、数据导出模块一数据导出自定义函数exportData二调用函数生成批量导出任务六、代码核心亮点与注意事项七、运行结果若觉得代码对您的研究 / 项目有帮助欢迎点击打赏支持需要完整代码的朋友打赏后可在后台私信复制文章标题发给我我会尽快发您完整可运行代码感谢支持本代码的核心功能是针对指定研究区提取CHIRPS 日降水量和ERA5-LAND 近地面 2 米气温数据集完成日、月、年三个时间尺度的气象数据聚合、可视化折线图绘制并将各尺度数据批量导出为 CSV 格式至 Google 云端硬盘适用于区域长时序气候特征分析。以下从代码结构、核心模块、关键逻辑、功能亮点四个维度进行逐行详细解析。一、前期基础配置模块该模块为代码执行做基础参数与地图可视化设置是 GEE 区域数据分析的通用前置步骤核心定义研究区、时间范围和地图展示规则。var roi table; var startYear 2018; var endYear 2022; var startDate ee.Date.fromYMD(startYear, 1, 1); var endDate ee.Date.fromYMD(endYear, 12, 31); Map.centerObject(roi, 6); Map.addLayer(roi, {color: red}, Study Area, false);研究区定义var roi table;表示将 GEE 中已导入的矢量表FeatureCollection赋值为研究区roi需提前在 GEE 控制台上传研究区矢量文件如 SHP、KML并命名为table。时间范围设置定义分析的时间跨度为 2018-2022 年通过ee.Date.fromYMD()将年、月、日转换为 GEE 识别的时间对象startDate和endDate作为后续数据集筛选的时间依据。地图可视化Map.centerObject(roi, 6)将地图视图居中至研究区缩放级别设为 6缩放级别 1 为全球数值越大视图越精细Map.addLayer(roi, {color: red}, Study Area, false)将研究区矢量边界以红色添加至地图最后一个参数false表示默认不显示该图层可在 GEE 地图面板手动勾选展示。二、气象数据集加载与预处理模块该模块完成降水量和气温两大核心数据集的加载、空间 / 时间筛选以及气温数据的单位转换是后续分析的数据源基础分别调用 GEE 官方的 CHIRPS 和 ERA5-LAND 数据集。一降水量数据集加载CHIRPS/DAILYvar precipCol ee.ImageCollection(UCSB-CHG/CHIRPS/DAILY) .filterBounds(roi) .filterDate(startDate, endDate) .select(precipitation);数据集来源UCSB-CHG/CHIRPS/DAILY是加州大学圣塔芭芭拉分校的全球高分辨率日降水量数据集空间分辨率约 5km适用于区域降水分析筛选与裁剪通过filterBounds(roi)筛选研究区内的影像、filterDate()筛选 2018-2022 年的影像仅保留时间和空间范围内的有效数据波段选择select(precipitation)选择数据集中的 “降水量” 波段剔除无关波段减少计算量。二气温数据集加载与预处理ERA5-LAND/DAILY_AGGRvar tempCol ee.ImageCollection(ECMWF/ERA5_LAND/DAILY_AGGR) .filterBounds(roi) .filterDate(startDate, endDate) .select(temperature_2m) .map(function(img) { return img.subtract(273.15).copyProperties(img, [system:time_start]); });数据集来源ECMWF/ERA5_LAND/DAILY_AGGR是欧洲中期天气预报中心的陆面每日聚合气温数据集提供近地面 2 米气温数据精度高、时间序列完整基础筛选与降水量数据集一致通过filterBounds()和filterDate()完成空间、时间筛选选择temperature_2m2 米气温波段关键预处理ERA5-LAND 数据集的气温单位为开尔文K需转换为常用的摄氏度℃通过map()遍历影像集中的每一幅影像img.subtract(273.15)执行单位转换开尔文转摄氏度℃K-273.15copyProperties(img, [system:time_start])保留原影像的时间属性system:time_start是 GEE 影像的核心时间标识避免后续时间聚合时丢失时间信息。三、时间尺度聚合模块该模块是代码的核心逻辑模块通过自定义函数分别实现降水量的求和聚合和气温的均值聚合支持月尺度和年尺度两种聚合方式日尺度为数据集原始尺度无需额外聚合。核心设计思路通过ee.List.sequence()生成年、月序列嵌套遍历后按时间单位筛选影像再执行对应统计运算同时添加数据有效性判断剔除无数据的影像。一降水量聚合函数aggregatePrecip降水量的月 / 年尺度统计为累计值如月总降水量、年总降水量因此函数核心为filtered.sum()var aggregatePrecip function(collection, unit) { var years ee.List.sequence(startYear, endYear); var units ee.List.sequence(1, unit month ? 12 : 1); var list years.map(function(y) { return units.map(function(u) { var date ee.Date.fromYMD(y, unit month ? u : 1, 1); var filtered collection.filterDate(date, date.advance(1, unit)); var image filtered.sum().set(system:time_start, date.millis()); return image.set(hasData, filtered.size()); }); }).flatten(); return ee.ImageCollection.fromImages(list).filter(ee.Filter.gt(hasData, 0)); };函数参数collection为待聚合的影像集此处为日降水量影像集precipColunit为聚合时间单位传入month为月聚合year为年聚合。生成序列ee.List.sequence(startYear, endYear)生成 2018-2022 年的年份序列units根据聚合单位生成 1-12 月月聚合或仅 1年聚合的序列为嵌套遍历做准备嵌套遍历通过years.map()和units.map()嵌套遍历年、月对每个时间节点执行聚合定义聚合起始时间ee.Date.fromYMD(y, unit month ? u : 1, 1)月聚合为 “某年某月 1 日”年聚合为 “某年 1 月 1 日”筛选时间窗口内影像date.advance(1, unit)表示将起始时间向后推移 1 个单位月聚合推 1 个月年聚合推 1 年形成 “左闭右开” 的时间窗口筛选该窗口内的所有日尺度影像降水量求和filtered.sum()对时间窗口内的日降水量影像求和得到月 / 年总降水量设置属性set(system:time_start, date.millis())为聚合后的影像添加时间戳以毫秒为单位作为后续可视化的时间轴依据set(hasData, filtered.size())添加数据量属性记录该时间窗口内的原始影像数量影像集重构与过滤flatten()将嵌套遍历生成的二维列表展平为一维列表便于转换为影像集ee.ImageCollection.fromImages(list)将列表转换为 GEE 影像集filter(ee.Filter.gt(hasData, 0))过滤掉hasData0的影像即该时间窗口内无原始数据的影像避免后续分析出现空值。二气温聚合函数aggregateTemp气温的月 / 年尺度统计为平均值如月平均气温、年平均气温因此函数核心为filtered.mean()整体逻辑与降水量聚合函数高度一致仅统计运算不同var aggregateTemp function(collection, unit) { var years ee.List.sequence(startYear, endYear); var units ee.List.sequence(1, unit month ? 12 : 1); var list years.map(function(y) { return units.map(function(u) { var date ee.Date.fromYMD(y, unit month ? u : 1, 1); var filtered collection.filterDate(date, date.advance(1, unit)); var image filtered.mean().set(system:time_start, date.millis()); return image.set(hasData, filtered.size()); }); }).flatten(); return ee.ImageCollection.fromImages(list).filter(ee.Filter.gt(hasData, 0)); };唯一核心差异filtered.mean()对时间窗口内的日平均气温影像求均值得到月 / 年平均气温其余时间遍历、属性设置、数据过滤逻辑与aggregatePrecip完全相同。三调用聚合函数生成各尺度影像集通过调用上述两个自定义函数传入不同的聚合单位生成月、年尺度的降水量和气温影像集日尺度为原始影像集无需调用var precipMonthly aggregatePrecip(precipCol, month); var precipYearly aggregatePrecip(precipCol, year); var tempMonthly aggregateTemp(tempCol, month); var tempYearly aggregateTemp(tempCol, year);最终得到 6 个核心影像集日降水、月降水、年降水、日气温、月气温、年气温。四、可视化图表生成模块该模块通过自定义createChart函数调用 GEE 的ui.Chart.image.series()接口将各时间尺度的气象影像集转换为时间序列折线图并在 GEE 控制台打印展示直观呈现气温、降水的时间变化规律。一图表生成自定义函数createChartvar createChart function(col, title, yLabel, color) { var chart ui.Chart.image.series(col, roi, ee.Reducer.mean(), 10000) .setOptions({title: title, vAxis: {title: yLabel}, series: {0: {color: color}}}); print(chart); };函数参数四个核心参数实现图表自定义配置col待可视化的影像集如日降水、月气温title图表标题如 Daily PrecipitationyLabel纵轴标签如降水量单位 mm、气温单位℃color折线图颜色如降水设为蓝色、气温设为红色。关键逻辑解析ui.Chart.image.series()GEE 中用于生成影像集时间序列图表的专用接口适用于展示单一变量随时间的变化趋势核心参数roi指定统计的研究区图表数据为研究区内的统计值ee.Reducer.mean()对研究区内的栅格像素求均值得到研究区整体的气象值即面尺度统计而非像元尺度10000统计的空间尺度scale单位为米表示以 10000m10km的分辨率进行区域均值统计平衡计算效率和精度setOptions()对图表进行样式配置包括标题、纵轴标签、折线颜色print(chart)在 GEE 控制台的Console面板打印生成的折线图可直接查看、下载。二调用函数生成并打印所有图表按 “降水量 - 气温” 分类依次调用createChart函数生成日、月、年三个尺度的折线图并添加分类标识便于控制台查看print(--- 降水量图表 (单位: mm) ---); createChart(precipCol, Daily Precipitation, mm, blue); createChart(precipMonthly, Monthly Precipitation, mm, blue); createChart(precipYearly, Yearly Precipitation, mm, blue); print(--- 气温图表 (单位: ℃) ---); createChart(tempCol, Daily Mean Temp, ℃, red); createChart(tempMonthly, Monthly Mean Temp, ℃, red); createChart(tempYearly, Yearly Mean Temp, ℃, red);图表展示规则降水量折线图统一为蓝色纵轴单位 mm气温折线图统一为红色纵轴单位℃时间轴为自动识别的影像集时间属性无需手动配置。五、数据导出模块该模块是代码的实用化模块通过自定义exportData函数将各时间尺度的气象统计数据转换为FeatureCollection并批量导出为CSV 格式至 Google 云端硬盘便于后续在 Excel、Python、R 等软件中进行进一步的统计分析。一数据导出自定义函数exportDatavar exportData function(col, desc) { var table col.map(function(img) { var stats img.reduceRegion({ reducer: ee.Reducer.mean(), geometry: roi, scale: 10000, maxPixels: 1e13 }); return ee.Feature(null, { Date: img.date().format(YYYY-MM-dd), Value: stats.get(img.bandNames().get(0)) }); }); Export.table.toDrive({ collection: table, description: desc, fileFormat: CSV, selectors: [Date, Value] }); };函数参数col为待导出的影像集desc为导出文件的描述 / 命名用于区分不同尺度的气象数据。关键逻辑解析第一步将影像集转换为属性表FeatureCollection通过col.map()遍历影像集中的每一幅影像为每个影像生成一个包含日期和气象值的属性特征Featureimg.reduceRegion()对研究区执行区域统计与可视化模块的统计逻辑一致得到研究区的均值气象值新增maxPixels: 1e13参数解除 GEE 的像素数量限制避免研究区范围过大时出现计算报错img.date().format(YYYY-MM-dd)将影像的时间属性转换为年 - 月 - 日的字符串格式作为 CSV 文件的 “日期” 列便于后续识别stats.get(img.bandNames().get(0))从区域统计结果中提取气象值降水量 / 气温作为 CSV 文件的 “数值” 列ee.Feature(null, {})生成无几何信息的特征仅保留属性最终将所有特征整合为属性表table。第二步将属性表导出至 Google 云端硬盘调用 GEE 的Export.table.toDrive()接口将属性表导出为 CSV 文件核心配置参数collection: table待导出的属性表description: desc导出任务的名称同时作为 CSV 文件的基础名称fileFormat: CSV导出文件格式为 CSVselectors: [Date, Value]指定导出的列仅保留 “日期” 和 “数值”剔除无关属性简化数据。二调用函数生成批量导出任务按降水量、气温的日、月、年尺度依次调用exportData函数为每个尺度生成独立的导出任务并通过年份拼接命名便于区分不同时间范围的数据exportData(precipCol, Precip_Daily_ startYear _ endYear); exportData(precipMonthly, Precip_Monthly_ startYear _ endYear); exportData(precipYearly, Precip_Yearly_ startYear _ endYear); exportData(tempCol, Temp_Daily_ startYear _ endYear); exportData(tempMonthly, Temp_Monthly_ startYear _ endYear); exportData(tempYearly, Temp_Yearly_ startYear _ endYear);六、代码核心亮点与注意事项核心亮点多尺度一体化同时实现日、月、年三个时间尺度的聚合、可视化、导出无需单独编写代码提升分析效率高复用性所有核心功能均封装为自定义函数仅需修改startYear、endYear、roi等基础参数即可适配不同研究区、不同时间范围的分析需求数据有效性控制添加hasData属性过滤无数据影像避免空值对可视化和导出的影响单位与格式标准化完成气温单位转换、日期格式标准化导出的 CSV 文件可直接用于后续分析无需额外数据清洗面尺度统计所有分析均基于研究区的区域均值贴合区域气候特征分析的实际需求。关键注意事项研究区准备需提前在 GEE 控制台上传研究区矢量文件并命名为table否则会出现roi未定义的报错Google 账号授权导出数据至 Google 云端硬盘时需确保 GEE 已授权访问 Google Drive否则导出任务会失败尺度参数调整代码中统计的scale设为 10000m10km若研究区范围较小可适当减小该值如 1000m提升统计精度若研究区范围极大可增大该值提升计算效率时间范围限制CHIRPS 和 ERA5-LAND 数据集有各自的时间覆盖范围需确保设置的startYear和endYear在数据集的时间范围内否则会出现无数据的情况任务执行顺序GEE 的导出任务为异步执行需在Tasks面板依次点击Run不可同时执行过多任务避免触发 GEE 的计算资源限制。七、运行结果控制台输出的降雨量图表控制台输出的气温图表研究区长时间序列逐年降雨量折线图研究区长时间序列逐月降雨量折线图研究区长时间序列逐日降雨量折线图研究区长时间序列逐年气温折线图研究区长时间序列逐月气温折线图研究区长时间序列逐日气温折线图点击RUN即可下载CSV数据若觉得代码对您的研究 / 项目有帮助欢迎点击打赏支持需要完整代码的朋友打赏后可在后台私信复制文章标题发给我我会尽快发您完整可运行代码感谢支持