ENVI_IDL:如何对文件名的日期进行格式化输出?

简介: ENVI_IDL:如何对文件名的日期进行格式化输出?

00 前言

此前对于这方面知识不是很了解,现在也是。

所以现在稍微总结一下,就从文件名的获取 ==> 文件名的日期截取 ==> 日期(str)的类型转换(int)

==> 日期的整理(乱的) ==> 格式化输出.

这里我假定大家获取到了某一文件的路径如下:

D:\IDL_program\experiment_data\chapter_1\

MODIS_2018_mod04_3k\MYD04_3K.A2018121.0545.061.2018121172155.hdf


01 第一步,使用file_basename()函数路径中的获取文件名

path = 'D:\IDL_program\experiment_data\chapter_1\MODIS_2018_mod04_3k\MYD04_3K.A2018121.0545.061.2018121172155.hdf'
file_name = file_basename(path, '.hdf')


FILE_BASENAME()函数

语法:Result = FILE_BASENAME(Path [, RemoveSuffix] [, /FOLD_CASE])

参数说明:

path:(必选)输入路径名<字符串格式>

RemoveSuffix:(可选)输入需要删除的后缀名<字符串格式>

FOLD_CASE:(可选)关于删除后缀名是否大小写的问题,这里99%基本用不到,故不作解释.


02 第二步,使用strmid()函数获取文件名的日期

在获取之前,需要说明文件名日期的相关信息。获取得到的文件名file_name = MYD04_3K.A2018121.0545.061.2018121172155,其中,从左往右第10(从0开始)个字符到第16个字符是我们需要的字符串即2018121,它表示2018年的第121天。

1. year = strmid(file_name, 10, 4)
2. days = strmid(file_name, 14, 3)


STRMID()函数

语法:Result = STRMID(Expression, First_Character [, Length] , /REVERSE_OFFSET )

参数说明:

Expression:(必选)输入需要截取的字符串

FIrst_Character:(必选)输入需要截取部分的第一个字符的索引(从0开始)

Length:(可选)输入第需要截取部分的

REVERSE_OFFSET:指定First_Character应从字符串的结尾而不是开头开始计数(例如倒数第一个字符的索引为0,倒数第二个字符的索引为1如此)。然后,长度从该位置向右移动到字符串的末端。这将可以从末尾简单地提取字符串。


03 第三步,将获取的日期进行类型转换

很明显,string类型的变量year和days是无法进行计算的,所以需要进行字符串转整型。

year = fix(year)
days = fix(year)

FIX()函数

无需过多说明,就是将浮点数或者字符串型的整数转化为整数.或许和想象的不一样,它并不是使用int()函数而是我们没有见过的fix()函数进行类型转换.


04 第四步,将日期进行整理

日是有一定的难度.或许你会想着自己计算然后编写一个函数用于年月日的获取,这虽然可行但是暂时没有必要。IDL专门提供了两个函数用于儒略日与正常年月日之间的转换。


一个是JULDAY()函数,传入月、日、年返回该天距离1582年10月4日的总天数;


另一个是CALDAT()函数,传入距离1582年10月4日的总天数,返回该天的月、日、年。


那么我们这里的2018121的总体思路是,将2017年12月31日传入JULDAY函数返回儒略日,然后将该儒略日加上121天,最后将新的儒略日传给CALDAT函数得到返回的月、日、年。

julday_date = julday(12, 31, year - 1)
julday_date += days
caldat, julday_date, month, day, year


05 第五步,进行格式化输出

直接用print输出即可.

; 方法1
print, format='(i04, "-", i02, "-", i02)', year, month, day
; 方法2
print, format='(3(i0, :, "-"))', year, month, day


输出结果展示:



目录
相关文章
|
Web App开发 存储 数据可视化
VCF文件修改染色体格式的方法
VCF文件修改染色体格式的方法
|
存储 C语言 索引
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
326 0
ENVI_IDL: 如何批量将Year-Days文件名转换为Year-Month-Day文件名?
ENVI_IDL: 如何批量将Year-Days文件名转换为Year-Month-Day文件名?
99 0
成信大ENVI_IDL第三周课堂内容1:读取OMI数据(HDF5文件)以及输出+解析
成信大ENVI_IDL第三周课堂内容1:读取OMI数据(HDF5文件)以及输出+解析
190 0
|
存储 编解码
ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析
ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析
435 1
|
编解码
ENVI_IDL: 读取文本文件并输出为Geotiff格式+简单均值插值
ENVI_IDL: 读取文本文件并输出为Geotiff格式+简单均值插值
268 0
ENVI_IDL: 文本文件的读取(主要是txt、csv文件)
ENVI_IDL: 文本文件的读取(主要是txt、csv文件)
495 0
|
存储 编解码 Python
ENVI_IDL:对于书写和创建GEOTIFF结构体?
ENVI_IDL:对于书写和创建GEOTIFF结构体?
162 0
|
数据格式
labview数据类型转换字符串文件路径进制转换小数格式等
labview数据类型转换字符串文件路径进制转换小数格式等
284 0
fastq文件转换成fasta文件
fastq文件转换成fasta文件
296 0