r - 将数据 modis EVI 转换为 r 中的日期 yy-mm-dd
问题描述
我在 2000 年使用 MODIS EVI 栅格。我有 6 个年的栅格,一个月的栅格:
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000209_aid0001.tif"
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000225_aid0001.tif"
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000241_aid0001.tif"
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000257_aid0001.tif"
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000273_aid0001.tif"
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000289_aid0001.tif"
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000305_aid0001.tif"
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000321_aid0001.tif"
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000337_aid0001.tif"
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000353_aid0001.tif"
我想像 2000-02-09 那样转换月份,但我不知道该怎么做。
解决方案
看起来您的datetime
字符串格式遵循year(4digits)day_of_year(3digit)
格式,例如 2000209 表示 2000 年和 209 天(2000 年 7 月 27 日)。如果是真的那么问题就不难了:
- 提取那七位数字。(str_extract)
- 从中解析“日期时间”。(您需要知道
j
用于从 . 解析日期day_of_year
。) - [:Graph:] 将丢弃除数字和标点符号以外的任何内容。
代码
dt <- data.frame(string =
c("D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000209_aid0001.tif",
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000225_aid0001.tif",
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000241_aid0001.tif",
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000257_aid0001.tif",
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000273_aid0001.tif",
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000289_aid0001.tif",
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000305_aid0001.tif",
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000321_aid0001.tif",
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000337_aid0001.tif",
"D:/Rteledetection/Pivots/MODIS/MOD13Q1.006__250m_16_days_EVI_doy2000353_aid0001.tif"))
dt$string %>% str_extract('\\d{7}') %>% str_replace('2000', '2000-') %>%
parse_date_time('y-j') %>% str_subset('[:graph:]')
输出
[1] “2000-07-27” “2000-08-12” “2000-08-28” “2000-09-13” “2000-09-29” “2000-10-15”
[7] “2000 -10-31" "2000-11-16" "2000-12-02" "2000-12-18"
推荐阅读
- next.js - Gitlab Pages 上的 NextJS SSG,得到 503?
- javascript - 为所有s添加onclick事件监听
- reactjs - 无法在异步函数结束时更新状态
- javascript - 电子上的 ajax 请求中的 Firebase“auth/network-request-failed”错误
- typescript - 如何在 TypeScript 中检查 Firestore 地图值?
- php - Moodle 页面图像未加载
- html - 如何改变css高度?
- swiftui - SwiftUI - 呈现入职屏幕/演练
- lisp - 需要帮助理解一个错误 (F3 '(6 3 4 1)) is not a real number Lisp code
- c# - 如何使彼此相对旋转?统一二维