Changeset 18243 for trunk/pstamp/src/pstamprequest.c
- Timestamp:
- Jun 20, 2008, 10:27:20 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/pstamp/src/pstamprequest.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/pstamp/src/pstamprequest.c
r17894 r18243 13 13 } psrOptions; 14 14 15 char *str_columns[] = { 16 "PROJECT", 17 "JOB_TYPE", 18 "REQ_TYPE", // byid, byexp, bycoord 19 "ID", // db id, exposure name, n/a 20 "CLASS_ID", 21 "CENTER_X", 22 "CENTER_Y", 23 "WIDTH", 24 "HEIGHT", 25 "FILTER", 26 "DATE_MIN", 27 "DATE_MAX", 28 "STAMP_NAME", 29 NULL 30 }; 31 char *u32_columns[] = { 32 "COORD_MASK", 33 "OPTION_MASK", // bitmask or of PSTAMP_SELECT_IMAGE PSTAMP_SELECT_MASK PSTAMP_SELECT_WEIGHT 34 NULL 35 }; 36 15 37 static void usage() 16 38 { … … 19 41 } 20 42 43 static psMetadata *initializeTable() 44 { 45 psMetadata *md = psMetadataAlloc(); 46 47 for (char **col_name = str_columns; *col_name != NULL; col_name++) { 48 psMetadataAddStr(md, PS_LIST_TAIL, *col_name, PS_META_DEFAULT, "", "null"); 49 } 50 for (char **col_name = u32_columns; *col_name != NULL; col_name++) { 51 psMetadataAddU32(md, PS_LIST_TAIL, *col_name, PS_META_DEFAULT, "", 0); 52 } 53 return md; 54 } 21 55 static void getId(char *idString, int argnum, int *pArgc, char *argv[], psrOptions *options) 22 56 { … … 25 59 usage(); 26 60 } 27 psMetadataAdd (options->md, PS_LIST_TAIL, idString, PS_DATA_STRING, "", argv[argnum]); 61 // catch common error 62 if (*argv[argnum] == '-') { 63 fprintf(stderr, "%s is not a valid %s\n", argv[argnum], idString); 64 usage(); 65 } 66 67 psMetadataAddStr (options->md, PS_LIST_TAIL, idString, PS_META_REPLACE, "", argv[argnum]); 28 68 psArgumentRemove(argnum, pArgc, argv); 29 69 } … … 56 96 usage(); 57 97 } 58 psMetadataAdd (options->md, PS_LIST_TAIL, "IMG_TYPE", PS_DATA_STRING, "", type);98 psMetadataAddStr (options->md, PS_LIST_TAIL, "IMG_TYPE", PS_META_REPLACE, "", type); 59 99 60 100 getId(paramName, argnum, pArgc, argv, options); … … 104 144 { 105 145 psrOptions *options = psAlloc(sizeof(psrOptions)); 106 psMetadata *md = psMetadataAlloc();146 psMetadata *md = initializeTable(); 107 147 int argnum; 108 148 bool gotStyle = false; … … 112 152 bool needROI = false; 113 153 bool makeStamps= false; 154 unsigned optionMask = PSTAMP_SELECT_IMAGE; 114 155 115 156 options->md = md; 116 157 117 // Job type. This is normally "stamp" for postage stamp. 118 // "get_image" requests that whole images to be retrieved (in PS case magic masked) 158 // Job type. 159 // "stamp" for make postage stamps. 160 // "get_image" requests that whole images to be retrieved (magic masked for gpc1) 119 161 // "list_uri" results in a list of matching images 120 162 if ((argnum = psArgumentGet(argc, argv, "-get_image"))) { 121 psMetadataAdd (md, PS_LIST_TAIL, "REQ_TYPE", PS_DATA_STRING, "", "get_image");163 psMetadataAddStr (md, PS_LIST_TAIL, "JOB_TYPE", PS_META_REPLACE, "", "get_image"); 122 164 psArgumentRemove(argnum, &argc, argv); 123 165 } else if ((argnum = psArgumentGet(argc, argv, "-list_uri"))) { 124 psMetadataAdd (md, PS_LIST_TAIL, "REQ_TYPE", PS_DATA_STRING, "", "get_image"); 125 psArgumentRemove(argnum, &argc, argv); 126 } else { 127 psMetadataAdd (md, PS_LIST_TAIL, "REQ_TYPE", PS_DATA_STRING, "", "stamp"); 166 psMetadataAddStr (md, PS_LIST_TAIL, "JOB_TYPE", PS_META_REPLACE, "", "list_uri"); 167 psArgumentRemove(argnum, &argc, argv); 168 } else { 169 // default JOB_TYPE is stamp 170 psMetadataAddStr (md, PS_LIST_TAIL, "JOB_TYPE", PS_META_REPLACE, "", "stamp"); 128 171 needROI = true; 129 172 makeStamps = true; 130 173 } 131 174 132 if ((argnum = psArgumentGet(argc, argv, "- name"))) {175 if ((argnum = psArgumentGet(argc, argv, "-request_name"))) { 133 176 psArgumentRemove(argnum, &argc, argv); 134 177 if (argc < 2) { 135 psError(PS_ERR_BAD_PARAMETER_VALUE, true, " no request name specified");178 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "value required for request name"); 136 179 usage(); 137 180 } … … 146 189 psArgumentRemove(argnum, &argc, argv); 147 190 if (argc < 2) { 148 psError(PS_ERR_BAD_PARAMETER_VALUE, true, " no project name specified");191 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "value required for project name"); 149 192 usage(); 150 193 } 151 psMetadataAdd (md, PS_LIST_TAIL, "PROJECT", PS_DATA_STRING, "", argv[argnum]);194 psMetadataAddStr(md, PS_LIST_TAIL, "PROJECT", PS_META_REPLACE, "", argv[argnum]); 152 195 psArgumentRemove(argnum, &argc, argv); 153 196 } else { … … 157 200 158 201 // user tag will be used as the base name for the postage stamp images 159 if ((argnum = psArgumentGet(argc, argv, "- user_tag"))) {202 if ((argnum = psArgumentGet(argc, argv, "-stamp_name"))) { 160 203 psArgumentRemove(argnum, &argc, argv); 161 204 if (argc < 2) { 162 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "missing value for user_tag");205 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "missing value for stamp_name"); 163 206 usage(); 164 207 } 165 psMetadataAdd(md, PS_LIST_TAIL, "USER_TAG", PS_DATA_STRING, "", argv[argnum]); 166 psArgumentRemove(argnum, &argc, argv); 167 } else { 168 // default user tag to requestName 169 psMetadataAdd(md, PS_LIST_TAIL, "USER_TAG", PS_DATA_STRING, "", options->requestName); 170 } 208 psMetadataAddStr(md, PS_LIST_TAIL, "STAMP_NAME", PS_META_REPLACE, "", argv[argnum]); 209 psArgumentRemove(argnum, &argc, argv); 210 } else { 211 // if stamp name not specified use requestName 212 psMetadataAddStr(md, PS_LIST_TAIL, "STAMP_NAME", PS_META_REPLACE, "", options->requestName); 213 } 214 215 if ((argnum = psArgumentGet(argc, argv, "-mask"))) { 216 psArgumentRemove(argnum, &argc, argv); 217 optionMask |= PSTAMP_SELECT_MASK; 218 } 219 if ((argnum = psArgumentGet(argc, argv, "-weight"))) { 220 psArgumentRemove(argnum, &argc, argv); 221 optionMask |= PSTAMP_SELECT_WEIGHT; 222 } 223 psMetadataAddU32(md, PS_LIST_TAIL, "OPTION_MASK", PS_META_REPLACE, "", optionMask); 171 224 172 225 // find style & image type 173 226 if ((argnum = psArgumentGet(argc, argv, "-bycoord"))) { 227 fprintf(stderr, "-bycoord not implemented yet\n"); 228 exit(1); 229 174 230 gotStyle = true; 175 psMetadataAdd (md, PS_LIST_TAIL, "REQ_TYPE", PS_DATA_STRING, "", 1+argv[argnum]);176 psArgumentRemove(argnum, &argc, argv); 177 needCoord = true;231 psMetadataAddStr(md, PS_LIST_TAIL, "REQ_TYPE", PS_META_REPLACE, "", 1+argv[argnum]); 232 233 psArgumentRemove(argnum, &argc, argv); needCoord = true; 178 234 needROI = true; 179 235 // TODO: we need an IMG_TYPE too... … … 186 242 } 187 243 gotStyle = true; 188 psMetadataAdd (md, PS_LIST_TAIL, "REQ_TYPE", PS_DATA_STRING, "", 1+argv[argnum]);244 psMetadataAddStr(md, PS_LIST_TAIL, "REQ_TYPE", PS_META_REPLACE, "", 1+argv[argnum]); 189 245 psArgumentRemove(argnum, &argc, argv); 190 246 doById(argnum, &argc, argv, options); … … 197 253 } 198 254 gotStyle = true; 199 psMetadataAdd (md, PS_LIST_TAIL, "REQ_TYPE", PS_DATA_STRING, "", 1+argv[argnum]);255 psMetadataAddStr(md, PS_LIST_TAIL, "REQ_TYPE", PS_META_REPLACE, "", 1+argv[argnum]); 200 256 psArgumentRemove(argnum, &argc, argv); 201 257 doByExp(argnum, &argc, argv, options); … … 213 269 if (needROI) { 214 270 usage(); 271 } else { 272 psErrorClear(); 215 273 } 216 274 } 217 275 218 276 if (needROI) { 219 if (roiParam.celestialCenter) { 220 psMetadataAdd (md, PS_LIST_TAIL, "RA", PS_DATA_STRING, "", roiParam.center[0]); 221 psMetadataAdd (md, PS_LIST_TAIL, "DEC", PS_DATA_STRING, "", roiParam.center[1]); 222 } else { 277 unsigned coord_mask = 0; 278 279 if (!roiParam.celestialCenter) { 223 280 if (needCoord) { 224 281 fprintf(stderr, "need to specify ROI in sky coordinates with -bycoord\n"); 225 282 usage(); 226 283 } 227 psMetadataAdd (md, PS_LIST_TAIL, "CENTER_X", PS_DATA_STRING, "", roiParam.center[0]); 228 psMetadataAdd (md, PS_LIST_TAIL, "CENTER_Y", PS_DATA_STRING, "", roiParam.center[1]); 229 } 230 if (roiParam.celestialRange) { 231 psMetadataAdd (md, PS_LIST_TAIL, "D_RA", PS_DATA_STRING, "", roiParam.range[0]); 232 psMetadataAdd (md, PS_LIST_TAIL, "D_DEC", PS_DATA_STRING, "", roiParam.range[1]); 233 } else { 234 psMetadataAdd (md, PS_LIST_TAIL, "WIDTH", PS_DATA_STRING, "", roiParam.range[0]); 235 psMetadataAdd (md, PS_LIST_TAIL, "HEIGHT", PS_DATA_STRING, "", roiParam.range[1]); 236 } 284 coord_mask |= PSTAMP_CENTER_IN_PIXELS; 285 } 286 psMetadataAddStr (md, PS_LIST_TAIL, "CENTER_X", PS_META_REPLACE, "", roiParam.center[0]); 287 psMetadataAddStr (md, PS_LIST_TAIL, "CENTER_Y", PS_META_REPLACE, "", roiParam.center[1]); 288 289 if (!roiParam.celestialRange) { 290 coord_mask |= PSTAMP_RANGE_IN_PIXELS; 291 } 292 psMetadataAddStr (md, PS_LIST_TAIL, "WIDTH", PS_META_REPLACE, "", roiParam.range[0]); 293 psMetadataAddStr (md, PS_LIST_TAIL, "HEIGHT", PS_META_REPLACE, "", roiParam.range[1]); 294 295 psMetadataAddU32(md, PS_LIST_TAIL, "COORD_MASK", PS_META_REPLACE, "", coord_mask); 237 296 } 238 297 … … 266 325 psMetadata *header = psMetadataAlloc(); 267 326 268 psMetadataAdd (header, PS_LIST_TAIL, "REQ_NAME", PS_DATA_STRING, "", options->requestName);269 psMetadataAdd (header, PS_LIST_TAIL, "EXTVER", PS_DATA_STRING, "", STAMP_REQUEST_VERSION);327 psMetadataAddStr(header, PS_LIST_TAIL, "EXTVER", PS_META_REPLACE, "", STAMP_REQUEST_VERSION); 328 psMetadataAddStr(header, PS_LIST_TAIL, "REQ_NAME", PS_META_REPLACE, "", options->requestName); 270 329 271 330 psArray *table = psArrayAlloc(1); … … 285 344 } 286 345 287 bool sampleTable(const char *fileName)288 {289 psFits *fitsFile = psFitsOpen(fileName, "w");290 int numRows = 42;291 292 if (fitsFile == NULL) {293 psError(PS_ERR_IO, true, "failed to open %s for output\n", fileName);294 return false;295 }296 297 psArray *table = psArrayAlloc(numRows);298 299 for (int i=0; i< numRows; i++) {300 psMetadata *row = psMetadataAlloc();301 psMetadataAdd (row, PS_LIST_TAIL, "ROW", PS_DATA_S32, "", i);302 psMetadataAdd (row, PS_LIST_TAIL, "FROW", PS_TYPE_F32, "", 0.1*i);303 psMetadataAdd (row, PS_LIST_TAIL, "DUMMY", PS_DATA_STRING, "", "test line");304 305 table->data[i] = row;306 307 }308 309 psFitsWriteTable(fitsFile, NULL, table, "BILLSEXT");310 311 psFitsClose(fitsFile);312 313 return true;314 }315 316 346 int main(int argc, char *argv[]) 317 347 {
Note:
See TracChangeset
for help on using the changeset viewer.
