IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 8, 2009, 5:32:55 PM (17 years ago)
Author:
watersc1
Message:

Merge my branch back into the trunk. This includes:

ipp_cleanup.pl : and associated edits to allow cleanup to work
burntool : updated to newest version, ipp_apply_burntool.pl modified to use persist=t options
ppImageBurntoolMask.c : masks region burntool identifies
psastro : allow selection of wcs header format
addtool : splits addstar step off from the camera stage

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/psModules/src/astrom/pmAstrometryWCS.c

    r24052 r25299  
    289289    // test the CDELTi varient
    290290    if (pcKeys) {
     291        wcs->wcsCDkeys = 0;
     292
    291293        wcs->cdelt1 = psMetadataLookupF64 (&status, header, "CDELT1");
    292294        wcs->cdelt2 = psMetadataLookupF64 (&status, header, "CDELT2");
     
    334336    // test the CDi_j varient
    335337    if (cdKeys) {
     338        wcs->wcsCDkeys = 1;
     339
    336340        wcs->trans->x->coeff[1][0] = psMetadataLookupF64 (&status, header, "CD1_1"); // == PC1_1
    337341        wcs->trans->x->coeff[0][1] = psMetadataLookupF64 (&status, header, "CD1_2"); // == PC1_2
     
    375379    // XXX make it optional to write out CDi_j terms, or other versions
    376380    // apply CDELT1,2 (degrees / pixel) to yield PCi,j terms of order unity
    377     double cdelt1 = wcs->cdelt1;
    378     double cdelt2 = wcs->cdelt2;
    379     psMetadataAddF64 (header, PS_LIST_TAIL, "CDELT1", PS_META_REPLACE, "", cdelt1);
    380     psMetadataAddF64 (header, PS_LIST_TAIL, "CDELT2", PS_META_REPLACE, "", cdelt2);
    381 
    382     // test the PC00i00j varient:
    383     psMetadataAddF64 (header, PS_LIST_TAIL, "PC001001", PS_META_REPLACE, "", wcs->trans->x->coeff[1][0] / cdelt1); // == PC1_1
    384     psMetadataAddF64 (header, PS_LIST_TAIL, "PC001002", PS_META_REPLACE, "", wcs->trans->x->coeff[0][1] / cdelt2); // == PC1_2
    385     psMetadataAddF64 (header, PS_LIST_TAIL, "PC002001", PS_META_REPLACE, "", wcs->trans->y->coeff[1][0] / cdelt1); // == PC2_1
    386     psMetadataAddF64 (header, PS_LIST_TAIL, "PC002002", PS_META_REPLACE, "", wcs->trans->y->coeff[0][1] / cdelt2); // == PC2_2
    387 
    388     // Elixir-style polynomial terms
    389     // XXX currently, Elixir/DVO cannot accept mixed orders
    390     // XXX need to respect the masks
    391     // XXX is wcs->cdelt1,2 always consistent?
    392     int fitOrder = wcs->trans->x->nX;
    393     if (fitOrder > 1) {
     381
     382    if (!(wcs->wcsCDkeys)) {
     383
     384      double cdelt1 = wcs->cdelt1;
     385      double cdelt2 = wcs->cdelt2;
     386      psMetadataAddF64 (header, PS_LIST_TAIL, "CDELT1", PS_META_REPLACE, "", cdelt1);
     387      psMetadataAddF64 (header, PS_LIST_TAIL, "CDELT2", PS_META_REPLACE, "", cdelt2);
     388     
     389      // test the PC00i00j varient:
     390      psMetadataAddF64 (header, PS_LIST_TAIL, "PC001001", PS_META_REPLACE, "", wcs->trans->x->coeff[1][0] / cdelt1); // == PC1_1
     391      psMetadataAddF64 (header, PS_LIST_TAIL, "PC001002", PS_META_REPLACE, "", wcs->trans->x->coeff[0][1] / cdelt2); // == PC1_2
     392      psMetadataAddF64 (header, PS_LIST_TAIL, "PC002001", PS_META_REPLACE, "", wcs->trans->y->coeff[1][0] / cdelt1); // == PC2_1
     393      psMetadataAddF64 (header, PS_LIST_TAIL, "PC002002", PS_META_REPLACE, "", wcs->trans->y->coeff[0][1] / cdelt2); // == PC2_2
     394     
     395      // Elixir-style polynomial terms
     396      // XXX currently, Elixir/DVO cannot accept mixed orders
     397      // XXX need to respect the masks
     398      // XXX is wcs->cdelt1,2 always consistent?
     399      int fitOrder = wcs->trans->x->nX;
     400      if (fitOrder > 1) {
    394401        for (int i = 0; i <= fitOrder; i++) {
    395             for (int j = 0; j <= fitOrder; j++) {
    396                 if (i + j < 2)
    397                     continue;
    398                 if (i + j > fitOrder)
    399                     continue;
    400                 sprintf (name, "PCA1X%1dY%1d", i, j);
    401                 psMetadataAddF64 (header, PS_LIST_TAIL, name, PS_META_REPLACE, "", wcs->trans->x->coeff[i][j] / pow(cdelt1, i) / pow(cdelt2, j));
    402                 sprintf (name, "PCA2X%1dY%1d", i, j);
    403                 psMetadataAddF64 (header, PS_LIST_TAIL, name, PS_META_REPLACE, "", wcs->trans->y->coeff[i][j] / pow(cdelt1, i) / pow(cdelt2, j));
    404             }
     402          for (int j = 0; j <= fitOrder; j++) {
     403            if (i + j < 2)
     404              continue;
     405            if (i + j > fitOrder)
     406              continue;
     407            sprintf (name, "PCA1X%1dY%1d", i, j);
     408            psMetadataAddF64 (header, PS_LIST_TAIL, name, PS_META_REPLACE, "", wcs->trans->x->coeff[i][j] / pow(cdelt1, i) / pow(cdelt2, j));
     409            sprintf (name, "PCA2X%1dY%1d", i, j);
     410            psMetadataAddF64 (header, PS_LIST_TAIL, name, PS_META_REPLACE, "", wcs->trans->y->coeff[i][j] / pow(cdelt1, i) / pow(cdelt2, j));
     411          }
    405412        }
    406413        psMetadataAddS32 (header, PS_LIST_TAIL, "NPLYTERM", PS_META_REPLACE, "", fitOrder);
    407     }
    408 
    409     // remove any existing 'CDi_j style' wcs keywords
    410     if (psMetadataLookup(header, "CD1_1")) {
     414      }
     415     
     416      // remove any existing 'CDi_j style' wcs keywords
     417      if (psMetadataLookup(header, "CD1_1")) {
    411418        psMetadataRemoveKey(header, "CD1_1");
    412419        psMetadataRemoveKey(header, "CD1_2");
    413420        psMetadataRemoveKey(header, "CD2_1");
    414421        psMetadataRemoveKey(header, "CD2_2");
     422      }
     423    }
     424    if (wcs->wcsCDkeys) {
     425      psMetadataAddF64 (header, PS_LIST_TAIL, "CD1_1", PS_META_REPLACE, "", wcs->trans->x->coeff[1][0]);
     426      psMetadataAddF64 (header, PS_LIST_TAIL, "CD1_2", PS_META_REPLACE, "", wcs->trans->x->coeff[0][1]);
     427      psMetadataAddF64 (header, PS_LIST_TAIL, "CD2_1", PS_META_REPLACE, "", wcs->trans->y->coeff[1][0]);
     428      psMetadataAddF64 (header, PS_LIST_TAIL, "CD2_2", PS_META_REPLACE, "", wcs->trans->y->coeff[0][1]);
     429
     430      if (psMetadataLookup(header, "PC001001")) {
     431        psMetadataRemoveKey(header, "PC001001");
     432        psMetadataRemoveKey(header, "PC001002");
     433        psMetadataRemoveKey(header, "PC002001");
     434        psMetadataRemoveKey(header, "PC002002");
     435      }
    415436    }
    416437
     
    535556        fpa->toSky->R -= 2.0*M_PI;
    536557
     558    fpa->wcsCDkeys = wcs->wcsCDkeys;
     559
    537560    psTrace ("psastro", 5, "toFPA: %f %f  (%f,%f),(%f,%f)\n",
    538561             chip->toFPA->x->coeff[0][0], chip->toFPA->y->coeff[0][0],
     
    682705    wcs->cdelt2 = hypot (wcs->trans->y->coeff[1][0], wcs->trans->y->coeff[0][1]);
    683706
     707    wcs->wcsCDkeys = fpa->wcsCDkeys;
    684708    psFree (toTPA);
    685709
     
    922946    wcs->trans = psPlaneTransformAlloc (nXorder, nYorder);
    923947    wcs->toSky = NULL;
     948    wcs->wcsCDkeys = 0;
    924949
    925950    memset (wcs->ctype1, 0, PM_ASTROM_WCS_TYPE_SIZE);
Note: See TracChangeset for help on using the changeset viewer.