如何传date参数_第9节:GEE的参数类型 (Date, Date Range)

本文档详细介绍了如何在Google Earth Engine(GEE)中处理Date和Date Range参数。内容包括Date的创建、格式化、解析、增加时间单位、更新、求毫秒值以及时间范围的提取等操作;同时讲解了Date Range的创建、合并、相交、首位时间获取及内容检测等。旨在帮助用户掌握GEE中时间参数的使用技巧。
摘要由CSDN通过智能技术生成

0822edcfdf207d290bbc9148fb1794d4.png

视频版请在B站观看:

https://www.bilibili.com/video/av48083555​www.bilibili.com

时间是GEE栅格数据的重要参数。通过本节的学习,我们将掌握如何在GEE中构建、读取和调整时间参数。

9.1 Date

下边介绍时间的创建,代码及执行效果如下:

var date_1 = ee.Date('1970-01-01')
var date_2 = ee.Date(24*60*60*1000)

print(date_1,date_2)

81c0f1910178b360abba56ef24e9b878.png
图9.1 时间的创建

可以看出,GEE中的时间是以1970年1月1日0时为起点,数值是距离目标时间的毫秒数。

下边介绍时间的格式创建,代码及执行效果如下:

var Date_From_YMD = ee.Date.fromYMD( 1992, 05, 10 );
print( Date_From_YMD );

80b32ac5faa75f3e7ca09162159a24cc.png
图9.2 格式创建

下边介绍时间的Parse创建,代码及执行效果如下:

var TheDATE = ee.Date.parse( 'yyyy-MM-dd-HH-mm-ss',
                             '2019-03-27-16-26-12' );
print( TheDATE );

7ab18344643530ce4d2608204fd66614.png
图9.3 时间的Parse创建

下边介绍时间的单位增加命令,代码及执行效果如下:

var Date_0 = ee.Date( '1970-01-01' );
var Date_1 = Date_0.advance( 1, 'year' );
var Date_2 = Date_0.advance( 1, 'month' );
var Date_3 = Date_0.advance( 1, 'week' );
var Date_4 = Date_0.advance( 1, 'day' );
var Date_5 = Date_0.advance( 1, 'hour' );
var Date_6 = Date_0.advance( 1, 'minute' );
var Date_7 = Date_0.advance( 1, 'second' );

print( Date_1, Date_2,Date_3,Date_4,Date_5,Date_6,Date_7);

dee481bd4d754b8126d8e43ad4951160.png
图9.4 时间的单位增加

下边介绍时间的更新,代码及执行效果如下:

var Date_1 = ee.Date( '1992-05-10' );
var Date_2 = Date_1.update( 2019, 06, 9 );
print( Date_1, Date_2 );

065075a758996f8ced2b7ba767f86e6f.png
图9.5 时间的更新

下边介绍时间的格式更改,代码及执行效果如下:

var Date_0 = ee.Date.fromYMD( 1999, 9, 9 );
var Date_FMT = Date_0.format('MM-dd-yyyy' );
print( Date_0, Date_FMT );

e49065eb1824f0c2feb4f5ed5db5129f.png
图9.6 时间的格式更改

下边介绍时间的求毫秒值,代码及执行效果如下:

var Date_0 = ee.Date.parse( 'yyyy-MM-dd-HH-mm-ss','1970-01-01-00-00-01');
var Time_Millis = Date_0.millis( );
print( Date_0, Time_Millis );

cc51eeba0f98ac9fb28f87a3aa56e94c.png
图9.7 时间的求毫秒值

下边介绍时间的范围提取,代码及执行效果如下:

var Date_0      = ee.Date( '2000-05-20' );
var Date_Range  = Date_0.getRange( 'month' );
print( Date_0, Date_Range );

cd586780b2dd804b9513b4f75f835080.png
图9.8 时间的范围提取

下边介绍时间单位值的提取,代码及执行效果如下:

var Date_0      = ee.Date( '2000-05-20' );
var Date_Get    = Date_0.get( 'month' );
print( Date_0, Date_Get );

399414020d992378cdf11388614410c4.png
图9.9 时间单位值的提取

下边介绍时间单位的比例求取,代码及执行效果如下:

var Date_0        = ee.Date( '2000-05-20' );
var Date_Fraction = Date_0.getFraction( 'year' );
print( Date_0, Date_Fraction, (4*30+20)/365);

f1da5462b77093a6bd9a617093a3d19a.png
图9.10 时间单位的比例求取

下边介绍逝去时间的求取,代码及执行效果如下:

