news 2026/4/23 10:44:35

基于 GEE 利用 SoilGrids 土壤数据获取研究区土壤颗粒组分数据(粘土、沙、粉砂含量)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 GEE 利用 SoilGrids 土壤数据获取研究区土壤颗粒组分数据(粘土、沙、粉砂含量)

目录

一、研究区加载与地图初始化

二、土壤影像数据加载

三、研究区裁剪处理

四、影像信息打印(调试与验证)

五、可视化参数配置

六、地图图层添加

七、数据导出到 Google Drive

八、关键注意事项

九、运行结果


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

本代码基于 Google Earth Engine(GEE)平台开发,核心目标是获取指定研究区的土壤颗粒组成数据(粘土、沙、粉砂三类),通过加载全球土壤数据库 SoilGrids 的影像数据,经过裁剪、可视化配置后,在地图上展示,并最终导出为 GeoTIFF 格式文件到 Google Drive,用于后续土壤相关的空间分析工作。

一、研究区加载与地图初始化

var roi = table; // 你的研究区 Map.addLayer(roi, {color: 'grey'}, '研究区边界'); Map.centerObject(roi, 6);
  • 研究区定义var roi = table中,table是 GEE 平台中已导入的矢量数据(通常为 Shapefile 格式转换后的资产),代表用户设定的研究区域(如某城市、流域、行政单元等),代码通过该变量调用研究区边界信息。
  • 地图添加研究区Map.addLayer()是 GEE 中添加图层到地图画布的核心函数,参数说明:
    • 第一个参数roi:指定要添加的图层数据(此处为研究区矢量边界);
    • 第二个参数{color: 'grey'}:设置图层样式,此处将边界颜色设为灰色;
    • 第三个参数'研究区边界':图层名称,将显示在地图右侧的图层列表中,方便用户识别。
  • 地图视图调整Map.centerObject(roi, 6)用于设置地图初始视图,参数说明:
    • 第一个参数roi:指定地图居中的对象(即研究区);
    • 第二个参数6:地图缩放级别(GEE 缩放级别范围通常为 1-20,数值越小视野越广,数值越大视野越聚焦,此处 6 级为中等视野,可完整显示较大范围的研究区)。

二、土壤影像数据加载

var clay = ee.Image("projects/soilgrids-isric/clay_mean"); var sand = ee.Image("projects/soilgrids-isric/sand_mean"); var silt = ee.Image("projects/soilgrids-isric/silt_mean");
  • 数据来源:加载的是国际土壤参考与信息中心(ISRIC)维护的 SoilGrids 全球土壤数据库,该数据库提供了不同深度层的土壤理化性质数据,数据格式为 GEE 支持的影像(Image)类型。
  • 三类土壤数据说明
    • clay_mean:粘土含量均值数据,粘土颗粒直径小于 0.002mm,影响土壤保水保肥能力;
    • sand_mean:沙含量均值数据,沙颗粒直径在 0.05-2mm 之间,影响土壤透气性;
    • silt_mean:粉砂含量均值数据,粉砂颗粒直径在 0.002-0.05mm 之间,是土壤肥力的重要影响因子。
  • 影像的多深度特性:每类影像均包含多个波段(band),每个波段对应不同的土壤深度层(如 0-5cm、5-15cm、15-30cm 等),后续可视化和导出时需指定具体深度波段。

三、研究区裁剪处理

var clay_clip = clay.clip(roi); var sand_clip = sand.clip(roi); var silt_clip = silt.clip(roi);
  • 裁剪目的:原始的 SoilGrids 数据是全球范围的,通过裁剪操作可只保留研究区(roi)内的影像数据,剔除无关区域数据,减少后续处理的计算量,同时确保导出数据的针对性。
  • 裁剪函数ee.Image.clip()是 GEE 中影像裁剪的内置方法,参数为裁剪的边界对象(此处为研究区roi),函数返回裁剪后的新影像(命名为xxx_clip,便于区分原始影像)。
  • 注意事项:裁剪操作要求裁剪边界(roi)为矢量数据(FeatureCollection 或 Feature),且与影像的投影坐标系一致(GEE 会自动处理投影匹配,无需手动设置)。

四、影像信息打印(调试与验证)

print("Clay image:", clay_clip); print("Sand image:", sand_clip); print("Silt image:", silt_clip);
  • 打印目的print()函数用于在 GEE 代码编辑器的控制台(Console)输出信息,核心作用是调试和验证,帮助用户确认:
    • 影像的波段名称(如clay_0-5cm_meansand_15-30cm_mean等),确保后续可视化和导出时波段名称正确;
    • 影像的元数据(如投影、分辨率、数值范围等),为后续设置可视化参数(如minmax)提供参考;
    • 裁剪后的影像是否正常(如是否包含研究区范围、是否有无效值等)。
  • 输出格式:控制台会以树形结构展示影像信息,展开后可查看波段列表、每个波段的统计信息(均值、最小值、最大值)等。

五、可视化参数配置

// 粘土可视化参数 var visClay = { opacity: 1, bands: ["clay_0-5cm_mean"], min: 10, max: 800, palette: ["ffef29", "0000ff"] }; // 沙可视化参数(示例) var visSand = { opacity: 1, bands: ["sand_0-5cm_mean"], min: 10, max: 800, palette: ["ff7f00", "8b0000"] };
  • 可视化参数作用visXXX是自定义的字典(Dictionary)类型变量,用于定义影像在地图上的显示样式,确保三类土壤数据的可视化效果相互区分,便于直观观察空间分布差异。
  • 关键参数说明
    • opacity:图层透明度,取值范围 0-1,1 表示完全不透明,0 表示完全透明;
    • bands:指定要可视化的波段,此处统一选择0-5cm深度层(对应波段名称如clay_0-5cm_mean),用户可根据需求更换为其他深度波段(需与控制台打印的波段名称一致);
    • min/max:数值显示范围,即影像中小于min的值显示为最浅颜色,大于max的值显示为最深颜色,中间值按调色板渐变分布,此处设置为 10-800(单位为 g/kg,需根据实际数据统计调整,避免颜色失真);
    • palette:调色板,指定颜色渐变范围,三类土壤采用不同调色板以区分:
      • 粘土:黄→蓝(ffef29为黄色,0000ff为蓝色);
      • 沙:橙红→深红(ff7f00为橙红,8b0000为深红);
      • 粉砂:浅绿→深绿(90ee90为浅绿,006400为深绿)。

六、地图图层添加

Map.addLayer(clay_clip, visClay, "粘土含量(0-5cm)"); Map.addLayer(sand_clip, visSand, "沙含量(0-5cm)"); Map.addLayer(silt_clip, visSilt, "粉砂含量(0-5cm)");
  • 图层添加逻辑:调用Map.addLayer()函数,将裁剪后的影像(xxx_clip)按配置的可视化参数(visXXX)添加到地图,参数说明:
    • 第一个参数:待添加的影像数据(裁剪后的数据);
    • 第二个参数:可视化参数(定义显示样式);
    • 第三个参数:图层名称(需唯一,显示在地图右侧图层列表中)。
  • 交互功能:添加后,用户可在地图右侧的图层列表中勾选 / 取消勾选,实现不同土壤图层的显示 / 隐藏切换,便于对比观察三类土壤的空间分布特征(如某区域沙含量高则显示为深红色,粘土含量高则显示为蓝色)。

七、数据导出到 Google Drive

// 导出粘土示例 Export.image.toDrive({ image: clay_clip, description: 'clay_export', fileNamePrefix: 'clay', scale: 250, folder: 'Soil_SP', region: roi.geometry(), maxPixels: 1e13 });
  • 导出函数Export.image.toDrive()是 GEE 中导出影像到 Google Drive 的核心函数,支持将影像导出为 GeoTIFF(默认格式,可用于 ArcGIS、QGIS 等 GIS 软件后续分析)。
  • 关键参数说明
    • image:待导出的影像数据(此处为裁剪后的粘土 / 沙 / 粉砂影像);
    • description:导出任务的描述名称(显示在 GEE 的 Tasks 面板中,便于识别);
    • fileNamePrefix:导出文件的前缀名称,最终导出文件名为前缀_日期.tif(如clay_20240520.tif);
    • scale:导出数据的分辨率(单位为米),此处设置为 250m,与 SoilGrids 原始数据分辨率一致(分辨率越高,数据量越大,导出时间越长);
    • folder:Google Drive 中存储导出文件的文件夹名称(需提前在 Google Drive 中创建,或由导出任务自动创建);
    • region:导出的区域范围,通过roi.geometry()获取研究区的几何对象,确保导出范围与研究区一致;
    • maxPixels:最大像素数量限制,GEE 默认导出影像的最大像素数为 1e8,此处设置为 1e13(10 万亿像素),用于支持大范围研究区的导出(避免因像素数超限导致导出失败)。
  • 导出操作流程:代码运行后,需在 GEE 代码编辑器的 Tasks 面板中找到对应的导出任务(如clay_export),点击「Run」按钮,设置导出参数(如文件格式、投影等,默认即可),等待导出完成(导出时间取决于研究区大小和网络状况),最终可在 Google Drive 的指定文件夹中找到导出的 GeoTIFF 文件。

