GEE图表——分析和可视化特定区域的土壤pH值,使用OpenLandMap土壤pH值数据集,探索不同深度的土壤pH值分布

利用Google Earth Engine分析土壤pH值

这篇博客将介绍如何使用Google Earth Engine (GEE) 分析和可视化特定区域的土壤pH值。我们将使用OpenLandMap提供的土壤pH值数据集,探索不同深度的土壤pH值分布,并创建交互式地图和图表。
土壤ph直方图统计和空间分布

1. 研究区域与环境设置

与之前的博客类似,我们首先定义一个地理坐标点来确定研究区域。这里我们仍然使用相同的坐标(位于埃及尼罗河三角洲附近):

var geometry = /* color: #0b4a8b */ee.Geometry.Point([31.21614767609318, 30.03815159053311]); // 定义研究区域的中心点

你可以根据自己的兴趣修改此坐标,选择你关注的区域。或者,你也可以使用城市边界数据,仅针对你所在的城市运行此代码。

接下来,我们加载并筛选行政边界数据,以确定我们的研究范围:

// 加载二级行政区划数据,并根据定义的点进行过滤
var country = ee.FeatureCollection("WM/geoLab/geoBoundaries/600/ADM2").filterBounds(geometry);
Map.addLayer(country); // 将筛选出的行政区域添加到地图
Map.centerObject(geometry, 8); // 将地图中心定位到定义的点,并设置缩放级别为8

这段代码将选定的行政区域边界添加到地图,并将地图视图居中于我们定义的点。

2. 土壤pH值数据处理

我们将使用OpenLandMap的土壤pH值数据集(OpenLandMap/SOL/SOL_PH-H2O_USDA-4C1A2A_M/v02)。该数据集提供了1950-2018年间,全球不同深度(0cm, 10cm, 30cm, 60cm, 100cm, 200cm)的土壤pH值估算,范围在4.2到11之间。原始数据的单位是pH值乘以10,所以我们需要进行除以10的处理。

为了简化数据处理流程,我们定义了一个名为 soil 的函数:


// PH 0-200 数据范围是 4.2-11
Map.centerObject(country) // 将地图中心定位到研究区域

// 定义一个函数来处理土壤pH值数据
function soil(id, band, name){
  var image = ee.Image(id).select(band).divide(10); // 加载图像,选择波段,并将值除以10
  Map.addLayer(image.clip(country),[],name,false); // 将裁剪后的图像添加到地图(默认不显示)
  print(ui.Chart.image.histogram(image, country, 250)); // 打印图像的直方图
  // 计算区域内的统计信息(中位数、最小值、最大值)
  var stat = image.reduceRegion({
    reducer: ee.Reducer.median().combine({reducer2: ee.Reducer.minMax(), sharedInputs: true}),
    geometry: country,
    scale: 250
  });
  print('statistical information for '+name,stat); // 打印统计信息

  // 将图像导出到Google Drive
  Export.image.toDrive({
    image: image.clip(country),
    description: name,
    scale: 250,
    region: country,
    crs: image.getInfo().crs,
    folder: 'test' // 导出到名为 'test' 的文件夹
  });
  return image;
}

这个函数的主要功能包括:

  • 加载和预处理: 从指定的数据集ID (id) 和波段 (band) 加载图像,并使用 .divide(10) 将原始数据值转换为实际的pH值。
  • 裁剪: 使用 clip(country) 将图像裁剪到我们选择的行政区域。
  • 可视化: 使用 Map.addLayer() 将裁剪后的图像添加到地图。
  • 直方图: 使用 ui.Chart.image.histogram() 生成并打印图像的直方图,以查看pH值的分布情况。
  • 统计: 使用 reduceRegion() 计算区域内的中位数、最小值和最大值。
  • 导出: 使用 Export.image.toDrive() 将裁剪后的图像导出到你的Google Drive。

现在,我们可以调用这个函数来处理不同深度的土壤pH值数据:

// 分别处理不同深度的土壤pH值数据
var ph = soil("OpenLandMap/SOL/SOL_PH-H2O_USDA-4C1A2A_M/v02", 'b0', 'ph0');   // 0cm深度
var ph = soil("OpenLandMap/SOL/SOL_PH-H2O_USDA-4C1A2A_M/v02", 'b10', 'ph10'); // 10cm深度
var ph = soil("OpenLandMap/SOL/SOL_PH-H2O_USDA-4C1A2A_M/v02", 'b30', 'ph30'); // 30cm深度
var ph = soil("OpenLandMap/SOL/SOL_PH-H2O_USDA-4C1A2A_M/v02", 'b60', 'ph60'); // 60cm深度
var ph = soil("OpenLandMap/SOL/SOL_PH-H2O_USDA-4C1A2A_M/v02", 'b100', 'ph100'); // 100cm深度
var ph = soil("OpenLandMap/SOL/SOL_PH-H2O_USDA-4C1A2A_M/v02", 'b200', 'ph200'); // 200cm深度

//绘制时间序列图
var dataset = ee.Image('OpenLandMap/SOL/SOL_PH-H2O_USDA-4C1A2A_M/v02').clip(country).divide(10)
print((ui.Chart.image.series(dataset,country,ee.Reducer.mean(),250,'system:time_start')).setOptions({title:'pH soil 0-200 depths 1950',interpolateNulls:true,lineWidth:1,pointSize:2,curveType:'function',vAxis:{title: ('42-110')}}))

这段代码将分别处理0cm, 10cm, 30cm, 60cm, 100cm, 和 200cm 深度的土壤pH值数据,并将结果添加到地图、打印统计信息和直方图,以及导出裁剪后的图像。
绘制1950年间土壤PH含量均值的时间序列图。

3. 可视化与图例

为了更直观地展示土壤pH值的空间分布,我们为每个深度的图像设置了可视化参数:

// 为不同深度的图像设置可视化参数
vis = {bands: ['b0'],min:5.2,max: 6.8,palette: ['ff0000', 'ff1c00', 'ff3900', 'ff5500', 'ff7100', 'ff8e00','ffaa00', 'ffc600', 'ffe200', 'ffff00', 'e3ff00', 'c7ff00','aaff00', '8eff00', '72ff00', '55ff00', '39ff00', '1dff00','01ff00', '00ff1c', '00ff38', '00ff54', '00ff71', '00ff8d','00ffa9', '00ffc6', '00ffe2', '00fffe', '00e3ff', '00c7ff','00abff', '008fff', '0072ff', '0056ff', '003aff', '001dff','0001ff', '1b00ff', '3800ff', '5400ff',]};
Map.addLayer(dataset,vis,'Soil pH  0 cm depth');

var vis = {bands: ['b10'],min:5.542,max: 6.8,palette: ['ff0000', 'ff1c00', 'ff3900', 'ff5500', 'ff7100', 'ff8e00','ffaa00', 'ffc600', 'ffe200', 'ffff00
### GEE土壤湿度数据集获取与使用方法 #### 选择合适的土壤湿度数据集 在 Google Earth Engine (GEE) 平台中,可以利用多个不同来源的数据集来研究土壤湿度。其中 NASA 的 GLDAS 数据集提供了详细的土壤湿度信息[^1]。此外,NASA USDA 合作开发的 SMAP(Soil Moisture Active Passive)项目也提供了高精度的全球土壤水分数据,空间分辨率为 10 公里[^3]。 #### 加载并探索数据集 为了加载这些数据集,在 JavaScript 或 Python API 下可以通过 `ee.ImageCollection` 对象访问相应的集合名称。对于GLDAS数据集而言,其ID通常为 `"NASA/GLDAS/V021/NOAH/G025/T3H"`;而对于SMAP,则可能是 `"NASA_USDA/HSL/SMAP10KM_SOIL_MOISTURE"`[^4]。 ```javascript // Load a specific dataset by ID. var gldasDataset = ee.ImageCollection('NASA/GLDAS/V021/NOAH/G025/T3H'); print(gldasDataset.first()); // Print metadata of first image. var smapDataset = ee.ImageCollection('NASA_USDA/HSL/SMAP10KM_SOIL_MOISTURE'); print(smapDataset.first()); ``` #### 进行时间地理过滤 当处理长时间序列或多地区范围的研究时,应该先定义感兴趣的时间区间以及地理位置边界框或矢量文件作为掩膜层应用到原始影像上。这有助于减少计算资源消耗并提高效率[^2]。 ```javascript // Define time range and region of interest. var startDate = '2020-01-01'; var endDate = '2020-12-31'; // Example ROI as point coordinates or geometry object. var roiPoint = ee.Geometry.Point([-122.085, 37.422]); gldasDataset = gldasDataset.filterDate(startDate, endDate).filterBounds(roiPoint); smapDataset = smapDataset.filterDate(startDate, endDate).filterBounds(roiPoint); // Extracting values at points can be done with reduceRegion() method. var sampleValueAtPoint = gldasDataset.mean().reduceRegion({ reducer: ee.Reducer.first(), geometry: roiPoint, scale: 25000 // Adjust based on your needs. }); print(sampleValueAtPoint.get('RootMoist_inst')); // Replace band name accordingly. ``` #### 可视化导出结果 最后一步是创建可视化图表或将处理后的图像保存至云端存储服务以便进一步分析。这里展示了如何绘制时间序列图表示某一点处随时间变化的趋势。 ```javascript // Create chart from ImageCollection over specified location. var chart = ui.Chart.image.seriesByRegion({ imageCollection: gldasDataset.select(['RootMoist_inst']), regions: roiPoint.buffer(1), reducer: ee.Reducer.mean(), scale: 25000, seriesProperty: 'label', xProperty: 'system:time_start' }); print(chart.setOptions({title: 'Time Series Chart'})); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此星光明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值