IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 4993


Ignore:
Timestamp:
Sep 11, 2005, 1:25:42 PM (21 years ago)
Author:
eugene
Message:

adding DVO image table conversions

Location:
trunk/Ohana/src/libohana
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libohana/include/dvo.h

    r4865 r4993  
    99
    1010/*** named data values (convert all to enums?) ***/
     11
     12/* DVO table modes */
     13enum {DVO_MODE_RAW, DVO_MODE_MEF, DVO_MODE_SPLIT, DVO_MODE_MYSQL} DVOTableMode;
     14
     15/* DVO table formats */
     16enum {DVO_FORMAT_UNDEF, DVO_FORMAT_ELIXIR, DVO_FORMAT_LONEOS, DVO_FORMAT_PANSTARRS} DVOTableFormat;
    1117
    1218/* image data modes in RegImage */
  • trunk/Ohana/src/libohana/src/dvo_convert.c

    r4864 r4993  
    391391  return (FALSE);
    392392}
     393
     394/*** Image Conversions ***/
     395
     396Image *FtableToImage (FTable *ftable, int *format) {
     397
     398  int Nimage;
     399  Image *image;
     400  char extname[80];
     401
     402  /* extname may be set from outside if the source is RAW not MEF */
     403  if (*format == DVO_FORMAT_ELIXIR) {
     404    Imagelixir *tmpimage;
     405    tmpimage = fits_table_get_AverageElixir (ftable, &Nimage, NULL);
     406    image = ImageElixirToInternal (tmpimage, Nimage);
     407    free (tmpimage);
     408    return (image);
     409  }
     410
     411  /* convert to the internal format */
     412  if (!fits_scan (ftable[0].header, "EXTNAME", "%s", 1, extname)) {
     413    fprintf (stderr, "EXTNAME missing for average table\n");
     414    return (NULL);
     415  }
     416  if (!strcmp (extname, "DVO_IMAGE")) {
     417    image = fits_table_get_Image (ftable, Nimage, NULL);
     418    *format = DVO_FORMAT_INTERNAL;
     419    return (image);
     420  }
     421  if (!strcmp (extname, "DVO_IMAGE_ELIXIR")) {
     422    ImageElixir *tmpimage;
     423    tmpimage = fits_table_get_ImageElixir (ftable, Nimage, NULL);
     424    image = ImageElixirToInternal (tmpimage, Nimage);
     425    free (tmpimage);
     426    *format = DVO_FORMAT_ELIXIR;
     427    return (image);
     428  }
     429  if (!strcmp (extname, "DVO_IMAGE_LONEOS")) {
     430    ImageLoneos *tmpimage;
     431    tmpimage = fits_table_get_ImageLoneos (ftable, Nimage, NULL);
     432    image = ImageLoneosToInternal (tmpimage, Nimage);
     433    free (tmpimage);
     434    *format = DVO_FORMAT_LONEOS;
     435    return (image);
     436  }
     437  if (!strcmp (extname, "DVO_IMAGE_PANSTARRS")) {
     438    ImagePanstarrs *tmpimage;
     439    tmpimage = fits_table_get_ImagePanstarrs (ftable, Nimage, NULL);
     440    image = ImagePanstarrsToInternal (tmpimage, Nimage);
     441    free (tmpimage);
     442    *format = DVO_FORMAT_PANSTARRS;
     443    return (image);
     444  }
     445
     446  fprintf (stderr, "table format unknown: %s\n", extname);
     447
     448  *Nimage = 0;
     449  return (NULL);
     450}
     451
     452int ImageToFtable (FTable *ftable, Image *image, int Nimage, int format) {
     453
     454  /* convert from the internal format */
     455  if (!strcmp (extname, "DVO_IMAGE")) {
     456    fits_table_set_Image (ftable, image, Nimage);
     457    return (TRUE);
     458  }
     459  if (!strcmp (extname, "DVO_IMAGE_ELIXIR")) {
     460    ImageElixir *tmpimage;
     461    tmpimage = ImageInternalToElixir (image, Nimage);
     462    fits_table_set_ImageElixir (ftable, tmpimage, Nimage);
     463    free (tmpimage);
     464    return (TRUE);
     465  }
     466  if (!strcmp (extname, "DVO_IMAGE_LONEOS")) {
     467    ImageLoneos *tmpimage;
     468    tmpimage = ImageInternalToLoneos (image, Nimage);
     469    fits_table_set_ImageLoneos (ftable, tmpimage, Nimage);
     470    free (tmpimage);
     471    return (TRUE);
     472  }
     473  if (!strcmp (extname, "DVO_IMAGE_PANSTARRS")) {
     474    ImagePanstarrs *tmpimage;
     475    tmpimage = ImageInternalToPanstarrs (image, Nimage);
     476    fits_table_set_ImagePanstarrs (ftable, tmpimage, Nimage);
     477    free (tmpimage);
     478    return (TRUE);
     479  }
     480  fprintf (stderr, "table format unknown: %s\n", extname);
     481  return (FALSE);
     482}
     483
  • trunk/Ohana/src/libohana/src/dvo_image.c

    r4864 r4993  
    22# include <dvo.h>
    33
    4 enum {FITS, RAW};
    5 
    64/* determine db mode (raw/fits) and read the complete table */
    75int dvo_image_load (FITS_DB *db, int VERBOSE, int FORCE_READ) {
    86
    9   int Naxis, Nrow, Nread, mode, status;
     7  int Naxis, Nread, status;
    108  char buffer[241];
    119
     
    1412  if (db[0].f == NULL) return (FALSE);
    1513
    16   fseek (db[0].f, 0, SEEK_SET);
    17 
    1814  /* test for NAXIS == 2 in line 3 */
    1915  bzero (buffer, 241);
     16  fseek (db[0].f, 0, SEEK_SET);
    2017  Nread = fread (buffer, 1, 240, db[0].f);
    2118  if (Nread != 240) {
     
    3027  fseek (db[0].f, 0, SEEK_SET);
    3128
    32   mode = FITS;
    33   if (Naxis == 2) mode = RAW;
    34   if (VERBOSE) {
    35     switch (mode) {
    36       case FITS:
    37         fprintf (stderr, "reading images (mode FITS)\n");
    38         break;
    39       case RAW:
    40         fprintf (stderr, "reading images (mode RAW)\n");
    41         break;
    42       default:
    43         fprintf (stderr, "error getting image mode\n");
    44         exit (2);
    45     }
    46   }
    47 
    48   /* read data in appropriate mode */
    49   if (mode == FITS) {
    50     status = fits_db_load (db);
    51   } else {
    52     status = dvo_image_load_raw (db, VERBOSE, FORCE_READ);
    53   }
    54   /* byteswap table data */
    55   Nrow = db[0].theader.Naxis[1];
    56   fits_convert_Image ((Image *) db[0].ftable.buffer, sizeof(Image), Nrow);
    57   db[0].swapped = TRUE;
    58 
     29  /* image table can only be RAW or MEF */
     30  db[0].mode = DVO_MODE_MEF;
     31  if (Naxis == 2) db[0].mode = DVO_MODE_RAW;
     32  switch (db[0].mode) {
     33    case DVO_MODE_MEF:
     34      if (VERBOSE) fprintf (stderr, "reading images (mode DVO_MODE_MEF)\n");
     35      status = fits_db_load (db);
     36      db[0].format = UNDEF;
     37      break;
     38    case DVO_MODE_RAW:
     39      if (VERBOSE) fprintf (stderr, "reading images (mode DVO_MODE_RAW)\n");
     40      status = dvo_image_load_raw (db, VERBOSE, FORCE_READ);
     41      db[0].format = ELIXIR;
     42      break;
     43    default:
     44      fprintf (stderr, "error getting image mode\n");
     45      exit (2);
     46  }
     47  /* convert from external to internal format */
     48  /**** this is confused: where does the converted image table go?
     49        back in db[0].ftable.buffer?
     50        keep the db[0].ftable.header?
     51        sync with the correct format??
     52        dvo_image_load_raw creates a new theader for Image
     53          - should be ImageElixir
     54        FtableToImage should create a new theader for Image
     55        ImageToFtable should create a new theader for ImageFOO
     56  ****/
     57  image = FtableToImage (db[0].ftable, &db[0].format);
     58  db[0].swapped = FALSE;
    5959  return (TRUE);
    6060}
     
    6868  if (db[0].header.Naxes == 2) mode = RAW;
    6969 
     70  /* convert from external to internal format */
     71  FtableToImage (db[0].ftable, db[0].format);
     72  db[0].swapped = FALSE;
     73
    7074  /* byteswap table data */
    7175  Nrow = db[0].theader.Naxis[1];
Note: See TracChangeset for help on using the changeset viewer.