八、关键注意事项

  • 研究区数据准备table需提前导入 GEE(支持 Shapefile、KML 等格式),且需确保研究区边界完整、无拓扑错误,否则可能导致裁剪失败。
  • 波段名称匹配:可视化和导出时指定的波段名称(如clay_0-5cm_mean)必须与控制台打印的影像波段名称完全一致,否则会出现图层无法显示或导出数据异常的问题。
  • 数值范围调整:可视化参数中的minmax需根据控制台打印的影像统计信息调整(如某研究区粘土含量最大值为 600,则max可设为 600),否则会出现颜色渐变不明显、细节丢失的问题。
  • Google Drive 空间:导出的 GeoTIFF 文件可能占用较大存储空间(如 250m 分辨率、100km×100km 的研究区,单个文件约几十 MB),需确保 Google Drive 有足够的可用空间。
  • 导出任务管理:多个导出任务同时运行可能会影响导出速度,建议分批运行;若导出失败,可检查研究区范围、像素数量限制、网络连接等因素。

九、运行结果

研究区粘土含量(0-5cm)反演结果可视化
研究区沙含量(0-5cm)反演结果可视化
研究区粉砂含量(0-5cm)反演结果可视化
控制台输出的相关信息
点击RUN即可下载数据
下载的运行结果数据制图效果:基于 GEE 利用 SoilGrids 土壤数据获取研究区土壤颗粒组分数据(粘土、沙、粉砂含量)

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

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

主动悬架平顺性控制研究:基于多路面输入与不同控制策略的Simulink仿真

车辆主动悬架平顺性控制采用了能反映车辆垂向运动和俯仰运动的半车悬架模型。 建立了多种路面输入,包括生活中最常遇到的随机路面输入、凸块路面输入以及越野路面。 采用反步控制、模糊控制、PID控制进行主动悬架的平顺性控制。利用Simulink进行仿真,悬架…

作者头像 李华
网站建设 2026/4/23 10:43:50

使用GeeLark+亮数据,做数据采集打造爆款内容

使用GeeLark亮数据,做数据采集打造爆款内容传统TikTok内容创作常陷入“盲猜”:热点难追,用户偏好成谜,爆款如同玄学。 新一代跨境卖家正用数据破解这一困境。通过整合GeeLark与亮数据,他们构建了一套精准的“市场感知…

作者头像 李华
网站建设 2026/4/16 19:59:03

数据驱动的软件质量守护:统计过程控制在测试度量中的实践指南

数据驱动的软件质量守护:统计过程控制在测试度量中的实践指南 从直觉判断到量化管理 在当代软件工程实践中,质量度量已从辅助性工作转变为质量保障体系的核心支柱。随着敏捷开发与DevOps模式的普及,测试团队面临着更高频次的发布周期与更复…

作者头像 李华
网站建设 2026/4/18 11:33:33

【资深架构师亲授】:Symfony 8缓存设计模式与最佳实践

第一章:Symfony 8 缓存机制概述Symfony 8 在性能优化方面持续发力,其缓存机制是提升应用响应速度的核心组件之一。通过统一的缓存抽象层,Symfony 允许开发者在不同环境和存储后端之间无缝切换,同时保持一致的 API 调用方式。缓存抽…

作者头像 李华
网站建设 2026/4/20 17:07:55

Mock/Stub技术在单元测试中的应用与实践

随着敏捷开发和DevOps的普及,单元测试已成为保证软件质量的核心环节。然而传统测试方法在面对依赖复杂、环境不稳定的系统时显得力不从心。Mock与Stub作为测试替身技术的两大核心手段,通过模拟外部依赖行为,使测试用例实现真正的隔离性与确定…

作者头像 李华