GEE笔记-2.自学笔记 -2.3:区域统计

2.3.1 时段内的总统计

举例: 求2020年,各气象数据的统计量(均值、求和)

方法: 使用imageCollection内置的统计函数统一处理即可

//选择数据集及其中合适的字段
var ERA5_Pcp = ee.ImageCollection("ECMWF/ERA5_LAND/HOURLY")
                .filterDate('2020-01-01','2020-12-31')
                .select('total_precipitation_hourly')
                .map(function(image){
                  return image.multiply(1000)//原单位为m,换算为mm
                })
//求2020年各点年降水量
var ERA5_Pcpmean = ERA5_Pcp.sum()

2.3.2 分时段统计量(年/月均)

年均值:

//选择数据集及其中合适的字段
var ERA5_Pcp = ee.ImageCollection("ECMWF/ERA5_LAND/HOURLY")
                .select('total_precipitation_hourly')

//构建年列表
var years = ee.List.sequence(1981, 2016)

//得到每年统计量 [一年一个image,如每年的总降水量]
//对每年的数据进行处理,返回一个image,最终组成imageCollection
var PcpYears = ee.ImageCollection(years
  .map(function(y) {
    //构建统计起始时间
    var start = ee.Date.fromYMD(y, 1, 1)
    var end = start.advance(12, 'month')
    //应用起始时间统计
    return ERA5_Pcp.filterDate(start, end).sum().set('system:time_start',y).set('year',y)
  }))

//得到多年统计量 [多年一个image,如多年年均降水量]
var PcpYearMean = PcpYears
                  .mean()
                  .clip(LP)
                  .multiply(1000)

月均值:

//研究的时间范围
var years = ee.List.sequence(2020, 2020)
var months = ee.List.sequence(1, 12)

var monthlymeanNDVI =  ee.ImageCollection.fromImages(
                        years.map(function (y) {
                          return months.map(function(m) {
                            return dailyNDVI
                                .filter(ee.Filter.calendarRange(y,y, 'year'))
                                .filter(ee.Filter.calendarRange(m,m, 'month'))
                                .mean().set('year', y)
                                .set('month', m)
                                .set('system:time_start', ee.Date.fromYMD(y, m, 1))
                          });  
                        })
                        )
<think> 我们有一个CSV文件,它已经被上传为Google Earth Engine (GEE) 的资产,路径是:users/heyunqi98/aa 这个CSV包含的列有:Feature Index, lon lat (String), system:index (String) 其中,lon lat (String) 列是字符串类型的,包含了经度和纬度,用空格分隔。 我们需要在GEE中加载这个CSV资产,并将其转换为一个特征集合(FeatureCollection),然后在地图上显示出来。 步骤: 1. 使用`ee.FeatureCollection`加载CSV资产。 2. 由于坐标是字符串类型,我们需要解析它们。我们将使用`map`函数对每个特征进行处理,将字符串分割为经度和纬度,然后转换为数字并设置为几何点。 3. 将解析后的特征集合显示在地图上。 注意:在GEE中,几何点使用`ee.Geometry.Point`创建,需要传入[lon, lat]。 代码示例: </think> 在 Google Earth Engine (GEE) 中加载 CSV 资产并将其显示为控制点,需要以下步骤。这里使用 JavaScript API 实现: ```javascript // 加载 CSV 资产 var csvAsset = ee.FeatureCollection("users/heyunqi98/aa"); // 解析坐标字符串并创建点特征 var points = csvAsset.map(function(feature) { // 提取坐标字符串(例如 "-124.747903 71.987281") var coordsStr = ee.String(feature.get('lon lat (String)')); // 分割字符串并转换为数字 var parts = coordsStr.split(' '); var lon = ee.Number.parse(parts.get(0)); var lat = ee.Number.parse(parts.get(1)); // 创建点几何并返回新特征 return ee.Feature( ee.Geometry.Point([lon, lat]), // 点坐标 [经度, 纬度] { 'system:index': feature.get('system:index'), // 保留原始ID 'orig_coords': coordsStr // 可选:保留原始坐标字符串 } ); }); // 设置地图中心(使用第一个点的坐标) var firstPoint = points.first().geometry().coordinates(); Map.setCenter(firstPoint.get(0), firstPoint.get(1), 5); // 经度, 纬度, 缩放级别 // 在地图上添加控制点(红色) Map.addLayer(points, {color: 'red'}, "Control Points"); // 可选:在控制台打印特征信息 print("Processed Points", points); ``` ### 代码解释: 1. **加载数据** `ee.FeatureCollection("users/heyunqi98/aa")` 加载你上传的 CSV 资产。 2. **坐标解析** - `coordsStr.split(' ')` 分割经纬度字符串(空格分隔) - `ee.Number.parse()` 将字符串转为数字 - `ee.Geometry.Point([lon, lat])` 创建点几何 3. **属性保留** 保留了原始 CSV 中的 `system:index` 字段,并可选存储原始坐标字符串。 4. **地图显示** - `Map.setCenter()` 根据第一个点定位地图 - `Map.addLayer(points, {color: 'red'}, ...)` 以红色显示控制点 ### 使用前检查: 1. 在 GEE 代码编辑器中运行 2. 确保资产路径 `users/heyunqi98/aa` 正确 3. CSV 列名需完全匹配(包括空格和大小写) ### 效果: 地图上将显示红色点状的控制点,点击任意点可查看其经纬度和 `system:index` 属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值