- Timestamp:
- Sep 11, 2016, 2:29:33 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/czw_branch/20160809/psModules/src/astrom/pmAstrometryWCS.c
r36492 r39685 277 277 wcs->crpix2 = psMetadataLookupF64 (&status, header, "CRPIX2"); 278 278 wcs->toSky = psProjectionAlloc (wcs->crval1*PM_RAD_DEG, wcs->crval2*PM_RAD_DEG, PM_RAD_DEG, PM_RAD_DEG, type); 279 280 // XXX if type == ZPN, look for PV2_%d elements: 281 if (type == PS_PROJ_ZPN) { 282 psVector *maxRadial = psVectorAlloc (21, PS_TYPE_F64); 283 for (int i = 0; i <= 20; i++) { 284 char name[64]; 285 snprintf (name, 64, "PV2_%d", i); 286 287 maxRadial->data.F64[i] = 0.0; 288 double value = psMetadataLookupF64 (&status, header, name); 289 290 if (status) { 291 maxRadial->data.F64[i] = value; 292 maxRadial->n = i; 293 } 294 295 // PV2_1 is implicit if not present 296 if ((i == 1) && !status) { 297 maxRadial->data.F64[i] = 1.0; 298 continue; 299 } 300 } 301 maxRadial->n ++; 302 wcs->toSky->radial = maxRadial; 303 } 279 304 280 305 // These aren't needed but having them empty is disconcerting … … 375 400 psMetadataAddF64 (header, PS_LIST_TAIL, "CRPIX1", PS_META_REPLACE, "", wcs->crpix1); 376 401 psMetadataAddF64 (header, PS_LIST_TAIL, "CRPIX2", PS_META_REPLACE, "", wcs->crpix2); 402 403 if (wcs->toSky->type == PS_PROJ_ZPN) { 404 psAssert (wcs->toSky->radial, "missing radial vector"); 405 for (int i = 0; i < wcs->toSky->radial->n; i++) { 406 if (wcs->toSky->radial->data.F64[i] == 0.0) continue; 407 snprintf (name, 16, "PV2_%d", i); 408 psMetadataAddF64 (header, PS_LIST_TAIL, name, PS_META_REPLACE, "", wcs->toSky->radial->data.F64[i]); 409 } 410 } 377 411 378 412 // XXX make it optional to write out CDi_j terms, or other versions … … 485 519 // projection from TPA (linear microns) to SKY (radians) 486 520 psProjection *toSky = psProjectionAlloc (wcs->toSky->R, wcs->toSky->D, PM_RAD_DEG*pdelt1, PM_RAD_DEG*pdelt2, wcs->toSky->type); 521 toSky->radial = psMemIncrRefCounter (wcs->toSky->radial); 487 522 488 523 if (fpa->toSky == NULL) { … … 633 668 // cdelt1,2 has units of degrees/micron 634 669 fpa->toSky = psProjectionAlloc (wcs->toSky->R, wcs->toSky->D, wcs->cdelt1*PM_RAD_DEG, wcs->cdelt2*PM_RAD_DEG, wcs->toSky->type); 670 fpa->toSky->radial = psMemIncrRefCounter (wcs->toSky->radial); 635 671 636 672 // create transformation with 0,0 reference pixel … … 701 737 // convert projection from FPA to SKY into wcs projection (degrees to radians) 702 738 wcs->toSky = psProjectionAlloc (fpa->toSky->R, fpa->toSky->D, PM_RAD_DEG, PM_RAD_DEG, fpa->toSky->type); 739 wcs->toSky->radial = psMemIncrRefCounter (fpa->toSky->radial); 740 703 741 wcs->crval1 = fpa->toSky->R*PS_DEG_RAD; 704 742 wcs->crval2 = fpa->toSky->D*PS_DEG_RAD;
Note:
See TracChangeset
for help on using the changeset viewer.
