SYSTIME 导致 IDL 程序错误

SYSTIME causes IDL program error

我被分配了一个 class 的 IDL 编码任务。这种语言对我来说是新的,但我已经编程了一段时间,所以这个错误让我很困惑。我无法使用 systime() 函数将日期和时间添加到输出的文件名中。

未在代码中显示:创建了包含 4 个 geotiffs 的镶嵌光栅图像的 mosaicRaster。

outputRaster = filepath + 'outputFile' + SYSTIME() + '.tif'
mosaicRaster.Export, outputRaster, 'TIFF'

程序完成且没有错误..只是没有输出我的文件。如果我将其更改为:

outputRaster = filepath + 'outputFile.tif'

程序运行良好。

我尝试将 STRING() 放在 SYSTIME() 周围,也放在 outputRaster 周围。

funny/weird/miserable 是 SYSTIME(/SECONDS) 运行良好。只有当SYSTIME没有参数时才会出问题。

此外,这些语句有效:

time = SYSTIME(/SECONDS)

PRINT, SYSTIME()

这不起作用(程序退出而不输出我的光栅):

time = SYSTIME()

同样,没有错误。我已经搜索了帮助文档,但没有找到任何内容。我的教授看过我的代码并说他看起来完全一样(他运行 mac,我在实验室中使用 windows VM)。该文件只是不输出。您可能会问为什么我需要在文件名后附加当前日期...这是对这个最终项目的要求。

非常感谢任何帮助。

SYSTIME() 生成一个字符串,其中包含 Windows 路径中的非法字符(即冒号)。

c:\>mkdir "Mon Jan 18 20:14:07 2038"
The filename, directory name, or volume label syntax is incorrect.

c:\>mkdir "Mon Jan 18 20-14-07 2038"
(no error)

SYSTIME(/SECONDS) 产生一个带数字和一个点的字符串,这是合法的。 https://www.harrisgeospatial.com/docs/systime.html

冒号在 Windows 上无效,空格通常很难处理。最简单的解决方法是使用 IDL_VALIDNAME 来修正日期:

IDL> print, idl_validname(systime(), /convert_all)
Thu_Feb__8_11_01_05_2018