envisat_read_lonlat.pro

来自「用idl开发的实现显示卫星图片在地球上位置的程序」· PRO 代码 · 共 132 行

PRO
132
字号
;$
; NAME    :
;   ENVISAt_read_lonlat
;
; PURPOSE :
;   获得ENVISAt文件四个角点的经纬度范围
;
; CATEGORY:
;   read data
; AUTHOR  :
;   QQz(Xinyuan QU)
;   E-mail: qqzwind@gmail.com
;   BLog  : www.qqzwind.cn / hi.baidu.blog/qqzwind
;
; CALLING SEQUENCE:
;    result = ENVISAt_read_lonlat(filename,leftup=leftup,rightup=rightup,leftdown=leftdown,rightdown=rightdown)
;
; MODIFICATION HISTORY:
;   Written by: QQz, 2007-9-13
;$
Function ENVIsat_read_lonlat,file,leftup=leftup,rightup=rightup,leftdown=leftdown,rightdown=rightdown
	;
	compile_opt STRICTARR
	;
	Catch, error
	IF error NE 0 THEN BEGIN
	   Catch, /Cancel
	   ;ok = Dialog_Message(!Error_State.Msg)
	   print,'Read ENVIsat lonlat error!'
	   RETURN,0
	ENDIF
	;
	if ~file_test(file) then return,0
	;
	openr,lun,file,/get_lun
	;
	str=''
	find=0
	mapPts=fltarr(2,6)
	;
	while not eof(lun) and find lt 8 do begin
       readf,lun,str
       ;
       ;左下右下经纬度坐标
       ;
       pos=strpos(strupcase(str),'FIRST_NEAR_LAT=')
       if pos ge 0 then begin
          newpos=strpos(str,'=')
          mapPts[0,0]=float(strmid(str,newpos+2,10))
          find=find+1
          ;
          leftdown_lat = float(strmid(str,newpos+2,10))
        endif
        ;
        ;
     	pos=strpos(strupcase(str),'FIRST_NEAR_LONG=')
       if pos ge 0 then begin
          newpos=strpos(str,'=')
          mapPts[1,0]=float(strmid(str,newpos+2,10))
           find=find+1
          ;
           leftdown_lon = float(strmid(str,newpos+2,10))
        endif
        ;
        ;
       pos=strpos(strupcase(str),'FIRST_FAR_LAT=')
       if pos ge 0 then begin
          newpos=strpos(str,'=')
          mapPts[0,2]=float(strmid(str,newpos+2,10))
          find=find+1
          ;
          rightdown_lat = float(strmid(str,newpos+2,10))
        endif
        ;
        ;
       pos=strpos(strupcase(str),'FIRST_FAR_LONG=')
       if pos ge 0 then begin
          newpos=strpos(str,'=')
          mapPts[1,2]=float(strmid(str,newpos+2,10))
          find=find+1
          ;
          rightdown_lon = float(strmid(str,newpos+2,10))
        endif
	   ;
       ;左上右上经纬度坐标
       ;
       pos=strpos(strupcase(str),'LAST_NEAR_LAT=')
       if pos ge 0 then begin
          newpos=strpos(str,'=')
          mapPts[0,3]=float(strmid(str,newpos+2,10))
          find=find+1
          ;
          ;
          leftup_lat = float(strmid(str,newpos+2,10))
        endif
        ;
        ;
         pos=strpos(strupcase(str),'LAST_NEAR_LONG=')
       if pos ge 0 then begin
          newpos=strpos(str,'=')
          mapPts[1,3]=float(strmid(str,newpos+2,10))
          find=find+1
          ;
          leftup_lon = float(strmid(str,newpos+2,10))
        endif
        ;
        ;
       pos=strpos(strupcase(str),'LAST_FAR_LAT=')
       if pos ge 0 then begin
          newpos=strpos(str,'=')
          mapPts[0,5]=float(strmid(str,newpos+2,10))
          find=find+1
          rightup_lat = float(strmid(str,newpos+2,10))
        endif
        ;
        ;
       pos=strpos(strupcase(str),'LAST_FAR_LONG=')
       if pos ge 0 then begin
          newpos=strpos(str,'=')
          mapPts[1,5]=float(strmid(str,newpos+2,10))
          find=find+1
          rightup_lon = float(strmid(str,newpos+2,10))
        endif
    endwhile
    ;/10.0^6
    leftup    = [leftup_lon,leftup_lat]/10.0^6
    rightup   = [rightup_lon,rightup_lat]/10.0^6
    rightdown = [rightdown_lon,rightdown_lat]/10.0^6
    leftdown  = [leftdown_lon,leftdown_lat]/10.0^6
    return,1

End

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?