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

📄 fxposit.pro

📁 basic median filter simulation
💻 PRO
字号:
        FUNCTION FXPOSIT, XFILE, EXT_NO, readonly=readonly, COMPRESS=COMPRESS, $                 SILENT = Silent, EXTNUM = extnum, ERRMSG= ERRMSG, $		 LUNIT = lunit, UNIXPIPE= unixpipe;+; NAME:;     FXPOSIT; PURPOSE:;     Return the unit number of a FITS file positioned at specified extension; EXPLANATION:;     The FITS file will be ready to be read at the beginning of the ;     specified extension.    Either an extension number or extension name;     can be specified.   Called by headfits.pro, mrdfits.pro;;     Modified in March 2009 to set the /SWAP_IF_LITTLE_ENDIAN keyword;     when opening a file, and **may not be compatible with earlier versions**; CALLING SEQUENCE:;     unit=FXPOSIT(FILE, EXT_NO_OR_NAME, /READONLY, COMPRESS=program, ;                       UNIXPIPE=, ERRMSG= , EXTNUM= , UNIT=, /SILENT);; INPUT PARAMETERS:;     FILE    = FITS file name, scalar string;     EXT_NO_OR_NAME  = Either the extension to be moved to (scalar ;               nonnegative integer) or the name of the extension to read ;               (scalar string);; RETURNS:;     Unit number of file or -1 if an error is detected.;; OPTIONAL INPUT KEYWORD PARAMETER:;     /READONLY - If this keyword is set and non-zero, then OPENR rather ;                than OPENU will be used to open the FITS file.;     COMPRESS - If this keyword is set and non-zero, then then treat;                the file as compressed.  If 1 assume a gzipped file.;                and use IDLs internal decompression facility.    For Unix ;                compressed or bzip2 compressed files spawn off a process to ;                decompress and use its output as the FITS stream.  If the ;                keyword is not 1, then use its value as a string giving the ;                command needed for decompression.;     LUNIT -    Integer giving the file unit number.    Use this keyword if;                you want to override the default use of GET_LUN to obtain;                a unit number.;     /SILENT    If set, then suppress any messages about invalid characters;                in the FITS file.;; OPTIONAL OUTPUT KEYWORDS:;       EXTNUM - Nonnegative integer give the extension number actually read;               Useful only if the extension was specified by name.;       ERRMSG  = If this keyword is present, then any error messages will be;                 returned to the user in this parameter rather than;                 depending on the MESSAGE routine in IDL.  If no errors are;                 encountered, then a null string is returned.;       UNIXPIPE - If set to 1, then the FITS file was opened with a UNIX pipe;                rather than with the OPENR command.    This is only required ;                 when reading a bzip or Unix compress file.     Note that ;                 automatic byteswapping cannnot be set for a Unix pipe, since;                 the SWAP_IF_LITTLE_ENDIAN keyword is only available for the;                 OPEN command.; SIDE EFFECTS:;      Opens and returns a file unit.; PROCEDURE:;      Open the appropriate file, or spawn a command and intercept;      the output.;      Call FXMOVE to get to the appropriate extension.; PROCEDURE CALLS:;      FXMOVE(); MODIFICATION HISTORY:;      Derived from William Thompson's FXFINDEND routine.;      Modified by T.McGlynn, 5-October-1994.;       Modified by T.McGlynn, 25-Feb-1995 to handle compressed;          files.  Pipes cannot be accessed using FXHREAD so;          MRD_HREAD was written.;       W. Landsman 23-Apr-1997    Force the /bin/sh shell when uncompressing ;       T. McGlynn  03-June-1999   Use /noshell option to get rid of processes left by spawn.;                                  Use findfile to retain ability to use wildcards;       W. Landsman 03-Aug-1999    Use EXPAND_TILDE under Unix to find file;       T. McGlynn  04-Apr-2000    Put reading code into FXMOVE,;                                  additional support for compression from D.Palmer.;       W. Landsman/D.Zarro 04-Jul-2000    Added test for !VERSION.OS EQ 'Win32' (WinNT);       W. Landsman    12-Dec-2000 Added /SILENT keyword;       W. Landsman April 2002     Use FILE_SEARCH for V5.5 or later;       W. Landsman Feb 2004       Assume since V5.3 (OPENR,/COMPRESS available);       W. Landsman,W. Thompson, 2-Mar-2004, Add support for BZIP2 ;       W. Landsman                Don't leave open file if an error occurs;       W. Landsman  Sep 2004      Treat FTZ extension as gzip compressed;       W. Landsman  Feb 2006      Removed leading spaces (prior to V5.5);       W. Landsman  Nov 2006      Allow specification of extension name;                                  Added EXTNUM, ERRMSG keywords;       W. Landsman/N.Piskunov Dec 2007  Added LUNIT keyword;       W. Landsman     Mar 2009   OPEN with /SWAP_IF_LITTLE_ENDIAN;                                  Added UNIXPIPE output keyword;-;        ON_ERROR,2        compile_opt idl2  ;;  Check the number of parameters.;        IF N_PARAMS() LT 2 THEN BEGIN             PRINT,'SYNTAX:  UNIT = FXPOSIT(FILE, EXT_NO, /Readonly,' + $	                   'ERRMSG= , /SILENT, compress=prog, LUNIT = lunit)'            RETURN,-1        ENDIF        PRINTERR = NOT ARG_PRESENT(ERRMSG)	ERRMSG = ''	UNIXPIPE=0            FILE = FILE_SEARCH(XFILE, COUNT=COUNT)         IF COUNT EQ 0 THEN BEGIN	    ERRMSG = 'Specified FITS File not found ' 	    IF PRINTERR THEN MESSAGE,ERRMSG,/CON             RETURN, -1   ; Don't print anything out, just report an error	ENDIF                    FILE = FILE[0];;  Check if logical unit number is specified explicitly.;        IF KEYWORD_SET(LUNIT) THEN BEGIN 	   UNIT=LUNIT 	   GLUN = 0	ENDIF ELSE BEGIN 	    UNIT = -1            GLUN = 1       ENDELSE; ;  Check if this is a compressed file.;        UCMPRS = ' '	IF KEYWORD_SET(compress) THEN BEGIN	    IF strcompress(string(compress),/remo) eq '1' THEN BEGIN	        compress = 'gunzip'	    ENDIF	    UCMPRS = compress;	ENDIF ELSE BEGIN                    LEN = STRLEN(FILE)            IF LEN GT 3 THEN $	        TAIL = STRLOWCASE(STRMID(FILE, LEN-3, 3))  $	    ELSE TAIL = ' '	                IF STRMID(TAIL,1,2) EQ '.z'  THEN $                UCMPRS = 'uncompress'   $	    ELSE IF TAIL EQ '.gz' or tail EQ 'ftz' THEN $	        UCMPRS = 'gunzip'       $	    ELSE IF TAIL EQ 'bz2' THEN $	        UCMPRS = 'bunzip2'	    	ENDELSE;  Handle compressed files.	IF UCMPRS EQ 'gunzip' THEN BEGIN	                        IF KEYWORD_SET(READONLY) THEN $                    OPENR, UNIT, FILE, /COMPRESS, GET_LUN=glun, ERROR = ERROR, $		           /SWAP_IF_LITTLE ELSE        $                      OPENU, UNIT, FILE, /COMPRESS, GET_LUN=glun, ERROR = ERROR, $		           /SWAP_IF_LITTLE 	ENDIF ELSE IF UCMPRS NE ' ' THEN BEGIN		                IF (!VERSION.OS_FAMILY EQ 'unix') THEN BEGIN                        SPAWN, [UCMPRS,'-c',FILE], UNIT=UNIT, /NOSHELL			UNIXPIPE = 1                ENDIF ELSE BEGIN                        PRINT, 'MRDFITS: Only Unix IDL supports piped spawns'                        PRINT, '         File must be uncompressed manually'                        RETURN, -1                                      ENDELSE                        ENDIF ELSE BEGIN;;  Go to the start of the file.;                IF KEYWORD_SET(READONLY) THEN $                    OPENR, UNIT, FILE, GET_LUN=glun, ERROR = ERROR, $                           /SWAP_IF_LITTLE ELSE                     $                    OPENU, UNIT, FILE, GET_LUN=glun, ERROR = ERROR, $                           /SWAP_IF_LITTLE                 IF ERROR NE 0 THEN BEGIN                        IF PRINTERR THEN PRINT,!ERROR_STATE.MSG ELSE $			    ERRMSG = !ERROR_STATE.MSG                         RETURN,-1                ENDIF        ENDELSE	        IF SIZE(EXT_NO,/TNAME) NE 'STRING' THEN $	      IF EXT_NO LE 0 THEN RETURN, UNIT	STAT = FXMOVE(UNIT, EXT_NO, SILENT = Silent, EXT_NO = extnum, $	ERRMSG=ERRMSG)	IF STAT LT 0 THEN BEGIN            IF(NOT KEYWORD_SET(LUNIT)) THEN FREE_LUN, UNIT	    RETURN, STAT	ENDIF ELSE RETURN, UNITEND

⌨️ 快捷键说明

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