var Date_0      = ee.Date( '2000-05-20' );
var Date_Rela_1 = Date_0.getRelative( 'day','month' );
var Date_Rela_2 = Date_0.getRelative( 'day','year' );
var Date_Rela_3 = Date_0.getRelative( 'month','year' );
var Date_Rela_4 = Date_0.getRelative( 'hour','year' );

print( Date_Rela_1, Date_Rela_2,Date_Rela_3,Date_Rela_4);

bc91d9125ed3cc99bdba7813c6eedf06.png
图9.11 逝去时间的求取

下边介绍时间单位的比值求取,代码及执行效果如下:

var Ration = ee.Date.unitRatio( 'day', 'year' );
print( Ration,1/365 );

b430e8165e701b597fc8c5161bab7a6f.png
图9.12 时间单位的比值求取

下边介绍时间差值的求取,代码及执行效果如下:

var Date_1  = ee.Date( '2019-01-01' );
var Date_2  = ee.Date( '2000-01-01' );
var Difference_Day = Date_1.difference( Date_2, 'day' );
var Difference_Year = Date_1.difference( Date_2, 'year' );
print( Difference_Day, Difference_Year );

3814b7f1dc5f3849a758fc9d208abbfe.png
图9.13 时间差值的求取

下边是本节介绍的常用时间函数,尝试回忆其语法和功能。

ee.Date()   ee.Algorithms.Date()    ee.Date.fromYMD()   ee.Date.parse()
Date.advance()  Date.update()
Date.format()   Date.milis()        Date.getRange()
Date.get()  Date.gerFraction()       Date.unitRation()      Date.difference()

9.2 Date Range

时间段也是时间参数的重要组成部分,通常可以利用时间段对遥感图像进行筛选。

下边介绍时间段的创建,代码及执行效果如下:

var Range_1 = ee.DateRange('2000-01-01')
var Range_2 = ee.DateRange('2000-01-01','2019-03-28')
print(Range_1,Range_2)

11f4a5ef69311d2da4910c0062b3b389.png
图9.14 时间段的创建

下边介绍无限时间段的创建,代码及执行效果如下:

var Range_1 = ee.DateRange( '2000-01-01', '2019-01-01' )
var Rang_Unbound = ee.DateRange.unbounded()
var test = Rang_Unbound.contains(Range_1)

print( Range_1,Rang_Unbound,test);

771771f8d9965ff673ec7b5e4ebdb8e5.png
图9.15 无限时间段的创建

下边介绍时间段的合并,代码及执行效果如下:

var Range_1 = ee.DateRange('1979-01-01','2008-01-01')
var Range_2 = ee.DateRange('2000-01-01','2019-03-28')
var Open_Change = Range_1.union(Range_2)
print(Range_1,Range_2,Open_Change)

f8bb58ae62fb978cf9cbca708262b2e5.png
图9.16 时间段的合并

下边介绍时间段的相交,代码及执行效果如下:

var Range_1 = ee.DateRange('1979-01-01','2008-01-01')
var Range_2 = ee.DateRange('2000-01-01','2019-03-28')
var Olympic = Range_1.intersection(Range_2)
print(Range_1,Range_2,Olympic)

913a3b592953edaa13dcb18f5986a9ca.png
图9.17 时间段的相交

下边介绍时间段的首位时间求取,代码及执行效果如下:

var Range_1 = ee.DateRange('2000-01-01','2019-03-28')
var Range_Start = Range_1.start()
var Range_End   = Range_1.end()
print(Range_1,Range_Start,Range_End)

3091c8310c895c8d6cb79235d605cb45.png
图9.18 时间段的首位时间求取

下边介绍时间段的内容检测,代码及执行效果如下:

var Range_1 = ee.DateRange('1979-01-01','2008-01-01')
var Range_2 = ee.DateRange('2000-01-01','2019-03-28')

var Right_Wrong_1 = Range_1.intersects(Range_2)
var Right_Wrong_2 = Range_1.contains(Range_2)

print(Right_Wrong_1,Right_Wrong_2)

15a1703c23f205ebe539597195da85ac.png
图9.19 时间段的内容检测

下边介绍时间段的内容判断,代码及执行效果如下:

var Range_Empty     = ee.DateRange( '2019-01-01', '2000-01-01');
var Right_Wrong_1   = Range_Empty.isEmpty( )
var Right_Wrong_2   = Range_Empty.isUnbounded( ) 

print(Right_Wrong_1,Right_Wrong_2 );

15a1703c23f205ebe539597195da85ac.png
图9.19 时间段的内容判断

下边是本节介绍的时间段的常见命令,尝试回忆其语法和功能。

ee.DateRange()		ee.DateRange.unbounded()	DateRange.Union()   DateRange.intersection()
DateRange.start()	DateRange.end()	.intersencts()  .contains()  .inEmpty()  .isUnbounded()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值