⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hdf_read_lonlat.pro

📁 用idl开发的实现显示卫星图片在地球上位置的程序
💻 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 + -