使用 IDL 从 NCDF4 文件导入字符串
Importing a string from NCDF4 file with IDL
我是 IDL 新手
我正在将数据从 NCDF4 导入 IDL。所有数值变量
完美导入。然而,站名以 200 的数组形式出现。输出示例为:-
84 82 69 76 69 87 95 65 69 82 79 32 32 32 0 0 0 0
0 0 0 0 。
等等
我在使用 R 时从未遇到过这个问题。我尝试使用字符串命令,但这对它不起作用。如果我注释掉字符串命令,脚本的其余部分将完美运行。我的脚本如下
PRO Lat_Lon_Alt_Array
; This program is the extract the Latitute, Longigitude & Altitute
; with the Site name and file code.
; The purpose is to output the above dimensions from the station files
; into a csv file.
COMPILE_OPt IDL2
the_file_list = file_search('D:/Rwork/Project/25_Files/','*.nc')
;---------------------------------------------------------------
n_files=N_Elements(the_file_list)
station_name_st=string(n_files) ; try this
latitude_arr=DBLARR(n_files)
longitude_arr=DBLARR(n_files)
height_arr=DBLARR(n_files)
;----------------------------------------------------------------
FOR filein = 0, N_ElEMENTS (the_file_list)-1 DO BEGIN
station = NCDF_OPEN(the_file_list[filein])
;fred= NCDF_VARINQ(station,station_name)
NCDF_VARGET, station, 'station_name', station_name
NCDF_VARGET, station, 'lat', latitude
NCDF_VARGET, station, 'lon', longitude
NCDF_VARGET, station, 'alt', height
stop
;-------------------------------------------------------
;station_name_st[filein]=station_name
latitude_arr[filein]=latitude
longitude_arr[filein]=longitude
height_arr[filein]=height
;-----------------------------------------------------
Print,the_file_list[filein]
Print, 'station_name'
Print, station_name
Print,'lat'
Print,latitude
Print,'lon'
print,longitude
Print,'alt'
Print,height
HEADER=['File_Address','Latitude','Longitude','Altitude']
ENDFOR
WRITE_CSV, 'LatLon.csv',the_file_list,latitude_arr,longitude_arr,height_arr,$
HEADER=HEADER,TABLE_HEADER='LAT,LON & ALT OF STATIONS'
RETURN
END
在某些情况下,NetCDF 文件将 "strings" 存储为字节数组。您的 station_name
变量似乎是其中一种情况。用NCDF_VARGET
程序读入后,用STRING
函数转换station_name
即可。
NCDF_VARGET, station, 'station_name', station_name
PRINT, station_name
84 82 69 76 69 87 95 65 69 82 79 32 32 32 0 0 0 0 0 0 0 0
station_name = STRING(station_name)
PRINT, station_name
TRELEW_AERO
我是 IDL 新手
我正在将数据从 NCDF4 导入 IDL。所有数值变量 完美导入。然而,站名以 200 的数组形式出现。输出示例为:-
84 82 69 76 69 87 95 65 69 82 79 32 32 32 0 0 0 0 0 0 0 0 。
等等
我在使用 R 时从未遇到过这个问题。我尝试使用字符串命令,但这对它不起作用。如果我注释掉字符串命令,脚本的其余部分将完美运行。我的脚本如下
PRO Lat_Lon_Alt_Array
; This program is the extract the Latitute, Longigitude & Altitute
; with the Site name and file code.
; The purpose is to output the above dimensions from the station files
; into a csv file.
COMPILE_OPt IDL2
the_file_list = file_search('D:/Rwork/Project/25_Files/','*.nc')
;---------------------------------------------------------------
n_files=N_Elements(the_file_list)
station_name_st=string(n_files) ; try this
latitude_arr=DBLARR(n_files)
longitude_arr=DBLARR(n_files)
height_arr=DBLARR(n_files)
;----------------------------------------------------------------
FOR filein = 0, N_ElEMENTS (the_file_list)-1 DO BEGIN
station = NCDF_OPEN(the_file_list[filein])
;fred= NCDF_VARINQ(station,station_name)
NCDF_VARGET, station, 'station_name', station_name
NCDF_VARGET, station, 'lat', latitude
NCDF_VARGET, station, 'lon', longitude
NCDF_VARGET, station, 'alt', height
stop
;-------------------------------------------------------
;station_name_st[filein]=station_name
latitude_arr[filein]=latitude
longitude_arr[filein]=longitude
height_arr[filein]=height
;-----------------------------------------------------
Print,the_file_list[filein]
Print, 'station_name'
Print, station_name
Print,'lat'
Print,latitude
Print,'lon'
print,longitude
Print,'alt'
Print,height
HEADER=['File_Address','Latitude','Longitude','Altitude']
ENDFOR
WRITE_CSV, 'LatLon.csv',the_file_list,latitude_arr,longitude_arr,height_arr,$
HEADER=HEADER,TABLE_HEADER='LAT,LON & ALT OF STATIONS'
RETURN
END
在某些情况下,NetCDF 文件将 "strings" 存储为字节数组。您的 station_name
变量似乎是其中一种情况。用NCDF_VARGET
程序读入后,用STRING
函数转换station_name
即可。
NCDF_VARGET, station, 'station_name', station_name
PRINT, station_name
84 82 69 76 69 87 95 65 69 82 79 32 32 32 0 0 0 0 0 0 0 0
station_name = STRING(station_name)
PRINT, station_name
TRELEW_AERO