使用 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