Changeset 13040
- Timestamp:
- Apr 25, 2007, 4:18:42 PM (19 years ago)
- Location:
- trunk/Ohana/src/opihi/cmd.data
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.data/rd.c
r12902 r13040 57 57 return (FALSE); 58 58 } 59 fclose (f);60 59 61 60 /* find matrix, free old data */ … … 71 70 status = FALSE; 72 71 72 /*** advance to the correct FITS extension ***/ 73 74 /* FITS extension by number */ 73 75 if (extend) { 74 76 /* load in appropriate header */ 75 Nskip = gfits_ read_Xheader (argv[2], &buf[0].header, Nextend);77 Nskip = gfits_fread_Xheader (f, &buf[0].header, Nextend); 76 78 if (!Nskip) { 77 79 gprint (GP_ERR, "entry in %s not found\n", argv[2]); … … 79 81 return (FALSE); 80 82 } 81 /* fix up header */82 {83 static char simple[] = "SIMPLE = T / Standard FITS";84 int Ns, No;85 86 Ns = strlen (simple);87 No = 80 - Ns;88 strncpy (buf[0].header.buffer, simple, Ns);89 memset (&buf[0].header.buffer[Ns], ' ', No);90 }91 if (JustHead) {92 /* should be in CreateMatrix / CreateBuffer function */93 buf[0].header.Naxes = 0;94 ALLOCATE (buf[0].matrix.buffer, char, 1);95 buf[0].matrix.size = 0;96 buf[0].bitpix = 16;97 buf[0].bzero = 0;98 buf[0].bscale = 1;99 buf[0].matrix.bitpix = 16;100 buf[0].matrix.bzero = 0;101 buf[0].matrix.bscale = 1;102 buf[0].header.bitpix = 16;103 buf[0].header.bzero = 0;104 buf[0].header.bscale = 1;105 return (TRUE);106 }107 /* load matrix data */108 f = fopen (argv[2], "r");109 if (f == (FILE *) NULL) {110 gprint (GP_ERR, "file %s not found\n", argv[2]);111 DeleteBuffer (buf);112 return (FALSE);113 }114 fseek (f, Nskip, SEEK_SET);115 status = gfits_load_matrix (f, &buf[0].matrix, &buf[0].header);116 fclose (f);117 83 } 118 84 /* FITS extension by name */ 119 85 if (ccdsel) { 120 86 char *CCDKeyword, ID[64]; … … 128 94 done = FALSE; 129 95 for (i = 0; !done; i++) { 130 Nskip = gfits_ read_Xheader (argv[2], &buf[0].header, i);96 Nskip = gfits_fread_Xheader (f, &buf[0].header, i); 131 97 if (!Nskip) { 132 98 gprint (GP_ERR, "extension %s in %s not found\n", ccdid, argv[2]); … … 144 110 /* compare as numbers if both are pure numbers, else as strings */ 145 111 done = strnumcmp (ccdid, ID); 146 147 112 if (!done) gfits_free_header (&buf[0].header); 148 113 } 149 114 free (CCDKeyword); 150 151 /* fix up header */152 {153 static char simple[] = "SIMPLE = T / Standard FITS";154 int Ns, No;155 156 Ns = strlen (simple);157 No = 80 - Ns;158 strncpy (buf[0].header.buffer, simple, Ns);159 memset (&buf[0].header.buffer[Ns], ' ', No);160 }161 if (JustHead) {162 buf[0].header.Naxes = 0;163 ALLOCATE (buf[0].matrix.buffer, char, 1);164 buf[0].matrix.size = 0;165 buf[0].bitpix = 16;166 buf[0].bzero = 0;167 buf[0].bscale = 1;168 buf[0].matrix.bitpix = 16;169 buf[0].matrix.bzero = 0;170 buf[0].matrix.bscale = 1;171 buf[0].header.bitpix = 16;172 buf[0].header.bzero = 0;173 buf[0].header.bscale = 1;174 return (TRUE);175 }176 /* load matrix data */177 f = fopen (argv[2], "r");178 if (f == (FILE *) NULL) {179 gprint (GP_ERR, "file %s not found\n", argv[2]);180 DeleteBuffer (buf);181 return (FALSE);182 }183 fseek (f, Nskip, SEEK_SET);184 status = gfits_load_matrix (f, &buf[0].matrix, &buf[0].header);185 fclose (f);186 115 } 187 116 188 if (!ccdsel && !extend) { 189 status = gfits_read_header (argv[2], &buf[0].header); 190 if (JustHead) { 191 buf[0].header.Naxes = 0; 192 ALLOCATE (buf[0].matrix.buffer, char, 1); 193 buf[0].matrix.size = 0; 194 buf[0].bitpix = 16; 195 buf[0].bzero = 0; 196 buf[0].matrix.bscale = 1; 197 buf[0].matrix.bitpix = 16; 198 buf[0].matrix.bzero = 0; 199 buf[0].matrix.bscale = 1; 200 return (TRUE); 201 } 202 Nplane = buf[0].header.Naxis[2]; 203 if (Nplane > 0) { 204 if (plane > Nplane) { 205 gprint (GP_ERR, "-plane is too large: %d total planes\n", Nplane); 206 DeleteBuffer (buf); 207 return (FALSE); 208 } 209 buf[0].header.Naxis[2] = 0; 210 buf[0].header.Naxes = 2; 211 gfits_modify (&buf[0].header, "NAXIS", "%d", 1, 2); 212 gfits_delete (&buf[0].header, "NAXIS3", 1); 213 } 214 sprintf (region, "-1 -1 -1 -1 %d %d", (plane - 1), plane); 215 status = gfits_read_segment (argv[2], &buf[0].matrix, region); 117 /* fix up header, if needed */ 118 if (extend || ccdsel) { 119 static char simple[] = "SIMPLE = T / Standard FITS"; 120 int Ns, No; 121 122 Ns = strlen (simple); 123 No = 80 - Ns; 124 strncpy (buf[0].header.buffer, simple, Ns); 125 memset (&buf[0].header.buffer[Ns], ' ', No); 216 126 } 127 128 /* for JustHead, we skip reading the data segment */ 129 if (JustHead) { 130 /* should be in CreateMatrix / CreateBuffer function */ 131 buf[0].header.Naxes = 0; 132 ALLOCATE (buf[0].matrix.buffer, char, 1); 133 buf[0].matrix.size = 0; 134 buf[0].bitpix = 16; 135 buf[0].bzero = 0; 136 buf[0].bscale = 1; 137 buf[0].matrix.bitpix = 16; 138 buf[0].matrix.bzero = 0; 139 buf[0].matrix.bscale = 1; 140 buf[0].header.bitpix = 16; 141 buf[0].header.bzero = 0; 142 buf[0].header.bscale = 1; 143 return (TRUE); 144 } 145 146 /* check for valid plane */ 147 Nplane = buf[0].header.Naxis[2]; 148 if (Nplane == 0) Nplane = 1; 149 if (plane > Nplane) { 150 gprint (GP_ERR, "-plane is too large: %d total planes\n", Nplane); 151 DeleteBuffer (buf); 152 return (FALSE); 153 } 154 155 /* load matrix data */ 156 sprintf (region, "-1 -1 -1 -1 %d %d", (plane - 1), plane); 157 status = gfits_fread_matrix_segment (f, &buf[0].matrix, &buf[0].header, region); 158 fclose (f); 217 159 218 160 if (!status) { … … 221 163 return (FALSE); 222 164 } 165 166 /* adjust buffer to represent 2D data */ 167 if (Nplane > 1) { 168 buf[0].header.Naxis[2] = 0; 169 buf[0].header.Naxes = 2; 170 gfits_modify (&buf[0].header, "NAXIS", "%d", 1, 2); 171 gfits_delete (&buf[0].header, "NAXIS3", 1); 172 } 173 174 /* we need to return a 2D array, convert 1D images to 2D (Naxis[1] = 1) */ 223 175 if (buf[0].header.Naxes == 1) { 224 /* we need to return an array, so make Naxis[1] = 1 */225 176 buf[0].header.Naxes = 2; 226 177 buf[0].header.Naxis[1] = 1; … … 239 190 240 191 return (TRUE); 241 242 192 } -
trunk/Ohana/src/opihi/cmd.data/rdseg.c
r12902 r13040 38 38 status = gfits_read_header (argv[2], &buf[0].header); 39 39 sprintf (region, "%d %d %d %d 0 1", x, nx + x, y, ny + y); 40 status = gfits_read_ segment (argv[2], &buf[0].matrix, region);40 status = gfits_read_matrix_segment (argv[2], &buf[0].matrix, region); 41 41 gfits_modify (&buf[0].header, "NAXIS1", "%d", 1, nx); 42 42 gfits_modify (&buf[0].header, "NAXIS2", "%d", 1, ny);
Note:
See TracChangeset
for help on using the changeset viewer.
