问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

GEE训练——如何检查GEE中数据集的最新日期

创作时间:
作者:
@小白创作中心

GEE训练——如何检查GEE中数据集的最新日期

引用
CSDN
1.
https://blog.csdn.net/qq_31988139/article/details/137541248

本教程主要的目的是实现影像加载并且获取影像的最新日期,并按照指定的格式将影像时间打印到控制台中。其实这里最基本的操作步骤就是影像数据预处理,将我们影像的时间进行筛选,然后将百万毫秒单位转化为指定的时间格式,这样方便我们查询数据集的日期。

在Google Earth Engine (GEE) 中检查数据集的最新日期,可以通过以下步骤实现:

  1. 登录GEE账户:首先,您需要登录到您的Google Earth Engine账户。如果您尚未创建账户,您可以在GEE的官方网站上注册一个账户。
  2. 访问GEE代码编辑器:在登录成功后,您可以访问GEE的代码编辑器。在这个编辑器中,您可以编写和运行地理空间分析的代码。
  3. 寻找数据集:根据您的需求,选择您想要检查最新日期的数据集。您可以通过GEE的数据目录、GEE的开放数据仓库或者其他数据提供者的数据目录来查找适合您需求的数据集。
  4. 导入数据集:使用GEE的代码编辑器,您可以导入您选择的数据集。在导入数据集之前,请确保您已经了解数据集提供者的数据格式和许可要求。
  5. 使用GEE函数获取最新日期:GEE提供了一些函数和方法来获取数据集的最新日期。其中一种方法是使用ee.ImageCollection,该方法可以根据时间范围和过滤条件获取图像集合。另一种方法是使用ee.Image,它可以获取单个影像的日期。
  6. 在代码编辑器中编写代码:使用GEE的代码编辑器,您可以编写代码来获取数据集的最新日期。最后,我们使用print函数将结果打印到控制台。
  7. 运行代码和结果:在GEE的代码编辑器中,您可以运行代码并查看结果。请确保您已经正确导入了数据集,并且代码没有任何错误。最新日期将输出在控制台中。

通过上述步骤,在GEE中检查数据集的最新日期。请注意,具体的代码和步骤可能因数据集和需求的不同而有所变化。在实际使用中,您可能需要根据数据集的特定属性和格式进行进一步的调整和定制。

函数

ee.Date(date, tz)

Constructs a new Date object.

Arguments:

  • date (ComputedObject|Date|Number|String): The date to convert, one of: a number (number of milliseconds since the epoch), an ISO Date string, a JavaScript Date or a ComputedObject.
  • tz (String, optional): An optional timezone only to be used with a string date.

Returns: Date

getNumber(key)

Extracts a named number value from a dictionary.

Arguments:

  • this:dictionary (Dictionary)
  • key (String)

Returns: Number

format(format, timeZone)

Convert a date to string.

Arguments:

  • this:date (Date)
  • format (String, default: null): A pattern, as described at DateTimeFormat (Joda time 2.2 API); if omitted will use ISO standard date formatting.
  • timeZone (String, default: null): The time zone (e.g. 'America/Los_Angeles'); defaults to UTC.

Returns: String

floor()

On an element-wise basis, computes the largest integer less than or equal to the input.

Arguments:

  • this:input (Array): The input array.

Returns: Array

代码

//加载指定研究区
var geometry=ee.Geometry.Rectangle(-97.4, 40.96, -88.08, 34.87);
// 使用此脚本可帮助比较 Earth Engine 存档与提供商的
// 针对给定产品、区域和日期范围的存档。
// 导入图像集(本例中为哨兵-2 Level-1C TOA 反射率)。
// 本例中为 Sentinel-2 Level-1C TOA 反射率)。请确保导入的集合具有正确的层级和处理级别。
//var imgCol = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED');
var imgCol = ee.ImageCollection('NOAA/VIIRS/001/VNP21A1D');
//var imgCol = ee.ImageCollection('projects/satromo-int/assets/COL_S2_SR_HARMONIZED_SWISS');
// 2.通过有限的感兴趣区域过滤图像集。绘制区域
// 或定义一个 ee.Geometry 对象。这里,一个点已从绘图工具中导入。
imgCol = imgCol.filterBounds(geometry);
// 或者,通过足迹或平铺来定义感兴趣的区域。例如
// 下面一行根据 "MGRS_TILE "属性过滤集合。
// imgCol = imgCol.filter(ee.Filter.eq('MGRS_TILE', '10SEG'));
// 3.根据感兴趣的狭窄日期窗口过滤图像集。请注意
// 第二个日期是排他性的(返回的集合将包含给定日期之前的图像,但不包括给定日期)。
imgCol = imgCol.filterDate('2024-02-01', '2024-04-08');
// 4.添加摄入日期属性。
imgCol = imgCol.map(function(img) {
  var ingestTime = ee.Date(img.getNumber('system:version').divide(1000));
  var ingestDate = ingestTime.format('YYYY-MM-dd HH:mm:ss');
  var productTime = img.date();
  var productDate = productTime.format('YYYY-MM-dd HH:mm:ss');
  
  // 以毫秒为单位计算差值
  var timeDifference = ingestTime.millis().subtract(productTime.millis());
  
  // 将毫秒转换为小时
  var hours = ee.Number(timeDifference.divide(1000 * 60 * 60)).floor();
  // 格式化差值
  var differenceFormatted = ee.String(hours.format('%02d'));
  
  return img.set({
    'Product_Date': productDate,
    'Ingest_Date': ingestDate,
    'Difference': differenceFormatted,
    'ID': img.id()
  });
});
// 将图像产品日期、摄取日期和地球引擎 ID 的列表打印到控制台。
var props = ee.List(['Product_Date', 'Ingest_Date', 'Difference', 'ID']);
var lists = ee.List(imgCol.reduceColumns({
  reducer: ee.Reducer.toList().repeat(props.size()),
  selectors: props
}).get('list'));
print('Product Date, Ingest Date, Difference (HH), ID');
print(ee.List(lists.get(0)).zip(ee.List(lists.get(1))).zip(ee.List(lists.get(2))).zip(ee.List(lists.get(3))));
// 6.在地图上加载显示集合。
Map.centerObject(imgCol.first(), 6);
Map.addLayer(imgCol, {bands: ['Emis_14', 'Emis_15', 'Emis_16']});
// 7. 打印集合中第一个图像的产品日期、摄取日期和差值。
var firstImage = imgCol.first();
print(firstImage);
var firstProductDate = ee.String(firstImage.get('Product_Date'));
var firstIngestDate = ee.String(firstImage.get('Ingest_Date'));
var firstDifference = ee.String(firstImage.get('Difference'));
print('Ingest Date (First Image):', firstIngestDate);
print('Product Date (First Image):', firstProductDate);
print('Difference (in hours) (First Image):', firstDifference);

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号