📄 envi_read_mapinfo.pro
字号:
;$
; NAME :
; ENVI_read_mapinfo
;
; PURPOSE :
; 解析头文件获取envi格式影像文件的坐标范围
;
; CATEGORY:
; read data
; AUTHOR :
; QQz(Xinyuan QU)
; E-mail: qqzwind@gmail.com
; BLog : www.qqzwind.cn / hi.baidu.blog/qqzwind
;
; CALLING SEQUENCE:
; result = ENVI_read_mapinfo(filename,startlonlat=startlonlat,finishlonlat=finishlonlat)
;
; MODIFICATION HISTORY:
; Written by: QQz, 2007-9-10
;$
Function ENVI_read_mapinfo,filename,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 ENVI lonlat error!'
RETURN,0
ENDIF
;
if ~file_test(filename) then return,0
;
path = file_dirname(filename)
name = file_basename(filename,'.img')
name = file_basename(name,'.hdr')
;
hdrpath = path+'\'+name+'.hdr'
if file_test(hdrpath) then begin
Openr ,lun,hdrpath,/get_lun
typefile = ''
readf,lun,typefile
if STRUPCASE(typefile) eq 'ENVI' then begin
;
;读取map 信息
;
infostring = ''
WHILE ~EOF(lun) do begin
readF,lun,infostring
infoarr = strsplit(infostring,'=',/extract)
typename = strcompress(strlowcase(infoarr[0]),/REMOVE_ALL)
CASE typename of
'mapinfo' : begin
f_bracket = StrPos(infostring, '{')
r_bracket = StrPos(infostring, '}')
mapinfo = StrMid(infostring, f_bracket+1, r_bracket-f_bracket-1)
break
end
'samples': begin
samples = float(infoarr[1])
end
'lines' : begin
lines = float(infoarr[1])
end
ELSE :break
ENDCASE
ENDWHILE
;
;
if n_elements(mapinfo) ne 0 then begin
mapstr = strsplit(mapinfo,',',/extract)
mapname = strcompress(strupcase(mapstr[0]),/REMOVE_ALL)
;print,mapname
case mapname of
'GEOGRAPHICLAT/LON' : begin
startlonlat = [mapstr[3],mapstr[4]]
finishlonlat= float([mapstr[3],mapstr[4]]) + [samples,-lines]* float([mapstr[5],mapstr[6]])
datum = mapstr[7]
unit = (strsplit(mapstr[8],'=',/extract))[1]
RETURN,1
end
'UTM' : begin
startmap = [mapstr[3],mapstr[4]]
finishmap = float([mapstr[3],mapstr[4]]) + [samples,-lines]* float([mapstr[5],mapstr[6]])
RETURN,1
end
else :
endcase
endif else begin
print,'没有投影信息'
RETURN,0
endelse
endif else begin
print,'非ENVI影像头文件'
RETURN,0
endelse
free_lun,lun
endif else begin
print,'找不到影像头文件'
RETURN,0
endelse
End
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -