IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 27, 2005, 10:38:30 AM (21 years ago)
Author:
eugene
Message:

implementing SkyRegions in all DVO programs

Location:
trunk/Ohana/src/libdvo
Files:
4 edited

Legend:

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

    r5441 r5448  
    338338SkyTable *SkyTableLoad (char *filename, int VERBOSE);
    339339SkyTable *SkyTableFromGSC (char *filename, int depth, int VERBOSE);
     340SkyTable *SkyTableLoadOptimal (char *catdir, char *SKY_TABLE, char *GSCFILE, int VERBOSE);
    340341SkyRegion *SkyRegionByPoint (SkyTable *table, int depth, double ra, double dec);
    341342SkyList *SkyListByPoint (SkyTable *table, double ra, double dec);
  • trunk/Ohana/src/libdvo/src/skyregion_gsc.c

    r5441 r5448  
    5656  regions[Nr].Dmin      = -90;
    5757  regions[Nr].Dmax      = +90;
    58   regions[Nr].index  =  0;
    59   regions[Nr].depth  =  0;
    60   regions[Nr].parent = -1;
    61   regions[Nr].child  =  TRUE;
    62   regions[Nr].table  =  (depth == 0);
     58  regions[Nr].index     =  0;
     59  regions[Nr].depth     =  0;
     60  regions[Nr].parent    = -1;
     61  regions[Nr].child     =  TRUE;
     62  regions[Nr].table     =  (depth == 0);
     63  regions[Nr].filename  =  NULL;
    6364  strcpy (regions[Nr].name, "fullsky");
     65 
    6466 
    6567  No = Nr;
     
    7072  /* first north */
    7173  for (i = 0; i < 12; i++, Nr++) {
    72     regions[Nr].Rmin   =   0;
    73     regions[Nr].Rmax   = 360;
    74     regions[Nr].Dmin   = DecBands[i];
    75     regions[Nr].Dmax   = DecBands[i+1];
    76     regions[Nr].index  =  i+1;
    77     regions[Nr].depth  =  1;
    78     regions[Nr].parent =  0;
    79     regions[Nr].child  =  TRUE;
    80     regions[Nr].table  =  (depth == 1);
     74    regions[Nr].Rmin      =   0;
     75    regions[Nr].Rmax      = 360;
     76    regions[Nr].Dmin      = DecBands[i];
     77    regions[Nr].Dmax      = DecBands[i+1];
     78    regions[Nr].index     =  i+1;
     79    regions[Nr].depth     =  1;
     80    regions[Nr].parent    =  0;
     81    regions[Nr].child     =  TRUE;
     82    regions[Nr].table     =  (depth == 1);
     83    regions[Nr].filename  =  NULL;
    8184    strcpy (regions[Nr].name, DecNames[i]);
    8285  }
    8386  /* now south */
    8487  for (i = 0; i < 12; i++, Nr++) {
    85     regions[Nr].Rmin   =   0;
    86     regions[Nr].Rmax   = 360;
    87     regions[Nr].Dmin   = DecBands[i+14];
    88     regions[Nr].Dmax   = DecBands[i+13];
    89     regions[Nr].index  =  i+1;
    90     regions[Nr].depth  =  1;
    91     regions[Nr].parent =  0;
    92     regions[Nr].child  =  TRUE;
    93     regions[Nr].table  =  (depth == 1);
     88    regions[Nr].Rmin      =   0;
     89    regions[Nr].Rmax      = 360;
     90    regions[Nr].Dmin      = DecBands[i+14];
     91    regions[Nr].Dmax      = DecBands[i+13];
     92    regions[Nr].index     =  i+1;
     93    regions[Nr].depth     =  1;
     94    regions[Nr].parent    =  0;
     95    regions[Nr].child     =  TRUE;
     96    regions[Nr].table     =  (depth == 1);
     97    regions[Nr].filename  =  NULL;
    9498    strcpy (regions[Nr].name, DecNames[i+13]);
    9599  }
     
    134138      regions[Nr].Rmax = RA1;
    135139
    136       regions[Nr].index  =  Nr;
    137       regions[Nr].depth  =  2;
    138       regions[Nr].parent =  No;
    139       regions[Nr].child  =  TRUE;
    140       regions[Nr].table  =  (depth == 2);
    141       regions[Nr].childS =  0;
    142       regions[Nr].childE =  0;
     140      regions[Nr].index    =  Nr;
     141      regions[Nr].depth    =  2;
     142      regions[Nr].parent   =  No;
     143      regions[Nr].child    =  TRUE;
     144      regions[Nr].table    =  (depth == 2);
     145      regions[Nr].filename =  NULL;
     146      regions[Nr].childS   =  0;
     147      regions[Nr].childE   =  0;
    143148
    144149      temp[5] = 0;
     
    166171    for (ny = 0; ny < NDIV; ny ++) {
    167172      for (nx = 0; nx < NDIV; nx ++) {
    168         regions[Nr].Rmin = RA0  + (nx + 0)*dR;
    169         regions[Nr].Rmax = RA0  + (nx + 1)*dR;
    170         regions[Nr].Dmin = DEC0 + (ny + 0)*dD;
    171         regions[Nr].Dmax = DEC0 + (ny + 1)*dD;
    172 
    173         regions[Nr].index  =  Nr;
    174         regions[Nr].depth  =  3;
    175         regions[Nr].parent =  i;
    176         regions[Nr].child  =  FALSE;
    177         regions[Nr].table  =  (depth == 3);
    178         regions[Nr].childS =  0;
    179         regions[Nr].childE =  0;
     173        regions[Nr].Rmin     = RA0  + (nx + 0)*dR;
     174        regions[Nr].Rmax     = RA0  + (nx + 1)*dR;
     175        regions[Nr].Dmin     = DEC0 + (ny + 0)*dD;
     176        regions[Nr].Dmax     = DEC0 + (ny + 1)*dD;
     177
     178        regions[Nr].index    =  Nr;
     179        regions[Nr].depth    =  3;
     180        regions[Nr].parent   =  i;
     181        regions[Nr].child    =  FALSE;
     182        regions[Nr].table    =  (depth == 3);
     183        regions[Nr].filename =  NULL;
     184        regions[Nr].childS   =  0;
     185        regions[Nr].childE   =  0;
    180186
    181187        temp[5] = 0;
  • trunk/Ohana/src/libdvo/src/skyregion_io.c

    r5445 r5448  
    3939  ALLOCATE (skytable, SkyTable, 1);
    4040  skytable[0].regions = fits_table_get_SkyRegion (&ftable, &skytable[0].Nregions, NULL);
     41  for (i = 0; i < skytable[0].Nregions; i++) {
     42    skytable[0].regions[i].filename = NULL;
     43  }
    4144 
    4245  fits_free_header (&header);
     
    7982}
    8083
     84SkyTable *SkyTableLoadOptimal (char *catdir, char *SKY_TABLE, char *GSCFILE, int SKY_DEPTH, int VERBOSE) {
     85
     86  char filename[256];
     87  struct stat filestat;
     88  SkyTable *sky;
     89  int status;
     90
     91  /* first option: CATDIR/SkyTable.fits */
     92  sprintf (filename, "%s/SkyTable.fits", CATDIR);
     93  check_permissions (filename);
     94
     95  /* check for file existence */
     96  status = stat (filename, &filestat);
     97  if (status == 0) { /* file exists, are permissions OK? */
     98    sky = SkyTableLoad (filename, VERBOSE);
     99    if (sky == NULL) {
     100      fprintf (stderr, "error loading sky table\n");
     101      exit (1);
     102    }
     103    return (sky);
     104  }
     105
     106  /* first option: SKY_TABLE */
     107  if ((SKY_TABLE != NULL) && (SKY_TABLE[0] != 0)) {
     108    status = stat (SKY_TABLE, &filestat);
     109    if (status == 0) { /* file exists, are permissions OK? */
     110      sky = SkyTableLoad (SKY_TABLE, VERBOSE);
     111      if (sky == NULL) {
     112        fprintf (stderr, "error loading sky table\n");
     113        exit (1);
     114      }
     115      SkyTableSetDepth (sky, SKY_DEPTH);
     116
     117      /* write CATDIR copy */
     118      sprintf (filename, "%s/SkyTable.fits", CATDIR);
     119      check_permissions (filename);
     120      SkyTableSave (sky, filename);
     121      fits_convert_SkyRegion (sky[0].regions, sizeof (SkyTable), sky[0].Nregions);
     122      return (sky);
     123    }
     124  }
     125
     126  sky = SkyTableFromGSC (GSCFILE, SKY_DEPTH, VERBOSE);
     127  if (sky == NULL) {
     128    fprintf (stderr, "error loading sky table\n");
     129    exit (1);
     130  }
     131
     132  /* write CATDIR copy */
     133  sprintf (filename, "%s/SkyTable.fits", CATDIR);
     134  check_permissions (filename);
     135  SkyTableSave (sky, filename);
     136  fits_convert_SkyRegion (sky[0].regions, sizeof (SkyRegion), sky[0].Nregions);
     137
     138  return (sky);
     139}
     140
     141int SkyListSetFilenames (SkyList *list, char *path, char *ext) {
     142
     143  int i;
     144  char line[256];
     145
     146  // this generates the names, be sure to free when not needed
     147  for (i = 0; i < list[0].Nregions; i++) {
     148    sprintf (line, "%s/%s.%s", path, list[0].regions[i][0].name, ext);
     149    list[0].regions[i][0].filename = strcreate (line);
     150  }
     151
     152  return (TRUE);
     153}
     154
  • trunk/Ohana/src/libdvo/src/skyregion_ops.c

    r5441 r5448  
    119119
    120120/* user must be careful about mosaic registration */
    121 SkyList *SkyListByImage (SkyTable *table, int depth, Image *image, Coords *mosaic) {
     121SkyList *SkyListByImage (SkyTable *table, int depth, Image *image) {
    122122
    123123  int i, j;
     
    126126  double Rmin, Rmax, Dmin, Dmax;
    127127 
    128   RegisterMosaic (mosaic);
     128  // XXX EAM : image/mosaic MUST be registered (if WRP)
    129129  SetImageCorners (X, Y, image);
    130130
     
    269269  if (table == NULL) return (TRUE);
    270270  if (table[0].regions != NULL) {
     271    for (i = 0; i < table[0].Nregions; i++) {
     272      if (table[0].regions[i].filename != NULL) {
     273        free (table[0].regions[i].filename);
     274      }
     275    }
    271276    free (table[0].regions);
    272277  }
Note: See TracChangeset for help on using the changeset viewer.