ENVI/IDL实现度分秒到度的批量转换
ENVI/IDL实现度分秒到度的批量转换
本文提供一段ENVI/IDL代码,用于将txt文件中存储的度分秒数据转换为以度为单位的数据,并保存到新的txt文件中。
**代码示例:**IDL; 读取度分秒数据data = READ_ASCII('input_dfm.txt', /FIND_EOF)
; 转换为度为单位的数据decimal_degrees = []for i=0, N_ELEMENTS(data)-1 do begin line = STRSPLIT(data[i], ' ') degree = FLOAT(line[0]) minute = FLOAT(line[1]) second = FLOAT(line[2]) decimal_degree = degree + minute/60 + second/3600 decimal_degrees = [decimal_degrees, decimal_degree]endfor
; 保存为txt文件WRITE_ASCII, 'out_d.txt', DECIMAL_DEGREES, /DOUBLE
使用方法:
- 将需要转换的度分秒数据保存到名为'input_dfm.txt'的txt文件中,每个度分秒数据之间用空格隔开,例如:   
30 15 30 116 23 592. 将以上代码复制到ENVI/IDL控制台窗口中,并运行。3. 代码运行完成后,会在当前目录下生成一个名为'out_d.txt'的txt文件,其中包含了转换后的以度为单位的数据。 
代码解释:
READ_ASCII('input_dfm.txt', /FIND_EOF): 从'input_dfm.txt'文件中读取数据,并将其存储到数组data中。2.for i=0, N_ELEMENTS(data)-1 do begin...endfor: 循环遍历数组data中的每一行数据。3.line = STRSPLIT(data[i], ' '): 将当前行数据按空格分割成数组line。4.degree = FLOAT(line[0]): 将数组line的第一个元素转换为浮点数,并赋值给变量degree。5.minute = FLOAT(line[1]): 将数组line的第二个元素转换为浮点数,并赋值给变量minute。6.second = FLOAT(line[2]): 将数组line的第三个元素转换为浮点数,并赋值给变量second。7.decimal_degree = degree + minute/60 + second/3600: 将度分秒转换为度。8.decimal_degrees = [decimal_degrees, decimal_degree]: 将转换后的度数添加到数组decimal_degrees中。9.WRITE_ASCII, 'out_d.txt', DECIMAL_DEGREES, /DOUBLE: 将数组decimal_degrees中的数据写入到名为'out_d.txt'的txt文件中。
注意事项:
- 输入的txt文件中的度分秒数据之间要用空格隔开。2. 代码中的文件路径可以根据实际情况进行修改。
 
原文地址: https://www.cveoy.top/t/topic/H6G 著作权归作者所有。请勿转载和采集!