用JRC水体数据集和GEE,5分钟搞定近40年你家附近水域变化分析

张开发
2026/7/1 23:42:05 15 分钟阅读
用JRC水体数据集和GEE,5分钟搞定近40年你家附近水域变化分析
零代码绘制家乡水域变迁图基于GEE与JRC数据集的时空分析实战站在老家的河堤上父亲总念叨着我们小时候这河面能有现在两倍宽。这种口述历史往往缺乏量化依据而现在借助Google Earth EngineGEE平台和JRC全球地表水数据集任何人都能亲手还原家乡水域近40年的变迁轨迹。本文将带你用完全零代码的方式完成从数据调用到可视化呈现的全流程让科技为乡愁提供精准注脚。1. 认识你的数字工具箱GEE与JRC数据集1.1 为什么选择这对黄金组合Google Earth Engine云端地理空间分析平台无需本地计算资源JRC Global Surface Water1984-2021年全球地表水月度记录30米分辨率协同优势GEE直接托管JRC数据集省去数据下载和处理环节JRC数据集包含多个子产品我们重点关注两个核心集合数据集名称时间范围分辨率关键指标Monthly Water History1984-202130m每月水体检测次数Yearly Water Classification1984-202130m年度水体季节性分类提示所有分析将在GEE的在线代码编辑器中进行但不用担心——你只需要复制粘贴准备好的代码片段。2. 五分钟快速上手指南2.1 准备工作访问Google Earth Engine官网并注册账号打开代码编辑器Code Editor界面在Scripts面板新建空白项目2.2 定位你的研究区域在GEE中快速定位目标区域的三种方法// 方法1直接输入坐标以杭州西湖为例 var roi ee.Geometry.Point(120.15, 30.25).buffer(5000); // 方法2手动绘制多边形 var roi /* 在这里绘制你的区域 */; // 方法3导入已有边界数据 var roi ee.FeatureCollection(路径/to/your/shapefile);2.3 调用JRC数据集核心代码将以下代码粘贴到编辑器中// 加载JRC月度水体数据集 var jrcMonthly ee.ImageCollection(JRC/GSW1_4/MonthlyHistory); // 定义可视化参数 var visParams { min: 0, max: 3, palette: [ffffff, bbbbbb, 11b5ff, 0d3aff] }; // 生成2020年水体分布图 var water2020 jrcMonthly.filterDate(2020-01-01, 2020-12-31) .mode().clip(roi); // 添加到地图显示 Map.addLayer(water2020, visParams, 2020年水体分布); Map.centerObject(roi, 10);点击Run你将立即看到目标区域2020年的水体分布情况。3. 深度分析提取40年水域变化趋势3.1 构建时间序列分析函数以下代码将计算每年水体覆盖面积// 定义计算函数 function calculateArea(image) { var water image.gt(2); // 提取永久水体部分 var area water.multiply(ee.Image.pixelArea()).reduceRegion({ reducer: ee.Reducer.sum(), geometry: roi, scale: 30, maxPixels: 1e13 }); return ee.Feature(null, { date: image.date().format(YYYY), area: area.get(water) }); } // 应用函数到整个数据集 var timeSeries ee.FeatureCollection( jrcMonthly.map(calculateArea) ); // 打印结果 print(timeSeries);3.2 可视化面积变化曲线添加图表绘制代码// 绘制面积变化趋势图 var chart ui.Chart.feature.byFeature(timeSeries, date, area) .setChartType(LineChart) .setOptions({ title: 1984-2021年水域面积变化趋势, hAxis: {title: 年份}, vAxis: {title: 水域面积(平方米)}, lineWidth: 3, colors: [#4285F4] }); print(chart);运行后将生成直观的折线图清晰展示水域面积随时间波动情况。4. 高级技巧制作水域变迁动态图4.1 生成十年间隔对比图// 定义时间分段 var decades [1985, 1995, 2005, 2015, 2020]; // 创建各时期水体分布图 var decadeImages decades.map(function(year){ return jrcMonthly.filterDate(year-01-01, year-12-31) .mode().gt(2).rename(year); }); // 合并为单幅图像 var changeMap ee.Image.cat(decadeImages); // 添加对比图层 Map.addLayer(changeMap, {palette: [black, blue]}, 十年间隔对比);4.2 创建时间序列动画// 准备动画帧 var videoArgs { dimensions: 800, region: roi, framesPerSecond: 5, bands: [water], min: 0, max: 3, palette: [ffffff, bbbbbb, 11b5ff, 0d3aff] }; // 生成动画URL var videoURL jrcMonthly.getVideoThumbURL(videoArgs); print(动画下载链接, videoURL);5. 案例解读如何分析你的结果以某城市湖泊为例典型分析角度包括季节性变化比较旱季雨季水体面积差异长期趋势识别持续萎缩或扩张的水域突变点检测关联周边工程建设或政策实施时间空间格局变化观察水体形态改变如河道取直实际操作中可以尝试调整代码中的几个关键参数// 敏感度调整示例 var sensitiveWater image.gt(1); // 包含季节性水体 var permanentWater image.gt(2); // 仅永久水体 // 空间精度调整 var scale 100; // 降低分辨率加速计算记得点击编辑器右上角的Save按钮保存你的项目所有代码和结果都会自动存储在云端随时可以回来继续分析。

更多文章