目录
一、研究区加载与地图初始化
二、土壤影像数据加载
三、研究区裁剪处理
四、影像信息打印(调试与验证)
五、可视化参数配置
六、地图图层添加
七、数据导出到 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_mean、sand_15-30cm_mean等),确保后续可视化和导出时波段名称正确; - 影像的元数据(如投影、分辨率、数值范围等),为后续设置可视化参数(如
min、max)提供参考; - 裁剪后的影像是否正常(如是否包含研究区范围、是否有无效值等)。
- 影像的波段名称(如
- 输出格式:控制台会以树形结构展示影像信息,展开后可查看波段列表、每个波段的统计信息(均值、最小值、最大值)等。
五、可视化参数配置
// 粘土可视化参数 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)必须与控制台打印的影像波段名称完全一致,否则会出现图层无法显示或导出数据异常的问题。 - 数值范围调整:可视化参数中的
min和max需根据控制台打印的影像统计信息调整(如某研究区粘土含量最大值为 600,则max可设为 600),否则会出现颜色渐变不明显、细节丢失的问题。 - Google Drive 空间:导出的 GeoTIFF 文件可能占用较大存储空间(如 250m 分辨率、100km×100km 的研究区,单个文件约几十 MB),需确保 Google Drive 有足够的可用空间。
- 导出任务管理:多个导出任务同时运行可能会影响导出速度,建议分批运行;若导出失败,可检查研究区范围、像素数量限制、网络连接等因素。
九、运行结果
若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!