📄 hdf_read_lonlat.pro
字号:
;$
; NAME :
; HDF_read_lonlat
;
; PURPOSE :
; 获得hdf文件四个角点的经纬度范围
;
; CATEGORY:
; read data
; AUTHOR :
; QQz(Xinyuan QU)
; E-mail: qqzwind@gmail.com
; BLog : www.qqzwind.cn / hi.baidu.blog/qqzwind
;
; CALLING SEQUENCE:
; result = HDF_read_lonlat(filename,startlonlat=startlonlat,finishlonlat=finishlonlat)
;
; MODIFICATION HISTORY:
; Written by: QQz, 2007-9-13
;$
Function HDF_read_lonlat,file,startlonlat=startlonlat,finishlonlat=finishlonlat
;
compile_opt STRICTARR
;
Catch, error
IF error NE 0 THEN BEGIN
Catch, /Cancel
;ok = Dialog_Message(!Error_State.Msg)
print,'Read HDF lonlat error!'
RETURN,0
ENDIF
;
hdfid = hdf_sd_start(file)
;
;获取数据
;
latindex = hdf_sd_nametoindex(hdfid,'Latitude')
lonindex = hdf_sd_nametoindex(hdfid,'Longitude')
latid = hdf_sd_select(hdfid,latindex)
lonid = hdf_sd_select(hdfid,lonindex)
hdf_sd_getdata,latid,latdata
hdf_sd_getdata,lonid,londata
hdf_sd_endaccess,latid
hdf_sd_endaccess,lonid
hdf_sd_end,hdfid
;
;获得除无效值以外的最大最小值
;
latdims = size(latdata)
londims = size(londata)
;
for i=0l ,latdims[4]-1 do begin
if latdata[i] ne -999. then begin
maxlat = latdata[i]
BREAK
endif
endfor
;
for i=latdims[4]-1,0 ,-1 do begin
if latdata[i] ne -999. then begin
minlat = latdata[i]
BREAK
endif
endfor
;
;
for i=0l ,londims[4]-1 do begin
if londata[i] ne -999. then begin
minlon = londata[i]
BREAK
endif
endfor
;
for i=latdims[4]-1,0 ,-1 do begin
if londata[i] ne -999. then begin
maxlon = londata[i]
BREAK
endif
endfor
;
startlonlat = [minlon,minlat]
finishlonlat = [maxlon,maxlat]
return,1
End
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -