SUBROUTINE EQ2COE C C Convert a position specified as alpha,delta in degrees C to a pixel position on a conic-equal-area projection C super-image produced by EIS coaddition. The section C of the super-image which includes the point is also C given. C C Richard Hook, 9th December 1997 C IMPLICIT NONE INTEGER NX,NY,ISTAT,N,IXS,IYS DOUBLE PRECISION RAREF,DECREF,RPP,XPOFF,YPOFF,PIBY DOUBLE PRECISION RA,DEC,SCALE,XOUT,YOUT CHARACTER*80 CHARS PARAMETER(PIBY=3.141592653589/180.0) C Get the size of the superimage sections CALL UCLGSI('secnx',NX,ISTAT) CALL UCLGSI('secny',NY,ISTAT) C Get the reference pixel positions CALL UCLGST('raref',CHARS,ISTAT) READ(CHARS,*,IOSTAT=ISTAT) RAREF IF(ISTAT.NE.0) THEN CALL UMSPUT('! Reference RA not a valid number', : 1,0,ISTAT) GO TO 999 ENDIF RAREF=RAREF*PIBY CALL UCLGST('decref',CHARS,ISTAT) READ(CHARS,*,IOSTAT=ISTAT) DECREF IF(ISTAT.NE.0) THEN CALL UMSPUT('! Reference Dec is not a valid number', : 1,0,ISTAT) GO TO 999 ENDIF DECREF=DECREF*PIBY C and the position to be used CALL UCLGST('ra',CHARS,ISTAT) READ(CHARS,*,IOSTAT=ISTAT) RA IF(ISTAT.NE.0) THEN CALL UMSPUT('! RA is not a valid number', : 1,0,ISTAT) GO TO 999 ENDIF RA=RA*PIBY CALL UCLGST('dec',CHARS,ISTAT) READ(CHARS,*,IOSTAT=ISTAT) DEC IF(ISTAT.NE.0) THEN CALL UMSPUT('! Dec is not a valid number', : 1,0,ISTAT) GO TO 999 ENDIF DEC=DEC*PIBY C Get the output scale CALL UCLGST('outscl',CHARS,ISTAT) READ(CHARS,*,IOSTAT=ISTAT) SCALE IF(ISTAT.NE.0) THEN CALL UMSPUT('! Scale is not a valid number', : 1,0,ISTAT) GO TO 999 ENDIF C Convert from arcsecs/pix to radians/pixel RPP=SCALE/(3600.0/PIBY) C Convert the positions N=1 CALL COEPRO(RA,DEC,N,RAREF,DECREF,RPP,XOUT,YOUT) CALL UMSPUT(' RA (deg) Dec (deg) Section '// : ' X (pix) Y',1,0,ISTAT) IXS=NINT(XOUT/DBLE(NX)) IYS=NINT(YOUT/DBLE(NY)) XPOFF=IXS*NX-(NX/2) YPOFF=IYS*NY-(NY/2) WRITE(CHARS,'(2F12.6,2I5,2F12.2)') RA/PIBY,DEC/PIBY, : NINT(XOUT/DBLE(NX)),NINT(YOUT/DBLE(NY)), : XOUT-XPOFF,YOUT-YPOFF CALL UMSPUT(CHARS,1,0,ISTAT) 999 CONTINUE RETURN END