Changeset 35248
- Timestamp:
- Mar 6, 2013, 3:56:15 PM (13 years ago)
- Location:
- branches/eam_branches/ipp-20130306/Ohana/src/libdvo
- Files:
-
- 2 added
- 6 edited
-
Makefile (modified) (1 diff)
-
doc/image-searches.txt (added)
-
include/dvodb.h (modified) (3 diffs)
-
src/ImageMetadata.c (modified) (7 diffs)
-
src/ImageMetadataSelection.c (added)
-
src/ImageSelection.c (modified) (1 diff)
-
src/dbExtractMeasures.c (modified) (6 diffs)
-
src/dvosorts.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20130306/Ohana/src/libdvo/Makefile
r34260 r35248 98 98 $(SRC)/LoadImages.$(ARCH).o \ 99 99 $(SRC)/ImageSelection.$(ARCH).o \ 100 $(SRC)/ImageMetadataSelection.$(ARCH).o \ 101 $(SRC)/ImageMetadata.$(ARCH).o \ 100 102 $(SRC)/ImageOps.$(ARCH).o \ 101 103 $(SRC)/match_image.$(ARCH).o \ -
branches/eam_branches/ipp-20130306/Ohana/src/libdvo/include/dvodb.h
r35237 r35248 298 298 } dbValue; 299 299 300 typedef struct { 301 double crval1; 302 double crval2; 303 unsigned int imageID; 304 unsigned int externID; 305 unsigned int expname; 306 float Mcal; 307 float secz; 308 float Xcenter; 309 float Ycenter; 310 } ImageMetadata; 311 300 312 Image *LoadImagesDVO PROTO((off_t *Nimage)); 301 313 void FreeImagesDVO PROTO((Image *images)); … … 346 358 int dbExtractMeasuresInitAve (void); 347 359 int dbExtractMeasuresInitMeas (void); 348 int dbExtractMeasuresInit ( void);360 int dbExtractMeasuresInit (int isRemoteClient); 349 361 350 362 int dbExtractAveragesInitTransform (CoordTransformSystem target); … … 363 375 #include "get_graphdata.h" 364 376 377 ImageMetadata *ImageMetadataLoad(char *filename, off_t *nimage); 378 int ImageMetadataSave(char *filename, Image *image, off_t Nimage); 379 380 int SetImageMetadataSelection (char *filename); 381 void FreeImageMetadataSelection (); 382 ImageMetadata *MatchImageMetadataDVO (unsigned int imageID); 383 Coords *MatchMosaicMetadata (unsigned int imageID); 384 off_t match_image_by_ID (ImageMetadata *image, off_t Nimage, unsigned int ID); 385 void sort_image_metadata (ImageMetadata *image, off_t Nimage); 386 365 387 # endif -
branches/eam_branches/ipp-20130306/Ohana/src/libdvo/src/ImageMetadata.c
r35245 r35248 1 # include "dvoshell.h" 1 # include "dvo.h" 2 # define VERBOSE 1 2 3 3 4 # define GET_COLUMN(OUT,NAME,TYPE) \ … … 6 7 7 8 // this is nearly identical to the one in 'uniphot' and 'relphot' 8 Image Subset *ImageSubsetLoad(char *filename, off_t *nimage) {9 ImageMetadata *ImageMetadataLoad(char *filename, off_t *nimage) { 9 10 10 11 int i, Ncol; … … 16 17 17 18 *nimage = 0; 18 Image Subset*image = NULL;19 ImageMetadata *image = NULL; 19 20 20 21 FILE *f = fopen (filename, "r"); … … 57 58 char type[16]; 58 59 59 GET_COLUMN (Mcal, "MCAL", float); 60 GET_COLUMN (dMcal, "MCAL_ERR", float); 61 GET_COLUMN (imageID, "IMAGE_ID", int); 62 GET_COLUMN (map, "PHOTOM_MAP", int); 63 GET_COLUMN (flags, "FLAGS", int); 64 GET_COLUMN (tzero, "TZERO", int); 65 GET_COLUMN (trate, "TRATE", short); 66 GET_COLUMN (ucdist, "UBERCAL_DIST", short); 67 68 // XXX free the fits table data here 69 70 ALLOCATE (image, ImageSubset, Nrow); 60 GET_COLUMN (imageID, "IMAGE_ID", int); 61 GET_COLUMN (externID, "EXTERN_ID", int); 62 GET_COLUMN (expname, "EXPNAME_AS_INT", int); 63 GET_COLUMN (crval1, "CRVAL1", double); 64 GET_COLUMN (crval2, "CRVAL2", double); 65 GET_COLUMN (Mcal, "MCAL", float); 66 GET_COLUMN (secz, "SECZ", float); 67 GET_COLUMN (Xcenter, "X_CENTER", float); 68 GET_COLUMN (Ycenter, "Y_CENTER", float); 69 70 ALLOCATE (image, ImageMetadata, Nrow); 71 71 for (i = 0; i < Nrow; i++) { 72 image[i].Mcal = Mcal[i]; 73 image[i].dMcal = dMcal[i]; 74 image[i].imageID = imageID[i]; 75 image[i].photom_map_id = map[i]; 76 image[i].flags = flags[i]; 77 image[i].tzero = tzero[i]; 78 image[i].trate = trate[i]; 79 image[i].ubercalDist = ucdist[i]; 72 image[i].imageID = imageID[i] ; 73 image[i].externID = externID[i]; 74 image[i].expname = expname[i] ; 75 image[i].crval1 = crval1[i] ; 76 image[i].crval2 = crval2[i] ; 77 image[i].Mcal = Mcal[i] ; 78 image[i].secz = secz[i] ; 79 image[i].Xcenter = Xcenter[i] ; 80 image[i].Ycenter = Ycenter[i] ; 80 81 } 81 82 fprintf (stderr, "loaded data for %lld images\n", (long long) Nrow); 82 83 84 free (imageID); 85 free (externID); 86 free (expname); 87 free (crval1); 88 free (crval2); 83 89 free (Mcal); 84 free (dMcal); 85 free (imageID); 86 free (map); 87 free (flags); 88 free (tzero); 89 free (trate); 90 free (ucdist); 90 free (secz); 91 free (Xcenter); 92 free (Ycenter); 91 93 92 94 *nimage = Nrow; … … 132 134 unsigned int *imageID, *externID, *expname; 133 135 double *crval1, *crval2; 134 float *Mcal, * dMcal, *Xcenter, *Ycenter;136 float *Mcal, *Xcenter, *Ycenter, *secz; 135 137 136 138 // create intermediate storage arrays … … 149 151 imageID[i] = image[i].imageID; 150 152 externID[i] = image[i].externID; 151 crval1[i] = image[i].c rval1;152 crval2[i] = image[i].c rval2;153 crval1[i] = image[i].coords.crval1; 154 crval2[i] = image[i].coords.crval2; 153 155 Mcal[i] = image[i].Mcal; 154 156 secz[i] = image[i].secz; … … 158 160 expname[i] = 0; 159 161 if ((image[i].name[0] == 'o') && (image[i].name[5] == 'g') && (image[i].name[10] == 'o')) { 160 int mjd = atoi( image[i].name[1]);161 int Nexp = atoi( image[i].name[6]);162 int mjd = atoi(&image[i].name[1]); 163 int Nexp = atoi(&image[i].name[6]); 162 164 expname[i] = mjd * 10000 + Nexp; 163 165 } -
branches/eam_branches/ipp-20130306/Ohana/src/libdvo/src/ImageSelection.c
r31635 r35248 66 66 } 67 67 68 Image *MatchImageDVO_old (unsigned int time, short int source, unsigned int imageID) { 69 70 int m = -1; 71 72 if ((imageID != 0) && (imageID < Nimage)) { 73 // imageID is in range for the array of images. If the table is still in order and 74 // no images have been deleted the index of the image we are looking for will be imageID - 1 75 // If this is the case, we have it. Otherwise we'll have to go search for it below 76 int guess = (int) imageID - 1; 77 if (image[guess].imageID == imageID) { 78 m = guess; 79 } 80 } 81 if (m == -1) { 82 m = match_image_subset (image, subset, Nsubset, time, source); 83 } 84 if (m == -1) return (NULL); 85 if (!FindMosaicForImage (image, Nimage, m)) return (NULL); 86 return (&image[m]); 87 } 88 68 89 Coords *MatchMosaic (unsigned int time, short int source) { 69 90 -
branches/eam_branches/ipp-20130306/Ohana/src/libdvo/src/dbExtractMeasures.c
r35245 r35248 14 14 static CoordTransform *celestial_to_ecliptic = NULL; 15 15 16 static int REMOTE_CLIENT = FALSE; 17 16 18 static int haveGalacticAve = FALSE; 17 19 static double GLON_AVE = 0.0; … … 30 32 static double ELAT_MEAS = 0.0; 31 33 32 int dbExtractMeasuresInit () { 34 int dbExtractMeasuresInit (int isRemoteClient) { 35 REMOTE_CLIENT = isRemoteClient; 33 36 GetTimeFormat (&TimeReference, &TimeFormat); 34 37 return (TRUE); … … 335 338 break; 336 339 case MEAS_MEAN_AIRMASS: /* OK */ 337 { 338 if (CLIENT) { 339 ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID); 340 if (image == NULL) break; 341 value.Flt = image[0].secz; 342 } else { 343 Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 344 if (image == NULL) break; 345 value.Flt = image[0].secz; 346 } 347 break; 348 } 340 if (REMOTE_CLIENT) { 341 ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID); 342 if (image == NULL) break; 343 value.Flt = image[0].secz; 344 } else { 345 Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 346 if (image == NULL) break; 347 value.Flt = image[0].secz; 348 } 349 break; 349 350 case MEAS_AZ: /* OK */ 350 351 value.Flt = measure[0].az; … … 467 468 ra = average[0].R - measure[0].dR / 3600.0; 468 469 dec = average[0].D - measure[0].dD / 3600.0; 469 mosaic = MatchMosaic (measure[0].t, measure[0].photcode);470 mosaic = MatchMosaicMetadata (measure[0].imageID); 470 471 if (mosaic == NULL) break; 471 472 RD_to_XY (&x, &y, ra, dec, mosaic); … … 521 522 break; 522 523 case MEAS_EXTERN_ID: /* OK */ 523 { 524 Image *image; 525 image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 524 if (REMOTE_CLIENT) { 525 ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID); 526 526 if (image == NULL) break; 527 527 value.Int = image->externID; 528 } else { 529 Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 530 if (image == NULL) break; 531 value.Int = image[0].externID; 528 532 } 529 533 break; 530 534 531 535 case MEAS_EXPNAME_AS_INT: 532 { 533 Image *image; 534 image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 536 if (REMOTE_CLIENT) { 537 ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID); 538 if (image == NULL) break; 539 value.Int = image->expname; 540 } else { 541 Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 535 542 if (image == NULL) break; 536 543 // XXX very crude: if this matches oNNNNgNNNNo, then convert to an int … … 550 557 case MEAS_FLAT: /* OK */ 551 558 // flat = measure.Mcal - image.Mcal 552 { 553 Image *image; 554 image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 559 if (REMOTE_CLIENT) { 560 ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID); 555 561 if (image == NULL) break; 556 562 value.Flt = measure[0].Mcal - image[0].Mcal; 557 } 558 break; 559 563 } else { 564 Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 565 if (image == NULL) break; 566 value.Flt = measure[0].Mcal - image[0].Mcal; 567 } 568 break; 569 570 // we have measure[0].Xccd,Yccd and image[0].NX,NY. Find the distance to the center 560 571 case MEAS_CENTER_OFFSET: /* OK */ 561 { 562 Image *image; 563 image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 564 if (image == NULL) break; 565 566 // we have measure[0].Xccd,Yccd and image[0].NX,NY. Find the distance to the center 567 572 if (REMOTE_CLIENT) { 573 ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID); 574 if (image == NULL) break; 575 float Xcenter = image[0].Xcenter; 576 float Ycenter = image[0].Ycenter; 577 float distance = hypot (measure[0].Xccd - Xcenter, measure[0].Yccd - Ycenter); 578 value.Flt = distance; 579 } else { 580 Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID); 581 if (image == NULL) break; 568 582 // XXX we may hypotetically have images with -NX to +NX here (eg, projection center), but 569 583 // we do not get a detection from that type of image -
branches/eam_branches/ipp-20130306/Ohana/src/libdvo/src/dvosorts.c
r27817 r35248 23 23 24 24 OHANA_SORT (N, COMPARE, SWAPFUNC); 25 26 # undef SWAPFUNC 27 # undef COMPARE 28 29 } 30 31 /* sort ImageMetadata array by image[i].imageID */ 32 void sort_image_metadata (ImageMetadata *image, off_t Nimage) { 33 34 # define SWAPFUNC(A,B){ ImageMetadata tmp; tmp = image[A]; image[A] = image[B]; image[B] = tmp; } 35 # define COMPARE(A,B)(image[A].imageID < image[B].imageID) 36 37 OHANA_SORT (Nimage, COMPARE, SWAPFUNC); 25 38 26 39 # undef SWAPFUNC
Note:
See TracChangeset
for help on using the changeset viewer.
