【问题标题】:SYSTIME causes IDL program errorSYSTIME 导致 IDL 程序错误
【发布时间】:2018-02-08 00:02:53
【问题描述】:

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

代码中未显示:创建的镶嵌栅格包含 4 个地理标志的镶嵌栅格图像。

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)。该文件只是不输出。您可能会问为什么我需要在文件名后面加上当前日期...这是最终项目的要求。

非常感谢任何帮助。

【问题讨论】:

    标签: gis raster idl-programming-language


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        • 1970-01-01
        • 1970-01-01
        • 2013-04-11
        • 1970-01-01
        相关资源
        最近更新 更多