IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 31553


Ignore:
Timestamp:
May 13, 2011, 3:20:15 PM (15 years ago)
Author:
eugene
Message:

load across 0,360 boundary sensibly

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20110505/Ohana/src/relphot/src/load_images.c

    r31493 r31553  
    2525  SkyTableSetFilenames (sky, CATDIR, "cpt");
    2626 
    27   // determine the populated SkyRegions overlapping the requested area
    28   if (RegionSelect) {
    29     skylist = SkyListByPatch (sky, -1, region);
    30   } else {
    31     Nchar = strlen(regionName);
    32     if (!strcmp (&regionName[Nchar-4], ".cpt")) regionName[Nchar-4] = 0;
    33     skylist = SkyListByName (sky, regionName);
    34   }
    35 
    3627  // convert database table to internal structure (binary to Image)
    3728  // 'image' points to the same memory as db->ftable->buffer
     
    4334  MARKTIME("read image table: %f sec\n", dtime);
    4435
    45   // select the images which overlap the selected sky regions
    46   // 'subset' points to a new copy of the data (different from 'image')
    47   subset = select_images (skylist, image, Nimage, &LineNumber, &Nsubset);
    48   MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
     36  // determine the populated SkyRegions overlapping the requested area
     37  if (RegionSelect) {
     38    if (region[0].Rmin > region[0].Rmax) {
     39      SkyRegion subregion;
     40      subregion = *region;
     41      subregion.Rmin = 0.0; subregion.Rmax = region[0].Rmax;
     42      skylist = SkyListByPatch (sky, -1, &subregion);
     43
     44      subregion.Rmin = region[0].Rmin; subregion.Rmax = 360.0;
     45      SkyList *extraList = SkyListByPatch (sky, -1, &subregion);
     46
     47      // select the images which overlap the selected sky regions
     48      // 'subset' points to a new copy of the data (different from 'image')
     49      subset = select_images (skylist, image, Nimage, &LineNumber, &Nsubset);
     50      MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
     51
     52      Image *subsetExtra;
     53      off_t NsubsetExtra;
     54      off_t *LineNumberExtra, i;
     55
     56      subsetExtra = select_images (extraList, image, Nimage, &LineNumberExtra, &NsubsetExtra);
     57      MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
     58
     59      REALLOCATE (subset, Image, MAX (Nsubset + NsubsetExtra, 1));
     60      REALLOCATE (LineNumber, off_t, MAX (Nsubset + NsubsetExtra, 1));
     61     
     62      for (i = 0; i < NsubsetExtra; i++) {
     63        subset[i+Nsubset] = subsetExtra[i];
     64        LineNumber[i+Nsubset] = LineNumberExtra[i];
     65      }
     66      Nsubset += NsubsetExtra;
     67      MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
     68    } else {
     69      skylist = SkyListByPatch (sky, -1, region);
     70
     71      // select the images which overlap the selected sky regions
     72      // 'subset' points to a new copy of the data (different from 'image')
     73      subset = select_images (skylist, image, Nimage, &LineNumber, &Nsubset);
     74      MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
     75    }
     76  } else {
     77    Nchar = strlen(regionName);
     78    if (!strcmp (&regionName[Nchar-4], ".cpt")) regionName[Nchar-4] = 0;
     79    skylist = SkyListByName (sky, regionName);
     80
     81    // select the images which overlap the selected sky regions
     82    // 'subset' points to a new copy of the data (different from 'image')
     83    subset = select_images (skylist, image, Nimage, &LineNumber, &Nsubset);
     84    MARKTIME("selected %d overlapping images: %f sec\n", (int) Nsubset, dtime);
     85  }
     86
    4987
    5088  // generate db->vtable from db->ftable based on the selection
Note: See TracChangeset for help on using the changeset viewer.