(file) Return to sharp.c CVS log (file) (dir) Up to [Development] / JSOC / proj / sharp / apps

Diff for /JSOC/proj/sharp/apps/sharp.c between version 1.9 and 1.10

version 1.9, 2013/01/14 19:51:56 version 1.10, 2013/01/23 21:48:26
Line 22 
Line 22 
  *              v0.2    Sep 04 2012  *              v0.2    Sep 04 2012
  *              v0.3    Dec 18 2012  *              v0.3    Dec 18 2012
  *              v0.4    Jan 02 2013  *              v0.4    Jan 02 2013
    *              v0.5    Jam 23 2012
  *  *
  *      Notes:  *      Notes:
  *              v0.0  *              v0.0
Line 39 
Line 40 
  *              Fixed memory leakage of 0.15G per rec; denoted with "Dec 18"  *              Fixed memory leakage of 0.15G per rec; denoted with "Dec 18"
  *              v0.4  *              v0.4
  *              Took out convert_inplace(). Was causing all the images to be int  *              Took out convert_inplace(). Was causing all the images to be int
    *              v0.5
    *              Corrected ephemeris keywords, added argument mInfo for setKeys()
  *  *
  *      Example:  *      Example:
  *      sharp "mharp=hmi.Mharp_720s[1404][2012.02.20_10:00]" \  *      sharp "mharp=hmi.Mharp_720s[1404][2012.02.20_10:00]" \
Line 156  enum projection {
Line 158  enum projection {
         lambert         lambert
 }; };
  
   // WSC code
   char *wcsCode[] = {"CAR", "CAS", "MER", "CEA", "GLS", "TAN", "ARC", "STG",
           "SIN", "ZEA"};
   
 // Ephemeris // Ephemeris
 struct ephemeris { struct ephemeris {
         double disk_lonc, disk_latc;         double disk_lonc, disk_latc;
Line 254  void computeSWIndex(struct swIndex *swKe
Line 260  void computeSWIndex(struct swIndex *swKe
 void setSWIndex(DRMS_Record_t *outRec, struct swIndex *swKeys_ptr); void setSWIndex(DRMS_Record_t *outRec, struct swIndex *swKeys_ptr);
  
 /* Set all keywords, no error checking for now */ /* Set all keywords, no error checking for now */
 void setKeys(DRMS_Record_t *outRec, DRMS_Record_t *inRec);  void setKeys(DRMS_Record_t *outRec, DRMS_Record_t *inRec, struct mapInfo *mInfo);
  
 // =================== // ===================
  
Line 656  int createCeaRecord(DRMS_Record_t *mharp
Line 662  int createCeaRecord(DRMS_Record_t *mharp
         DRMS_Link_t *bHarpLink = hcon_lookup_lower(&sharpRec->links, "BHARP");         DRMS_Link_t *bHarpLink = hcon_lookup_lower(&sharpRec->links, "BHARP");
         if (bHarpLink) drms_link_set("BHARP", sharpRec, bharpRec);         if (bHarpLink) drms_link_set("BHARP", sharpRec, bharpRec);
  
         setKeys(sharpRec, bharpRec);            // Set all other keywords          setKeys(sharpRec, bharpRec, &mInfo);            // Set all other keywords
         drms_copykey(sharpRec, mharpRec, "QUALITY");            // copied from los records         drms_copykey(sharpRec, mharpRec, "QUALITY");            // copied from los records
  
         // Space weather         // Space weather
Line 1540  int createCutRecord(DRMS_Record_t *mharp
Line 1546  int createCutRecord(DRMS_Record_t *mharp
         if (bHarpLink) drms_link_set("BHARP", sharpRec, bharpRec);         if (bHarpLink) drms_link_set("BHARP", sharpRec, bharpRec);
  
         setSWIndex(sharpRec, swKeys_ptr);       // Set space weather indices         setSWIndex(sharpRec, swKeys_ptr);       // Set space weather indices
         setKeys(sharpRec, bharpRec);            // Set all other keywords          setKeys(sharpRec, bharpRec, NULL);              // Set all other keywords, NULL specifies cutout
  
         // Stats         // Stats
  
Line 1842  void setSWIndex(DRMS_Record_t *outRec, s
Line 1848  void setSWIndex(DRMS_Record_t *outRec, s
  *  *
  */  */
  
 void setKeys(DRMS_Record_t *outRec, DRMS_Record_t *inRec)  void setKeys(DRMS_Record_t *outRec, DRMS_Record_t *inRec, struct mapInfo *mInfo)
 { {
         copy_me_keys(inRec, outRec);         copy_me_keys(inRec, outRec);
         copy_patch_keys(inRec, outRec);         copy_patch_keys(inRec, outRec);
         copy_geo_keys(inRec, outRec);         copy_geo_keys(inRec, outRec);
         copy_ambig_keys(inRec, outRec);         copy_ambig_keys(inRec, outRec);
  
           int status = 0;
   
           // Change a few geometry keywords for CEA records
           if (mInfo != NULL) {
   
             drms_setkey_float(outRec, "CRPIX1", mInfo->ncol/2. + 0.5);
                   drms_setkey_float(outRec, "CRPIX2", mInfo->nrow/2. + 0.5);
   
                   drms_setkey_float(outRec, "CRVAL1", mInfo->xc);
                   drms_setkey_float(outRec, "CRVAL2", mInfo->yc);
                   drms_setkey_float(outRec, "CDELT1", mInfo->xscale);
                   drms_setkey_float(outRec, "CDELT2", mInfo->yscale);
                   drms_setkey_string(outRec, "CUNIT1", "degree");
                   drms_setkey_string(outRec, "CUNIT2", "degree");
   
                   char key[64];
                   snprintf (key, 64, "CRLN-%s", wcsCode[(int) mInfo->proj]);
                   drms_setkey_string(outRec, "CTYPE1", key);
                   snprintf (key, 64, "CRLT-%s", wcsCode[(int) mInfo->proj]);
                   drms_setkey_string(outRec, "CTYPE2", key);
                   drms_setkey_float(outRec, "CROTA2", 0.0);
   
           } else {
   
             float disk_xc = drms_getkey_float(inRec, "IMCRPIX1", &status);
             float disk_yc = drms_getkey_float(inRec, "IMCRPIX2", &status);
             float x_ll = drms_getkey_float(inRec, "CRPIX1", &status);
             float y_ll = drms_getkey_float(inRec, "CRPIX2", &status);
             // Defined as disk center's pixel address wrt lower-left of cutout
             drms_setkey_float(outRec, "CRPIX1", disk_xc - x_ll + 1.);
                   drms_setkey_float(outRec, "CRPIX2", disk_yc - y_ll + 1.);
                   // Always 0.
                   drms_setkey_float(outRec, "CRVAL1", 0);
                   drms_setkey_float(outRec, "CRVAL2", 0);
   
           }
   
         char timebuf[1024];         char timebuf[1024];
         float UNIX_epoch = -220924792.000; /* 1970.01.01_00:00:00_UTC */         float UNIX_epoch = -220924792.000; /* 1970.01.01_00:00:00_UTC */
         double val;         double val;
         int status = DRMS_SUCCESS;          status = 0;
  
         val = drms_getkey_double(inRec, "DATE",&status);         val = drms_getkey_double(inRec, "DATE",&status);
         drms_setkey_double(outRec, "DATE_B", val);         drms_setkey_double(outRec, "DATE_B", val);


Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

Karen Tian
Powered by
ViewCVS 0.9.4