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

📄 tab_addcol.pro

📁 basic median filter simulation
💻 PRO
字号:
pro tab_addcol,name,data,tcb,tab;+; NAME:;	TAB_ADDCOL   ; PURPOSE:;	Procedure to add a new column to an existing STSDAS table.;; CALLING SEQUENCE:;	tab_addcol, name, data, tcb, tab;; INPUTS:;	name - column name;	data - sample data of type to be written to the column.;		This parameter is only used to determine data type.;; INPUT/OUTPUTS:;	tcb - table control block;	tab - table array;; HISTORY:;	version 1  D. Lindler April 89;	Converted to IDL V5.0   W. Landsman   September 1997;-;------------------------------------------------------------------------;; If column alread exists, do not add it;	tab_col,tcb,name	if !err gt 0 then return;; determine data type and change to stsdas table code;	s=size(data) & dtype=s[s[0]+1] & ndim=s[0]	case dtype of		0: type=6		;undefined, assume real*4		7: type=2		;string		1: type=1		;byte (assume boolean)		2: type=4		;integer		4: type=6		;real*4		3: type=4		;integer		5: type=7		;double precision		6: begin			print,'TAB_ADDCOL-- complex data type not supported'			retall		    end	endcase;; determine field width;	case type of		2: begin		;string			width=max(strlen(data))			width=(width+3)/4*2 ;change to multiple of 4 bytes		   end		7: width=4		;double precision		else: width=2		;integer, real, or boolean	endcase;; get current table size;	nrows=tcb[3]	ncols=tcb[5]	rowlen=tcb[7]	maxrows=tcb[4]>nrows	maxcols=tcb[5]	maxrowlen=tcb[8]>rowlen;; updated table size;	new_nrows=nrows>n_elements(data)	new_ncols=ncols+1	new_rowlen=rowlen+width;; do we need to expand the table;	if (new_nrows gt maxrows) or (new_ncols gt maxcols) or $	   (new_rowlen gt maxrowlen) then $		tab_expand,tcb,tab,new_ncols,new_nrows,new_rowlen;; construct default print format;	case type of		1: form='8b'				;boolean		2: form=''+strtrim(width*2,2)+'s'	;string		4: form='11d'				;integer		6: form='16.8g'			;real*4		7: form='20.12g'			;real*8	endcase;; insert column information into tcb;	newcol=bytarr(48)	newcol[0]=byte(name)	newcol[40]=byte(form)	tcb[0,new_ncols]=[long(new_ncols),rowlen,width,type,long(newcol,0,12)]	tcb[5]=new_ncols	tcb[7]=new_rowlen;; fill new column with nulls;	if nrows gt 0 then begin		case type of			1: null=0L			2: null=string(0b)			4: null='80000000'XL			6: null=1.6e38			7: null=1.6d38		endcase		if type eq 2 then nulls=bytarr(width*2,nrows)+null $			     else nulls=replicate(null,nrows)		nulls=byte(nulls,0,width*2,nrows)		tab[rowlen*2,0]=nulls	endifreturnend

⌨️ 快捷键说明

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