diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2017-12-13 20:44:09 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2017-12-13 20:44:09 (GMT) |
commit | 8746e94c7ffb4d319cc81b4b8d69875fd96d1fdd (patch) | |
tree | 5662a3e88810c2031d51af59f751397d07d934cd /tksao | |
parent | 5c4867ac19f9aa6eb9958eed97e30339398a3c6d (diff) | |
download | blt-8746e94c7ffb4d319cc81b4b8d69875fd96d1fdd.zip blt-8746e94c7ffb4d319cc81b4b8d69875fd96d1fdd.tar.gz blt-8746e94c7ffb4d319cc81b4b8d69875fd96d1fdd.tar.bz2 |
upgrade AST
Diffstat (limited to 'tksao')
-rw-r--r-- | tksao/frame/base.C | 4 | ||||
-rw-r--r-- | tksao/frame/fitsimage.C | 137 | ||||
-rw-r--r-- | tksao/frame/fitsimage.h | 4 | ||||
-rw-r--r-- | tksao/frame/fitsmap.C | 4 | ||||
-rw-r--r-- | tksao/frame/grid25d.C | 3 | ||||
-rw-r--r-- | tksao/frame/grid2d.C | 3 | ||||
-rw-r--r-- | tksao/frame/grid3d.C | 3 |
7 files changed, 56 insertions, 102 deletions
diff --git a/tksao/frame/base.C b/tksao/frame/base.C index 858d7f0..e09a8a7 100644 --- a/tksao/frame/base.C +++ b/tksao/frame/base.C @@ -649,11 +649,11 @@ Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2, astClearStatus; // just to make sure astBegin; // start memory management - fits1->setWCSSystem(sys1); + fits1->setWCSSkyFrame(sys1, sky); AstFrameSet* wcs1 = fits1->wcsCopy(); astInvert(wcs1); - fits2->setWCSSystem(sys2); + fits2->setWCSSkyFrame(sys2, sky); AstFrameSet* wcs2 = fits2->wcsCopy(); astInvert(wcs2); diff --git a/tksao/frame/fitsimage.C b/tksao/frame/fitsimage.C index 15c9c51..123e559 100644 --- a/tksao/frame/fitsimage.C +++ b/tksao/frame/fitsimage.C @@ -1666,12 +1666,10 @@ void FitsImage::match(const char* xxname1, const char* yyname1, Vector* ptr1 =NULL; if (sky1 != sky2) { - setWCSSystem(sys1); - setWCSSkyFrame(sky1); + setWCSSkyFrame(sys1, sky1); AstFrameSet* wcs1 = wcsCopy(); - setWCSSystem(sys2); - setWCSSkyFrame(sky2); + setWCSSkyFrame(sys2, sky2); AstFrameSet* wcs2 = wcsCopy(); AstFrameSet* cvt = (AstFrameSet*)astConvert(wcs1, wcs2, "SKY"); @@ -1685,8 +1683,7 @@ void FitsImage::match(const char* xxname1, const char* yyname1, // now compare if (ptr1 && ptr2) { - setWCSSystem(sys2); - setWCSSkyFrame(sky2); + setWCSSkyFrame(sys2, sky2); Tcl_Obj* objrr = Tcl_NewListObj(0,NULL); for(int jj=0; jj<nxx2; jj++) { for (int ii=0; ii<nxx1; ii++) { @@ -2958,7 +2955,7 @@ double FitsImage::getWCSPixelSize(Coord::CoordSystem sys) return 0; astClearStatus; // just to make sure - setWCSSystem(sys); + setWCSSkyFrame(sys, Coord::FK5); Vector in[3]; Vector out[3]; @@ -2977,7 +2974,7 @@ double FitsImage::getWCSPixelArea(Coord::CoordSystem sys) return 0; astClearStatus; // just to make sure - setWCSSystem(sys); + setWCSSkyFrame(sys, Coord::FK5); Vector in[3]; Vector out[3]; @@ -3031,8 +3028,7 @@ Coord::Orientation FitsImage::getWCSOrientation(Coord::CoordSystem sys, return Coord::NORMAL; astClearStatus; // just to make sure - setWCSSystem(sys); - setWCSSkyFrame(sky); + setWCSSkyFrame(sys, sky); Vector in[3]; Vector out[3]; @@ -3084,8 +3080,7 @@ double FitsImage::getWCSRotation(Coord::CoordSystem sys, Coord::SkyFrame sky) return 0; astClearStatus; // just to make sure - setWCSSystem(sys); - setWCSSkyFrame(sky); + setWCSSkyFrame(sys, sky); Vector in[2]; Vector out[2]; @@ -3154,8 +3149,7 @@ Vector FitsImage::pix2wcs(const Vector& in, Coord::CoordSystem sys, if (!hasWCS(sys)) return Vector(); - setWCSSystem(sys); - setWCSSkyFrame(sky); + setWCSSkyFrame(sys, sky); Vector out = wcsTran(in, 1); if (astOK && checkWCS(out)) @@ -3233,8 +3227,7 @@ char* FitsImage::pix2wcs(const Vector& in, Coord::CoordSystem sys, if (!hasWCS(sys)) return lbuf; - setWCSSystem(sys); - setWCSSkyFrame(sky); + setWCSSkyFrame(sys, sky); ostringstream str; Vector out = wcsTran(in, 1); @@ -3291,8 +3284,7 @@ Vector3d FitsImage::pix2wcs(const Vector3d& in, Coord::CoordSystem sys, if (!hasWCS(sys)) return Vector(); - setWCSSystem(sys); - setWCSSkyFrame(sky); + setWCSSkyFrame(sys, sky); Vector3d out = wcsTran(in, 1); if (astOK && checkWCS(out)) @@ -3311,8 +3303,7 @@ char* FitsImage::pix2wcs(const Vector3d& in, Coord::CoordSystem sys, if (!hasWCS(sys)) return lbuf; - setWCSSystem(sys); - setWCSSkyFrame(sky); + setWCSSkyFrame(sys, sky); ostringstream str; Vector3d out = wcsTran(in, 1); @@ -3385,8 +3376,7 @@ Vector FitsImage::wcs2pix(const Vector& vv, Coord::CoordSystem sys, astClearStatus; // just to make sure if (hasWCS(sys)) { - setWCSSystem(sys); - setWCSSkyFrame(sky); + setWCSSkyFrame(sys, sky); Vector in = hasWCSCel(sys) ? degToRad(vv) : vv; Vector out = wcsTran(in, 0); @@ -3404,8 +3394,7 @@ Vector3d FitsImage::wcs2pix(const Vector3d& vv, Coord::CoordSystem sys, astClearStatus; // just to make sure if (hasWCS(sys)) { - setWCSSystem(sys); - setWCSSkyFrame(sky); + setWCSSkyFrame(sys, sky); Vector3d in = hasWCSCel(sys) ? degToRad(vv) : vv; Vector3d out = wcsTran(in, 0); @@ -3439,7 +3428,7 @@ double FitsImage::getWCSDist(const Vector& vv1, const Vector& vv2, return 0; astClearStatus; // just to make sure - setWCSSystem(sys); + setWCSSkyFrame(sys, Coord::FK5); return hasWCSCel(sys) ? radToDeg(wcsDistance(degToRad(vv1), degToRad(vv2))) : @@ -3916,8 +3905,6 @@ void FitsImage::setWCSSkyFrame(AstFrameSet* ast, Coord::SkyFrame sky) if (!wcsIsASkyFrame(ast)) return; - // is it already set? - // ast is very slow when changing system,equinox const char* str = astGetC(ast, "System"); // TLON/XLON and HPX will do this @@ -3969,21 +3956,46 @@ void FitsImage::setWCSSkyFrame(AstFrameSet* ast, Coord::SkyFrame sky) return; } } + #else -void FitsImage::setWCSSkyFrame(Coord::SkyFrame sky) + +void FitsImage::setWCSSkyFrame(Coord::CoordSystem sys, Coord::SkyFrame sky) { - // is sky frame - if (!wcsIsASkyFrame()) + int nn = astGetI(ast_,"nframe"); + char cc = ' '; + int ww = sys-Coord::WCS; + switch (sys) { + case Coord::DATA: + case Coord::IMAGE: + case Coord::PHYSICAL: + case Coord::AMPLIFIER: + case Coord::DETECTOR: + // this should not happen return; + default: + if (ww) + cc = ww+'@'; + } - // is it already set? - // ast is very slow when changing system,equinox - const char* str = astGetC(ast_, "System"); + int found=0; + for (int ss=0; ss<nn; ss++) { + const char* id = astGetC(astGetFrame(ast_,ss+1),"Ident"); + if (cc == id[0]) { + astSetI(ast_,"Current",ss+1); + found =1; + break; + } + } - // TLON/XLON and HPX will do this - if (!strncmp(str,"Unknown",3)) + // did we find it? + if (!found) + return; + + // is equatorial system? + if (!hasWCSEqu(sys)) return; - + + const char* str = astGetC(ast_, "System"); switch (sky) { case Coord::FK4_NO_E: if (!strncmp(str,"FK4-NO-E",8)) @@ -4031,64 +4043,11 @@ void FitsImage::setWCSSkyFrame(Coord::SkyFrame sky) } #endif -#ifdef NEWWCS -void FitsImage::setWCSSystem(Coord::CoordSystem sys) -{ - int nn = astGetI(ast_,"nframe"); - char cc = ' '; - int ww = sys-Coord::WCS; - switch (sys) { - case Coord::DATA: - case Coord::IMAGE: - case Coord::PHYSICAL: - case Coord::AMPLIFIER: - case Coord::DETECTOR: - // this should not happen - return; - default: - if (ww) - cc = ww+'@'; - } - - for (int ss=0; ss<nn; ss++) { - const char* id = astGetC(astGetFrame(ast_,ss+1),"Ident"); - if (cc == id[0]) { - astSetI(ast_,"Current",ss+1); - break; - } - } -} -#endif - #ifndef NEWWCS int FitsImage::wcsIsASkyFrame(AstFrameSet* ast) { return astIsASkyFrame(astGetFrame(ast,AST__CURRENT)); } -#else -int FitsImage::wcsIsASkyFrame() -{ - astClearStatus; - astBegin; - - int rr =0; - int naxes = astGetI(ast_,"Naxes"); - switch (naxes) { - case 1: - break; - case 2: - rr = astIsASkyFrame(astGetFrame(ast_,AST__CURRENT)); - case 3: - case 4: - rr = strstr((char*)astGetC(ast_,"Domain"),"SKY") ? 1 : 0; - default: - break; - } - - astEnd; - - return rr; -} #endif #ifndef NEWWCS diff --git a/tksao/frame/fitsimage.h b/tksao/frame/fitsimage.h index 03ed620..9352791 100644 --- a/tksao/frame/fitsimage.h +++ b/tksao/frame/fitsimage.h @@ -431,9 +431,7 @@ class FitsImage { double wcsAngle(const Vector&, const Vector&, const Vector&); double wcsAxAngle(const Vector&, const Vector&); - int wcsIsASkyFrame(); - void setWCSSystem(Coord::CoordSystem); - void setWCSSkyFrame(Coord::SkyFrame); + void setWCSSkyFrame(Coord::CoordSystem, Coord::SkyFrame); void setWCSFormat(int, const char*); double getWCSPixelSize(Coord::CoordSystem); diff --git a/tksao/frame/fitsmap.C b/tksao/frame/fitsmap.C index 7e00b23..069abd6 100644 --- a/tksao/frame/fitsmap.C +++ b/tksao/frame/fitsmap.C @@ -208,7 +208,7 @@ double FitsImage::mapLenFromRef(double dd, Coord::CoordSystem sys, if (!hasWCS(sys)) return 0; - setWCSSystem(sys); + setWCSSkyFrame(sys, Coord::FK5); Vector in[2]; Vector out[2]; @@ -309,7 +309,7 @@ double FitsImage::mapLenToRef(double dd, Coord::CoordSystem sys, return 0; astClearStatus; // just to make sure - setWCSSystem(sys); + setWCSSkyFrame(sys, Coord::FK5); double rdd = dd; if (hasWCSCel(sys)) { diff --git a/tksao/frame/grid25d.C b/tksao/frame/grid25d.C index 76238ff..841333b 100644 --- a/tksao/frame/grid25d.C +++ b/tksao/frame/grid25d.C @@ -63,8 +63,7 @@ int Grid25d::doit(RenderMode rm) AstFrameSet* ast = (AstFrameSet*)astCopy(fits->getAST(system_)); fits->setWCSSkyFrame(ast, sky_); #else - fits->setWCSSystem(system_); - fits->setWCSSkyFrame(sky_); + fits->setWCSSkyFrame(system_, sky_); AstFrameSet* ast = fits->wcsCopy(); int naxes = astGetI(ast,"Naxes"); diff --git a/tksao/frame/grid2d.C b/tksao/frame/grid2d.C index b787b87..4e5f456 100644 --- a/tksao/frame/grid2d.C +++ b/tksao/frame/grid2d.C @@ -63,8 +63,7 @@ int Grid2d::doit(RenderMode rm) AstFrameSet* ast = (AstFrameSet*)astCopy(fits->getAST(system_)); fits->setWCSSkyFrame(ast, sky_); #else - fits->setWCSSystem(system_); - fits->setWCSSkyFrame(sky_); + fits->setWCSSkyFrame(system_, sky_); AstFrameSet* ast = fits->wcsCopy(); int naxes = astGetI(ast,"Naxes"); diff --git a/tksao/frame/grid3d.C b/tksao/frame/grid3d.C index f482cb7..ae23bcd 100644 --- a/tksao/frame/grid3d.C +++ b/tksao/frame/grid3d.C @@ -108,8 +108,7 @@ int Grid3d::doit(RenderMode rm) ast = astFrameSet(cmpwcsbase,""); astAddFrame(ast, AST__CURRENT, cmpwcsmap, cmpwcscurr); #else - fits->setWCSSystem(system_); - fits->setWCSSkyFrame(sky_); + fits->setWCSSkyFrame(system_, sky_); AstFrameSet* ast = fits->wcsCopy(); int naxes = astGetI(ast,"Naxes"); |