📄 radarsat_read_lonlat.pro
字号:
;$
; NAME :
; Radarsat_read_lonlat
;
; PURPOSE :
; 获得Radarsat文件四个角点的经纬度范围
;
; CATEGORY:
; read data
; AUTHOR :
; QQz(Xinyuan QU)
; E-mail: qqzwind@gmail.com
; BLog : www.qqzwind.cn || hi.baidu.blog/qqzwind
;
; CALLING SEQUENCE:
; result = Radarsat_read_lonlat(filename,leftup=leftup,rightup=rightup,leftdown=leftdown,rightdown=rightdown)
;
; MODIFICATION HISTORY:
; Written by: QQz, 2007-9-18
;$
Function Radarsat_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 Radarsat lonlat error!'
RETURN,0
ENDIF
;
if ~file_test(file) then return,0
;
openr,lun,file,/get_lun
;
infostring = ''
WHILE ~EOF(lun) do begin
readf,lun,infostring
infoarr = strsplit(infostring,'=',/extract)
case strcompress(infoarr[0],/REMOVE_ALL) of
'upperLeft' : begin
str = strarr(4)
readf,lun,str
leftup = str_tolonlat(str)
if n_elements(leftup) le 1 then return,0
end
'upperRight': begin
str = strarr(4)
readf,lun,str
rightup= str_tolonlat(str)
if n_elements(rightup) le 1 then return,0
end
'lowerRight': begin
str = strarr(4)
readf,lun,str
rightdown= str_tolonlat(str)
if n_elements(rightdown) le 1 then return,0
end
'lowerLeft': begin
str = strarr(4)
readf,lun,str
leftdown= str_tolonlat(str)
if n_elements(leftdown) le 1 then return,0
break
end
else:
endcase
ENDWHILE
return,1
End
;
;根据字符串数组解析经纬度
Function str_tolonlat,str
;
if n_elements(str) eq 0 then return,0
f_bracket = StrPos(str[2], '=')
r_bracket = StrPos(str[2], ';')
lon= StrMid(str[2], f_bracket+1, r_bracket-1)
f_bracket = StrPos(str[1], '=')
r_bracket = StrPos(str[1], ';')
lat= StrMid(str[1], f_bracket+1, r_bracket-1)
return,[float(lon),float(lat)]
;
End
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -