📄 sxmake.pro
字号:
Pro sxmake, unit, File, Data, Par, Groups, Header, PSIZE = psize;+; NAME:; SXMAKE; PURPOSE:; Create a basic ST header file from an IDL array prior to writing data.;; CALLING SEQUENCE:; sxmake, Unit, File, Data, Par, Groups, Header, [ PSIZE = ];; INPUTS:; Unit = Logical unit number from 1 to 9.; File = file name of data and header files to create. If no file name; extension is supplied then the default is to use .hhh for the; header file extension and .hhd for the data file extension ; If an extension is supplied, it should be of the form .xxh; where xx are any alphanumeric characters.; Data = IDL data array of the same type, dimensions and; size as are to be written to file.; Par = # of elements in each parameter block for each data record. If ; set equal to 0, then parameter blocks will not be written. The ; data type of the parameter blocks must be the same as the data ; array. To get around this restriction, use the PSIZE keyword.; Groups = # of groups to write. If 0 then write in basic; format without groups. ;; OPTIONAL INPUT PARAMETERS:; Header = String array containing ST header file. If this; parameter is omitted, a basic header is constructed.; If included, the basic parameters are added to the; header using sxaddpar. The END keyword must terminate; the parameters in Header.;; OPTIONAL KEYWORD INPUT PARAMETER:; PSIZE - Integer scalar giving the number of bits in the parameter ; block. If the PSIZE keyword is given, then the Par input; parameter is ignored.; ; OPTIONAL OUTPUT PARAMETERS:; Header = ST header array, an 80 by N character array.;; COMMON BLOCKS:; Stcommn - as used in sxwrite, sxopen, etc.;; SIDE EFFECTS:; The header file is created and written and then the; data file is opened on the designated unit.;; RESTRICTIONS:; Header files must be named .xxh and data files must be; named .xxd, where xx are any alphanumeric characters.;; PROCEDURE:; Call sxmake to create a header file. Then call sxwrite; to output each group.; ; PROCEDURES USED:; GET_DATE, SXADDPAR, SXOPEN; MODIFICATION HISTORY:; DMS, July, 1983.; converted to new VMS IDL April 90; Use SYSTIME() instead of !STIME W. Landsman Aug 1997; Converted to IDL V5.0 W. Landsman September 1997; Added optional PSIZE keyword August 1999 W. Landsman ; Recognize unsigned datatype January 2000 W. Landsman ;- common stcommn, result, filename; if N_params() LT 2 then begin print,'Syntax - SXMAKE,unit,file,data,par,groups,header, [PSIZE = ]' return endif; if N_elements(result) ne 200 then begin result = lonarr(20,10) ;define common blks filename = strarr(10) endif; if (unit lt 1) or (unit gt 9) then $ ;unit ok? message,'Unit number must be from 1 to 9.'; close,unit result[unit,*]=0; if N_elements(par) EQ 0 then par = 0 if N_elements(groups) EQ 0 then groups = 0; s = size(data) ;obtain size of array. stype = s[s[0]+1] ;type of data. if (par eq 0) and (groups eq 0) and (stype LT 6) then $ sxaddpar,header,'simple','T','Written by IDL: '+ systime() $ else $ sxaddpar,header,'simple','F','Written by IDL: '+ systime() case stype of0: message,'Data parameter is not defined'7: message,"Can't write strings to ST files"1: begin& bitpix= 8 & d = 'INTEGER*1' & endcase2: begin& bitpix= 16 & d = 'INTEGER*2' & endcase4: begin& bitpix= 32 & d = 'REAL*4' & endcase3: begin& bitpix= 32 & d = 'INTEGER*4' & endcase5: begin& bitpix= 64 & d = 'REAL*8' & endcase6: begin& bitpix= 64 & d = 'COMPLEX*8' & endcase12: begin & bitpix=16 & d='UNSIGNED*2' & endcase13: begin & bitpix=32 & d='UNSIGNED*4' & endcaseelse: message,'ERROR -- Unrecognized input data type' endcase; sxaddpar,header,'BITPIX',bitpix sxaddpar,header,'NAXIS',S[0] ;# of dimensions for i=1,s[0] do sxaddpar,header,'NAXIS'+strtrim(i,2),s[i] sxaddpar,header,'DATATYPE',d,'Type of data' Get_date,dte sxaddpar,header,'DATE',dte; if groups eq 0 then $ ;true if not group fmt. sxaddpar,header,'GROUPS','F','No groups' $ else begin ;make group params. sxaddpar,header,'GROUPS','T' sxaddpar,header,'PCOUNT',par sxaddpar,header,'GCOUNT',groups if N_elements(psize) EQ 0 then psize = bitpix*par sxaddpar,header,'PSIZE',psize,'# of bits in parm blk' endelse; sxopen,unit,file,header,hist,'W' ;make header file, etc. returnend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -