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

📄 fxbtform.pro

📁 basic median filter simulation
💻 PRO
字号:
	PRO FXBTFORM,HEADER,TBCOL,IDLTYPE,FORMAT,NUMVAL,MAXVAL,ERRMSG=ERRMSG;+; NAME: ;	FXBTFORM; PURPOSE     : ;	Returns information about FITS binary table columns.; EXPLANATION : ;	Procedure to return information about the format of the various columns;	in a FITS binary table.; Use         : ;	FXBTFORM,HEADER,TBCOL,IDLTYPE,FORMAT,NUMVAL,MAXVAL; Inputs      : ;	HEADER	= Fits binary table header.; Opt. Inputs : ;	None.; Outputs     : ;	TBCOL	= Array of starting column positions in bytes.;	IDLTYPE	= IDL data types of columns.;	FORMAT	= Character code defining the data types of the columns.;	NUMVAL	= Number of elements of the data arrays in the columns.;	MAXVAL	= Maximum number of elements for columns containing variable;		  length arrays, or zero otherwise.; Opt. Outputs: ;	None.; Keywords    : ;	ERRMSG	  = If defined and passed, 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.  In order to;		    use this feature, ERRMSG must be defined first, e.g.;;			ERRMSG = '';			FXBTFORM, ERRMSG=ERRMSG, ...;			IF ERRMSG NE '' THEN ...;; Calls       : ;	FXPAR; Common      : ;	None.; Restrictions: ;	None.; Side effects: ;	None.; Category    : ;	Data Handling, I/O, FITS, Generic.; Prev. Hist. : ;	W. Thompson, Feb. 1992, from TBINFO by D. Lindler.;	W. Thompson, Jan. 1993, renamed to be compatible with DOS limitations.; Written     : ;	William Thompson, GSFC, February 1992.; Modified    : ;	Version 1, William Thompson, GSFC, 12 April 1993.;		Incorporated into CDS library.;	Version 2, William Thompson, GSFC, 21 June 1994;		Added ERRMSG keyword.;       Version 3, William Thompson, GSFC, 23 June 1994;               Modified so that ERRMSG is not touched if not defined.;	Version 4, William Thompson, GSFC, 9 April 1997;		Modified so that variable length arrays can be read, even if;		the maximum array size is not in the header.;	Version 5  Wayne Landsman, GSFC, August 1997;		Recognize double complex array type if since IDL version 4.0;       Version 6;       Optimized FXPAR call, CM 1999 Nov 18; Version     :;       Version 7: Wayne Landsman, GSFC Feb 2006;               Added support for 64bit integer K format;-;	ON_ERROR,2;;  Check the number of parameters.;	IF N_PARAMS() LT 1 THEN BEGIN		MESSAGE = 'Syntax:  FXBTFORM,HEADER,TBCOL,IDLTYPE,FORMAT,' + $			'NUMVAL,MAXVAL'		IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN			ERRMSG = MESSAGE			RETURN		END ELSE MESSAGE, MESSAGE	ENDIF;;  Get the number of fields.;	TFIELDS = FXPAR(HEADER,'TFIELDS', START=0L)	IF !ERR LT 0 THEN BEGIN		MESSAGE = 'Invalid FITS header -- keyword TFIELDS is missing'		IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN			ERRMSG = MESSAGE			RETURN		END ELSE MESSAGE, MESSAGE	END ELSE IF TFIELDS EQ 0 THEN BEGIN		MESSAGE = 'FIT binary table has no columns'		IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN			ERRMSG = MESSAGE			RETURN		END ELSE MESSAGE, MESSAGE	ENDIF;;  Initialize the arrays.;	WIDTH	= INTARR(TFIELDS)	IDLTYPE	= INTARR(TFIELDS)	TBCOL	= LONARR(TFIELDS)	FORMAT	= STRARR(TFIELDS)	NUMVAL	= LONARR(TFIELDS)	MAXVAL	= LONARR(TFIELDS);;  Get the column formats.;	TFORM = FXPAR(HEADER,'TFORM*')	IF !ERR LT 0 THEN BEGIN		MESSAGE = 'Invalid FITS table header -- keyword TFORM ' + $			'not present'		IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN			ERRMSG = MESSAGE			RETURN		END ELSE MESSAGE, MESSAGE	ENDIF	TFORM =  STRUPCASE(STRTRIM(TFORM,2));;  Parse the values of the TFORM keywords.;	LEN = STRLEN(TFORM)	FOR I = 0,N_ELEMENTS(TFORM)-1 DO BEGIN;;  Step through each character in the format, until a non-numerical character;  is encountered.;		ICHAR = 0NEXT_CHAR:		IF ICHAR GE LEN[I] THEN BEGIN			MESSAGE = 'Invalid format specification for ' +	$				'keyword TFORM ' + STRTRIM(I+1)			IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN				ERRMSG = MESSAGE				RETURN			END ELSE MESSAGE, MESSAGE		ENDIF		CHAR = STRUPCASE(STRMID(TFORM[I],ICHAR,1))		IF ((CHAR GE '0') AND (CHAR LE '9')) THEN BEGIN			ICHAR = ICHAR + 1			GOTO, NEXT_CHAR		ENDIF;;  Get the number of elements.;		IF ICHAR EQ 0 THEN NUMVAL[I] = 1 ELSE	$			NUMVAL[I] = LONG(STRMID(TFORM[I],0,ICHAR));;  If the character is "P" then the next character is the actual data type,;  followed by the maximum number of elements surrounded by quotes.;		IF CHAR EQ "P" THEN BEGIN			CHAR = STRUPCASE(STRMID(TFORM[I],ICHAR+1,1))			MAXVAL[I] = LONG(STRMID(TFORM[I],ICHAR+3,	$				LEN[I]-ICHAR-4))			IF MAXVAL[I] EQ 0 THEN MAXVAL[I] = 1		ENDIF;;  Get the IDL data type, and the size of an element.;		FORMAT[I] = CHAR		CASE CHAR OF			'L':  BEGIN & IDLTYPE[I] = 1 & WIDTH[I] = 1 & END			'A':  BEGIN & IDLTYPE[I] = 7 & WIDTH[I] = 1 & END			'B':  BEGIN & IDLTYPE[I] = 1 & WIDTH[I] = 1 & END			'I':  BEGIN & IDLTYPE[I] = 2 & WIDTH[I] = 2 & END			'J':  BEGIN & IDLTYPE[I] = 3 & WIDTH[I] = 4 & END			'E':  BEGIN & IDLTYPE[I] = 4 & WIDTH[I] = 4 & END			'D':  BEGIN & IDLTYPE[I] = 5 & WIDTH[I] = 8 & END			'C':  BEGIN & IDLTYPE[I] = 6 & WIDTH[I] = 8 & END			'M':  BEGIN & IDLTYPE[I] = 9 & WIDTH[I] =16 & END 			'K':  BEGIN & IDLTYPE[I] =14 & WIDTH[I] = 8 & END ;;;  Treat bit arrays as byte arrays with 1/8 the number of elements.;			'X':  BEGIN				IDLTYPE[I] = 1				WIDTH[I] = 1				IF MAXVAL[I] GT 0 THEN BEGIN					MAXVAL[I] = LONG((MAXVAL[I]+7)/8)				END ELSE BEGIN					NUMVAL[I] = LONG((NUMVAL[I]+7)/8)				ENDELSE				END			ELSE:  BEGIN				MESSAGE = 'Invalid format specification ' + $					'for keyword TFORM' + STRTRIM(I+1,2)				IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN					ERRMSG = MESSAGE					RETURN				END ELSE MESSAGE, MESSAGE				END		ENDCASE;;  Variable length array pointers always take up eight bytes.;		IF MAXVAL[I] GT 0 THEN WIDTH[I] = 8;;  Calculate the starting byte for each column.;		IF I GE 1 THEN TBCOL[I] = TBCOL[I-1] + WIDTH[I-1]*NUMVAL[I-1]	ENDFOR;        IF N_ELEMENTS(ERRMSG) NE 0 THEN ERRMSG = ''	RETURN	END

⌨️ 快捷键说明

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