PRO read_asc
COMPILE_OPT idl2
ENVI, /RESTORE_BASE_SAVE_FILES
ENVI_BATCH_INIT, LOG_FILE = 'batch_log.txt'
finame = 'M:\asc\cru_ts3.21.1991.2000.tmp.dat.nc'
NCid = NCDF_OPEN(finame)
NCinfo = NCDF_INQUIRE(NCid)
print, NCinfo.Nvars
; 查询NC文件中的变量,以及变量的 att 信息
FOR iVar = 0, NCinfo.Nvars-1 DO BEGIN
Varinfo = NCDF_VARINQ(NCid, iVar)
print, "Var Name: ", Varinfo.Name
print, "Att Number: ", Varinfo.Natts
FOR iAtt = 0, Varinfo.Natts-1 DO BEGIN
AttName = NCDF_ATTNAME(NCid, iVar, iAtt)
NCDF_ATTGET, NCid, iVar, AttName, Att
print, AttName, ": ", STRING(Att)
ENDFOR
print, ""
ENDFOR
; 读取变量名为tmp的数据
Dataid = NCDF_VARID(NCid,'tmp')
NCDF_VARGET, NCid, Dataid, Data
;help, Data
; data=(data_t gt 100)*(-999)+(data_t lt 100)*data
tags={GEOGANGULARUNITSGEOKEY:9102,$
GEOGCITATIONGEOKEY:'GCS_WGS_1984',$
GEOGINVFLATTENINGGEOKEY:298.25722356300003,$
GEOGRAPHICTYPEGEOKEY:4326,$
GEOGSEMIMAJORAXISGEOKEY:6378137.0000000000,$
GTMODELTYPEGEOKEY:2,$
GTRASTERTYPEGEOKEY:1,$
MODELPIXELSCALETAG:[0.50000000,0.50000000,0.00000000],$
MODELTIEPOINTTAG:[0.00000000,0.00000000,0.00000000,-180.00000,90.000000,0.00000000]}
date=strarr(120);文件是一个含有120波段的数组,建立一个string array,用date接收返回值
index=0
for i=0,9,1 do begin
for j=0,11,1 do begin
date[index]=string(1991+i)+'.'+string(j+1)
out_name='M:\temp\'+'tmp'+date[index]+'.tif'
out_name=strcompress(out_name,/REMOVE_ALL)
data_1=data[*,*,index]
data_2=(data[*,*,index] gt 100)*(-999)+(data[*,*,index] lt 100)*(data[*,*,index])
data_3=data_2*float(data_2 ne (-999))/(data_2 ne (-999))
write_tiff, out_name, rotate(data_3,7), /float, geotiff=tags;rotate()
index=index+1
endfor
endfor
end
|