IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 35248


Ignore:
Timestamp:
Mar 6, 2013, 3:56:15 PM (13 years ago)
Author:
eugene
Message:

adding image metadata for remote clients

Location:
branches/eam_branches/ipp-20130306/Ohana/src/libdvo
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20130306/Ohana/src/libdvo/Makefile

    r34260 r35248  
    9898$(SRC)/LoadImages.$(ARCH).o             \
    9999$(SRC)/ImageSelection.$(ARCH).o         \
     100$(SRC)/ImageMetadataSelection.$(ARCH).o \
     101$(SRC)/ImageMetadata.$(ARCH).o \
    100102$(SRC)/ImageOps.$(ARCH).o               \
    101103$(SRC)/match_image.$(ARCH).o            \
  • branches/eam_branches/ipp-20130306/Ohana/src/libdvo/include/dvodb.h

    r35237 r35248  
    298298} dbValue;
    299299
     300typedef 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
    300312Image        *LoadImagesDVO         PROTO((off_t *Nimage));
    301313void          FreeImagesDVO         PROTO((Image *images));
     
    346358int dbExtractMeasuresInitAve (void);
    347359int dbExtractMeasuresInitMeas (void);
    348 int dbExtractMeasuresInit (void);
     360int dbExtractMeasuresInit (int isRemoteClient);
    349361
    350362int dbExtractAveragesInitTransform (CoordTransformSystem target);
     
    363375#include "get_graphdata.h"
    364376
     377ImageMetadata *ImageMetadataLoad(char *filename, off_t *nimage);
     378int ImageMetadataSave(char *filename, Image *image, off_t Nimage);
     379
     380int SetImageMetadataSelection (char *filename);
     381void FreeImageMetadataSelection ();
     382ImageMetadata *MatchImageMetadataDVO (unsigned int imageID);
     383Coords *MatchMosaicMetadata (unsigned int imageID);
     384off_t match_image_by_ID (ImageMetadata *image, off_t Nimage, unsigned int ID);
     385void sort_image_metadata (ImageMetadata *image, off_t Nimage);
     386
    365387# 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
    23
    34# define GET_COLUMN(OUT,NAME,TYPE) \
     
    67
    78// this is nearly identical to the one in 'uniphot' and 'relphot'
    8 ImageSubset *ImageSubsetLoad(char *filename, off_t *nimage) {
     9ImageMetadata *ImageMetadataLoad(char *filename, off_t *nimage) {
    910
    1011  int i, Ncol;
     
    1617
    1718  *nimage = 0;
    18   ImageSubset *image = NULL;
     19  ImageMetadata *image = NULL;
    1920
    2021  FILE *f = fopen (filename, "r");
     
    5758  char type[16];
    5859
    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);
    7171  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] ;
    8081  }
    8182  fprintf (stderr, "loaded data for %lld images\n", (long long) Nrow);
    8283
     84  free (imageID);
     85  free (externID);
     86  free (expname);
     87  free (crval1);
     88  free (crval2);
    8389  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);
    9193
    9294  *nimage = Nrow;
     
    132134  unsigned int *imageID, *externID, *expname;
    133135  double *crval1, *crval2;
    134   float *Mcal, *dMcal, *Xcenter, *Ycenter;
     136  float *Mcal, *Xcenter, *Ycenter, *secz;
    135137
    136138  // create intermediate storage arrays
     
    149151    imageID[i]  = image[i].imageID;
    150152    externID[i] = image[i].externID;
    151     crval1[i]   = image[i].crval1;
    152     crval2[i]   = image[i].crval2;
     153    crval1[i]   = image[i].coords.crval1;
     154    crval2[i]   = image[i].coords.crval2;
    153155    Mcal[i]     = image[i].Mcal;
    154156    secz[i]     = image[i].secz;
     
    158160    expname[i]  = 0;
    159161    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]);
    162164      expname[i] = mjd * 10000 + Nexp;
    163165    }
  • branches/eam_branches/ipp-20130306/Ohana/src/libdvo/src/ImageSelection.c

    r31635 r35248  
    6666}
    6767
     68Image *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
    6889Coords *MatchMosaic (unsigned int time, short int source) {
    6990
  • branches/eam_branches/ipp-20130306/Ohana/src/libdvo/src/dbExtractMeasures.c

    r35245 r35248  
    1414static CoordTransform *celestial_to_ecliptic = NULL;
    1515
     16static int REMOTE_CLIENT = FALSE;
     17
    1618static int haveGalacticAve = FALSE;
    1719static double GLON_AVE = 0.0;
     
    3032static double ELAT_MEAS = 0.0;
    3133
    32 int dbExtractMeasuresInit () {
     34int dbExtractMeasuresInit (int isRemoteClient) {
     35  REMOTE_CLIENT = isRemoteClient;
    3336  GetTimeFormat (&TimeReference, &TimeFormat);
    3437  return (TRUE);
     
    335338      break;
    336339    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;
    349350    case MEAS_AZ: /* OK */
    350351      value.Flt = measure[0].az;
     
    467468      ra  = average[0].R - measure[0].dR / 3600.0;
    468469      dec = average[0].D - measure[0].dD / 3600.0;
    469       mosaic = MatchMosaic (measure[0].t, measure[0].photcode);
     470      mosaic = MatchMosaicMetadata (measure[0].imageID);
    470471      if (mosaic == NULL) break;
    471472      RD_to_XY (&x, &y, ra, dec, mosaic);
     
    521522      break;
    522523    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);
    526526        if (image == NULL) break;
    527527        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;
    528532      }
    529533      break;
    530534
    531535    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);
    535542        if (image == NULL) break;
    536543        // XXX very crude: if this matches oNNNNgNNNNo, then convert to an int
     
    550557    case MEAS_FLAT: /* OK */
    551558      // 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);
    555561        if (image == NULL) break;
    556562        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
    560571    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;
    568582        // XXX we may hypotetically have images with -NX to +NX here (eg, projection center), but
    569583        // we do not get a detection from that type of image
  • branches/eam_branches/ipp-20130306/Ohana/src/libdvo/src/dvosorts.c

    r27817 r35248  
    2323
    2424  OHANA_SORT (N, COMPARE, SWAPFUNC);
     25
     26# undef SWAPFUNC
     27# undef COMPARE
     28
     29}
     30
     31/* sort ImageMetadata array by image[i].imageID */
     32void 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);
    2538
    2639# undef SWAPFUNC
Note: See TracChangeset for help on using the changeset viewer.