SYSTIME导致IDL程序错误

时间:2018-02-08 00:02:54

标签: gis raster idl-programming-language

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

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

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

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

outputRaster = filepath + 'outputFile.tif'

程序运行良好。

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

有趣/怪异/悲惨的事情是SYSTIME(/ SECONDS)运行良好。只有当SYSTIME没有参数时才会出现问题。

此外,这些陈述有效:

time = SYSTIME(/SECONDS)

PRINT, SYSTIME()

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

time = SYSTIME()

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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