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

📄 fxhmake.pro

📁 basic median filter simulation
💻 PRO
字号:
	PRO FXHMAKE, HEADER, DATA, EXTEND=EXTEND, DATE=DATE,	$		INITIALIZE=INITIALIZE, ERRMSG=ERRMSG, XTENSION=XTENSION;+; NAME: ;	FXHMAKE; Purpose     : ;	Create a basic FITS header array.; Explanation : ;	Creates a basic header array with all the required keywords.  This;	defines a basic structure which can then be added to or modified by;	other routines.; Use         : ;	FXHMAKE, HEADER  [, DATA ]; Inputs      : ;	None required.; Opt. Inputs : ;	DATA	= IDL data array to be written to file.    It must be in the ;                  primary data unit unless the XTENSION keyword is supplied.;		  This array is used to determine the values of the BITPIX and ;                 NAXIS, etc. keywords.;;		  If not passed, then BITPIX is set to eight, NAXIS is set to;		  zero, and no NAXISnnn keywords are included in this;		  preliminary header.; Outputs     : ;	HEADER = String array containing FITS header.; Opt. Outputs: ;	None.; Keywords    : ;	INITIALIZE = If set, then the header is completely initialized, and any;		     previous entries are lost.;	EXTEND	= If set, then the keyword EXTEND is inserted into the file,;		  with the value of "T" (true).;	DATE	= If set, then the DATE keyword is added to the header.;	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 = '';			FXHMAKE, ERRMSG=ERRMSG, ...;			IF ERRMSG NE '' THEN ...;       XTENSION - If set, then the header is appropriate for an image ;                  extension, rather than the primary data unit.; Calls       : ;	GET_DATE, FXADDPAR, FXHCLEAN; Common      : ;	None.; Restrictions: ;	Groups are not currently supported.; Side effects: ;	BITPIX, NAXIS, etc. are defined such that complex arrays are stored as;	floating point, with an extra first dimension of two elements (real and;	imaginary parts).; Category    : ;	Data Handling, I/O, FITS, Generic.; Prev. Hist. : ;	William Thompson, Jan 1992, from SXHMAKE by D. Lindler and M. Greason.;	Differences include:;;		* Use of FITS standard (negative BITPIX) to signal floating;		  point numbers instead of (SDAS/Geis) DATATYPE keyword.;		* Storage of complex numbers as pairs of real numbers.;		* Support for EXTEND keyword, and for cases where there is no;		  primary data array.;		* Insertion of DATE record made optional.  Only required FITS;		  keywords are inserted automatically.; Written     : ;	William Thompson, GSFC, January 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, Wayne Landsman, GSFC, 12 August 1997;		Recognize double complex data type;	Converted to IDL V5.0   W. Landsman   September 1997;       Version 6, William Thompson, GSFC, 22 September 2004;               Recognize unsigned integer types.;       Version 6.1, C. Markwardt, GSFC, 19 Jun 2005;               Add the XTENSION keyword, which writes an XTENSION;               keyword instead of SIMPLE.; Version     :;       Version 6.1, 19 June 2005;-;	ON_ERROR,2;;  Check the number of parameters first.;	IF N_PARAMS() LT 1 THEN BEGIN		MESSAGE = 'Calling sequence:  FXHMAKE, HEADER  [, DATA ]'		IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN			ERRMSG = MESSAGE			RETURN		END ELSE MESSAGE, MESSAGE	ENDIF;;  If no data array was passed, then set BITPIX=8 and NAXIS=0.  Otherwise,;  calculate these parameters.;	IF N_PARAMS() EQ 1 THEN BEGIN		BITPIX = 8		COMMENT = ''		S = 0	END ELSE BEGIN		S = SIZE(DATA)			;obtain size of array.		DTYPE = S[S[0]+1]		;type of data.		CASE DTYPE OF			0:  BEGIN				MESSAGE = 'Data parameter is not defined'				IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN					ERRMSG = MESSAGE					RETURN				END ELSE MESSAGE, MESSAGE				END			1:  BEGIN				BITPIX = 8				COMMENT = 'Integer*1 (byte)'				END			2:  BEGIN				BITPIX = 16				COMMENT = 'Integer*2 (short integer)'				END			3:  BEGIN				BITPIX = 32				COMMENT = 'Integer*4 (long integer)'				END			4:  BEGIN				BITPIX = -32				COMMENT = 'Real*4 (floating point)'				END			5:  BEGIN				BITPIX = -64				COMMENT = 'Real*8 (double precision)'				END			6:  BEGIN		;Complex*8 (complex)				BITPIX = -32			;Store as float				S = [S[0]+1, 2, S[1:*]]		;with extra dim				COMMENT = 'Real*4 (complex, stored as float)'				END			7:  BEGIN				MESSAGE = "Can't write strings to FITS files"				IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN					ERRMSG = MESSAGE					RETURN				END ELSE MESSAGE, MESSAGE				END			8:  BEGIN				MESSAGE = "Can't write structures to FITS files"				IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN					ERRMSG = MESSAGE					RETURN				END ELSE MESSAGE, MESSAGE				END			9:  BEGIN				BITPIX = -64			;Store as double				S = [S[0]+1, 2, S[1:*]]		;with extra dim				COMMENT = 'Real*8 (dcomplex, stored as double)'				END;;  Unsigned data types may require use of BZERO/BSCALE--handled in writer.;			12: BEGIN       ;Unsigned integer				BITPIX = 16				COMMENT = 'Integer*2 (short integer)'				END			13:  BEGIN      ;Unsigned long integer				BITPIX = 32				COMMENT = 'Integer*4 (long integer)'				END                                		ENDCASE	ENDELSE;;  If requested, then initialize the header.;	IF KEYWORD_SET(INITIALIZE) THEN BEGIN		HEADER = STRARR(36)		HEADER[0] = 'END' + STRING(REPLICATE(32B,77));;  Else, if undefined, then initialize the header.;	END ELSE IF N_ELEMENTS(HEADER) EQ 0 THEN BEGIN		HEADER = STRARR(36)		HEADER[0] = 'END' + STRING(REPLICATE(32B,77));;  Otherwise, make sure that HEADER is a string array, and remove any keywords;  that describe the format of the file.;	END ELSE BEGIN		SZ = SIZE(HEADER)		IF (SZ[0] NE 1) OR (SZ[2] NE 7) THEN BEGIN			MESSAGE = 'HEADER must be a (one-dimensional) ' + $				'string array'			IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN				ERRMSG = MESSAGE				RETURN			END ELSE MESSAGE, MESSAGE		ENDIF		IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN			FXHCLEAN,HEADER,ERRMSG=ERRMSG			IF ERRMSG NE '' THEN RETURN		END ELSE FXHCLEAN,HEADER	ENDELSE;;  The first keyword must be "SIMPLE".  Normally, this has the value "T";  (true).;        IF KEYWORD_SET(XTENSION) THEN BEGIN            FXADDPAR,HEADER,'XTENSION','IMAGE','Written by IDL:  '+ SYSTIME()        ENDIF ELSE BEGIN            FXADDPAR,HEADER,'SIMPLE','T','Written by IDL:  '+ SYSTIME()        ENDELSE;;  The second keyword must be "BITPIX", and the third "NAXIS".;	FXADDPAR,HEADER,'BITPIX',BITPIX,COMMENT	FXADDPAR,HEADER,'NAXIS',S[0]	;# of dimensions;;  If NAXIS is not zero, then add the keywords for the axes.  If the data array;  is complex, then add a comment to the first axis to note that this is;  actually the real and imaginary parts of the complex number.;	IF S[0] NE 0 THEN FOR I=1,S[0] DO BEGIN		IF (I EQ 1) AND (DTYPE EQ 6) THEN BEGIN			FXADDPAR,HEADER,'NAXIS1',S[I],	$				'Real and imaginary parts'		END ELSE BEGIN			FXADDPAR,HEADER,'NAXIS'+STRTRIM(I,2),S[I]		ENDELSE	ENDFOR;;  If requested, add the EXTEND keyword to the header, and set it to true.;	IF KEYWORD_SET(EXTEND) THEN	$		FXADDPAR,HEADER,'EXTEND','T','File contains extensions';;  If requested, add the DATE keyword to the header, containing the current;  date.;	IF KEYWORD_SET(DATE) THEN BEGIN	        GET_DATE,DTE                    ;Get current date as CCYY-MM-DD        	FXADDPAR,HEADER,'DATE',DTE	ENDIF;	IF N_ELEMENTS(ERRMSG) NE 0 THEN ERRMSG = ''	RETURN	END

⌨️ 快捷键说明

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