IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 42075


Ignore:
Timestamp:
Feb 28, 2022, 12:05:28 PM (4 years ago)
Author:
eugene
Message:

add method to extract measure->extID (as well as image->externID); add Molweide projection

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

Legend:

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

    r41341 r42075  
    240240      MEAS_OBJ_ID,
    241241      MEAS_CAT_ID,
     242      MEAS_EXT_ID,
    242243      MEAS_IMAGE_ID,
    243244      MEAS_PSF_QF,
     
    248249      MEAS_CR_NSIGMA,
    249250      MEAS_EXT_NSIGMA,
    250       MEAS_EXTERN_ID,
     251      MEAS_IMAGE_EXTERN_ID, // return image.externID
    251252      MEAS_EXPNAME_AS_INT,
    252253      MEAS_MCAL_OFFSET_PSF, // make this a dvoMagOption?
  • trunk/Ohana/src/libdvo/include/libdvo_astro.h

    r40291 r42075  
    2727  PROJ_PAR, // pseudocyl
    2828  PROJ_ZPN, // zenithal
     29  PROJ_MOL, // pseudocyl
    2930} OhanaProjection;
    3031
  • trunk/Ohana/src/libdvo/src/coordops.c

    r39926 r42075  
    266266    switch (proj) {
    267267      case PROJ_AIT:
    268       Z2 = (1.0 - SQ(RAD_DEG*0.25*L) - SQ(RAD_DEG*0.5*M));
    269       if (Z2 < 0) return (FALSE);
    270       Z = sqrt (Z2);
    271       alpha = 2.0 * DEG_RAD * atan2 (RAD_DEG*0.5*Z*L, 2.0*Z2 - 1.0);
    272       delta = DEG_RAD * asin (RAD_DEG*M*Z);
    273       break;
    274      
     268        Z2 = (1.0 - SQ(RAD_DEG*0.25*L) - SQ(RAD_DEG*0.5*M));
     269        if (Z2 < 0) return (FALSE);
     270        Z = sqrt (Z2);
     271        alpha = 2.0 * DEG_RAD * atan2 (RAD_DEG*0.5*Z*L, 2.0*Z2 - 1.0);
     272        delta = DEG_RAD * asin (RAD_DEG*M*Z);
     273        break;
    275274      case PROJ_GLS:
    276275        /* L,M in degrees, alpha,delta in degrees */
     
    283282        delta = 3 * DEG_RAD * asin (M/180.0);
    284283        break;
     284      case PROJ_MOL:
     285        Z = sqrt(2.0 - SQ(RAD_DEG*M));
     286        alpha = M_PI*L/(2*Z);
     287        double T1 = asin(RAD_DEG*M*M_SQRT1_2)/90.0 + M*Z/180.0;
     288        delta = DEG_RAD*asin(T1);
    285289      default:
    286290        return (FALSE);
     
    448452        *M = 180.0 * sin (RAD_DEG*theta/3.0);
    449453        return (TRUE);
     454      case PROJ_MOL:
     455        phi = ra - coords[0].crval1;
     456        theta = dec - coords[0].crval2;
     457        // given theta, solve for gamma:
     458        double So = sin(theta*RAD_DEG);
     459        double Go = theta;
     460        if (theta > +80) { Go = theta - 10.0;}
     461        if (theta < -80) { Go = theta + 10.0;}
     462        for (int iter = 0; iter < 5; iter ++) {
     463          double Fo = (Go / 90.0) + sin(Go*M_PI/90.0) / M_PI - So;
     464          double dFdG = (1 / 90.0) + cos(Go*M_PI/90.0) / 90.0;
     465          Go -= Fo / dFdG;
     466        }
     467        *L = 2*phi * cos(RAD_DEG*Go) * M_SQRT2 / M_PI;
     468        *M = 180.0 * sin(RAD_DEG*Go) * M_SQRT2 / M_PI;
     469        return (TRUE);
    450470      default:
    451471        return (FALSE);
     
    10591079  if (!strncmp(&ctype[4], "-GLS", 4)) return PROJ_GLS;
    10601080  if (!strncmp(&ctype[4], "-PAR", 4)) return PROJ_PAR;
     1081  if (!strncmp(&ctype[4], "-MOL", 4)) return PROJ_MOL;
    10611082  return PROJ_NONE;
    10621083}
     
    10791100    case PROJ_GLS: strcpy(&ctype[4], "-GLS"); return TRUE;
    10801101    case PROJ_PAR: strcpy(&ctype[4], "-PAR"); return TRUE;
     1102    case PROJ_MOL: strcpy(&ctype[4], "-MOL"); return TRUE;
    10811103    case PROJ_NONE: return FALSE;
    10821104  }
     
    11031125    case PROJ_GLS:
    11041126    case PROJ_PAR:
     1127    case PROJ_MOL:
    11051128      return PROJ_MODE_PSEUDOCYL;
    11061129    default:
  • trunk/Ohana/src/libdvo/src/dbExtractMeasures.c

    r40463 r42075  
    696696      value.Int = measure[0].imageID;
    697697      break;
     698    case MEAS_EXT_ID: /* OK */
     699      value.Int = measure[0].extID;
     700      break;
    698701    case MEAS_PSF_QF: /* OK */
    699702      value.Flt = measure[0].psfQF;
     
    714717      value.Flt = measure[0].extNsigma;
    715718      break;
    716     case MEAS_EXTERN_ID: /* OK */
     719    case MEAS_IMAGE_EXTERN_ID: /* OK */
    717720      if (REMOTE_CLIENT) {
    718721        ImageMetadata *image = MatchImageMetadataDVO (measure[0].imageID);
  • trunk/Ohana/src/libdvo/src/dbFields.c

    r40463 r42075  
    603603  if (!strcasecmp (fieldName, "CATID"))          ESCAPE (MEAS_CAT_ID,         OPIHI_INT);
    604604  if (!strcasecmp (fieldName, "IMAGEID"))        ESCAPE (MEAS_IMAGE_ID,       OPIHI_INT);
    605   if (!strcasecmp (fieldName, "EXTERNID"))       ESCAPE (MEAS_EXTERN_ID,      OPIHI_INT);
     605  if (!strcasecmp (fieldName, "IMAGE_EXTERN_ID")) ESCAPE (MEAS_IMAGE_EXTERN_ID, OPIHI_INT);
     606  if (!strcasecmp (fieldName, "IMAGE_EXT_ID"))    ESCAPE (MEAS_IMAGE_EXTERN_ID, OPIHI_INT);
     607  if (!strcasecmp (fieldName, "EXTERNID"))       ESCAPE (MEAS_EXT_ID,         OPIHI_INT);
     608  if (!strcasecmp (fieldName, "EXT_ID"))         ESCAPE (MEAS_EXT_ID,         OPIHI_INT);
     609  if (!strcasecmp (fieldName, "EXTID"))          ESCAPE (MEAS_EXT_ID,         OPIHI_INT);
    606610  if (!strcasecmp (fieldName, "EXPNAME"))        ESCAPE (MEAS_EXPNAME_AS_INT, OPIHI_INT);
    607611  if (!strcasecmp (fieldName, "PSF_QF"))         ESCAPE (MEAS_PSF_QF,         OPIHI_FLT);
Note: See TracChangeset for help on using the changeset viewer.