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

📄 envisavebatch_401.bak

📁 利用IDL读取MODIS影像L1B和MOD03数据(HDF格式),计算遥感植被指数NDVI
💻 BAK
字号:
;
;
;
;非自动生成功能部分,后添加功能
;
;
;
;
;----------------------------------
;打开关闭Envi所涉及到的函数
;--------------------
;判断ENVI的版本是否正确:4.3及以上版本正确
FUNCTION ENVIVersionRight_401
	COMPILE_OPT idl2
	otRight = 0

	FORWARD_FUNCTION GetENVIPath_401 ;得到ENVI当前路径
	enviPath = GetENVIPath_401()
	IF enviPath NE '' THEN otRight = 1

	RETURN, otRight
END
;--------------------
;得到ENVI的当前路径:4.3及4.4路径
FUNCTION GetENVIPath_401
	COMPILE_OPT idl2
	enviPath = ''

	FORWARD_FUNCTION GetIDLPath_401 ;得到IDL当前路径
	curIDL = GetIDLPath_401() ;返回IDL当前路径
	CD, curIDL + '\products' ;进入IDL系统目录下的products文件夹里
	valid43 = 0 & valid44 = 0
	curPath = FILE_SEARCH('envi43');查找products文件夹底下是否存在envi43,如果有则返回其完整的路径,其版本为ENVI4.3
	IF curPath NE '' THEN valid43 = 1

	curPath = FILE_SEARCH('envi44');查找products文件夹底下是否存在envi44,如果有则返回其完整的路径,其版本为ENVI4.4
	IF curPath NE '' THEN valid44 = 1

	IF valid43 EQ 1 THEN BEGIN
		enviPath = curIDL + '\products\envi43';返回ENVI4.3版本的完整路径
	ENDIF ELSE IF valid44 EQ 1 THEN BEGIN
		enviPath = curIDL + '\products\envi44';返回ENVI4.4版本的完整路径
	ENDIF

	RETURN, enviPath
END
;--------------------
;;得到IDL的当前路径
FUNCTION GetIDLPath_401
	COMPILE_OPT idl2
	curPath = !DIR
	RETURN, curPath
END
;--------------------
;退出系统
PRO System_LogOff_401
	ENVI_Batch_LogOff_401 ;关闭ENVI
	ResetExitOnOff_401, 'Nature'
END
;--------------------
;关闭ENVI批处理
PRO ENVI_Batch_LogOff_401
	ENVI_Batch_Exit
END
;--------------------
;设置ENVI离开时IDL处理
PRO ResetExitOnOff_401, inType
	COMPILE_OPT idl2
	COMMON ENVIIDL, ExistOnOff

	;获取envi.cfg的路径
	FORWARD_FUNCTION GetENVIPath_401
	enviPath = GetENVIPath_401()
	IF enviPath EQ '' THEN RETURN
	cfgPath = enviPath + '\menu\envi.cfg'
	cfgPathBp = enviPath + '\menu\envi.cfgbp'
	cfgPathNew = enviPath + '\menu\envi.cfgNew'

	;备份envi.cfg文件
	IF inType EQ 'Nature' THEN BEGIN
		File_Copy, cfgPathBp, cfgPath, /OVERWRITE
		File_Delete, cfgPathBp, /ALLOW_NONEXISTENT
		RETURN
	ENDIF
	File_Copy, cfgPath, cfgPathBp, /OVERWRITE

	;open cfg and change state
	OPENR, lun, cfgPath, /GET_LUN
	OPENW, lunNew, cfgPathNew, /GET_LUN, width = 150

	;open for 'No'
	strLine = ''
	WHILE ~EOF(lun) DO BEGIN
   		READF, lun, strLine
   		bMatch = StrMatch(strLine, 'exit idl on exit from envi')
   		IF bMatch EQ 1 THEN BEGIN	;找到
			IF inType EQ 'No' THEN BEGIN
				PRINTF, lunNew, 'exit idl on exit from envi = no'
			ENDIF ELSE IF inType EQ 'yes' THEN BEGIN
				PRINTF, lunNew, 'exit idl on exit from envi = yes';退出ENVI
			ENDIF
   		ENDIF ELSE BEGIN
   			PRINTF, lunNew, strLine
   		ENDELSE
	ENDWHILE

	FREE_LUN, lun, lunNew
	CLOSE, lun, lunNew

	File_Copy, cfgPathNew, cfgPath, /OVERWRITE
	File_Delete, cfgPathNew, /ALLOW_NONEXISTENT
END

⌨️ 快捷键说明

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