Added option for tracked or stationary imaging
parent
554efa71a3
commit
1137e0d236
19
jpg2fits.c
19
jpg2fits.c
|
@ -12,7 +12,7 @@ struct image {
|
|||
float *z;
|
||||
double mjd;
|
||||
char nfd[32],observer[32];
|
||||
int cospar;
|
||||
int cospar,tracked;
|
||||
float exptime;
|
||||
};
|
||||
struct image read_jpg(char *filename);
|
||||
|
@ -130,12 +130,16 @@ int main(int argc,char *argv[])
|
|||
int cospar=0;
|
||||
char observer[32]="Cees Bassa";
|
||||
float exptime=10.06;
|
||||
int flag=0,nbin=1,readfits=0;
|
||||
int flag=0,nbin=1,readfits=0,tracked=0;
|
||||
|
||||
// Decode options
|
||||
if (argc>1) {
|
||||
while ((arg=getopt(argc,argv,"i:t:o:d:Z:c:T:O:b:hF"))!=-1) {
|
||||
while ((arg=getopt(argc,argv,"i:t:o:d:Z:c:T:O:b:hFs"))!=-1) {
|
||||
switch(arg) {
|
||||
|
||||
case 's':
|
||||
tracked=1;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
strcpy(infile,optarg);
|
||||
|
@ -207,6 +211,12 @@ int main(int argc,char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
// Set tracked flag
|
||||
if (tracked==1)
|
||||
img.tracked=1;
|
||||
else
|
||||
img.tracked=0;
|
||||
|
||||
if (nfd!=NULL) {
|
||||
// Compute time
|
||||
mjd=nfd2mjd(nfd);
|
||||
|
@ -377,6 +387,9 @@ void write_fits(struct image img,char *filename)
|
|||
qfits_header_add(qh,"EXPTIME",val," ",NULL);
|
||||
sprintf(val,"%s",img.observer);
|
||||
qfits_header_add(qh,"OBSERVER",val," ",NULL);
|
||||
sprintf(val,"%d",img.tracked);
|
||||
qfits_header_add(qh,"TRACKED",val," ",NULL);
|
||||
|
||||
|
||||
// Dump fitsheader
|
||||
// qfits_header_dump(qh,stdout);
|
||||
|
|
91
measure.c
91
measure.c
|
@ -28,7 +28,7 @@ struct image {
|
|||
float exptime;
|
||||
double mjd;
|
||||
char nfd[32],filename[32];
|
||||
int cospar;
|
||||
int cospar,tracked;
|
||||
} ;
|
||||
struct catalog {
|
||||
int n;
|
||||
|
@ -47,6 +47,9 @@ struct observation {
|
|||
float x[3],y[3];
|
||||
int state;
|
||||
};
|
||||
struct aperture {
|
||||
float x,y,r1,r2;
|
||||
};
|
||||
struct image read_fits(char *filename,int pnum);
|
||||
int fgetline(FILE *file,char *s,int lim);
|
||||
int select_nearest(struct catalog c,float x,float y);
|
||||
|
@ -358,6 +361,50 @@ void write_observation(struct observation obs)
|
|||
return;
|
||||
}
|
||||
|
||||
void aperture_photometry(struct image img,struct aperture ap)
|
||||
{
|
||||
int i,j,k,n1,n2;
|
||||
float s1,ss1,s2,ss2;
|
||||
float dx,dy,x,y,r;
|
||||
float f1,f2;
|
||||
double mjd;
|
||||
|
||||
mjd=img.mjd+0.5*(double) img.exptime/86400.0;
|
||||
|
||||
s1=0.0;
|
||||
ss1=0.0;
|
||||
s2=0.0;
|
||||
ss2=0.0;
|
||||
n1=0;
|
||||
n2=0;
|
||||
|
||||
for (i=0;i<img.naxis1;i++) {
|
||||
x=(float) i;
|
||||
for (j=0;j<img.naxis2;j++) {
|
||||
k=i+img.naxis1*j;
|
||||
y=(float) j;
|
||||
dx=x-ap.x;
|
||||
dy=y-ap.y;
|
||||
r=sqrt(dx*dx+dy*dy);
|
||||
if (r<ap.r1) {
|
||||
s1+=img.z[k];
|
||||
ss1+=img.z[k]*img.z[k];
|
||||
n1++;
|
||||
} else if (r>=ap.r1 && r<ap.r2) {
|
||||
s2+=img.z[k];
|
||||
ss2+=img.z[k]*img.z[k];
|
||||
n2++;
|
||||
}
|
||||
}
|
||||
}
|
||||
f1=s1/(float) n1;
|
||||
f2=s2/(float) n2;
|
||||
|
||||
printf("%lf %8.3f %8.3f %.0f %d %.0f %d %f\n",mjd,ap.x,ap.y,s1,n1,s2,n2,f1-f2);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Reduce point
|
||||
void reduce_point(struct observation *obs,struct image img,float tmid,float x,float y)
|
||||
{
|
||||
|
@ -375,10 +422,12 @@ void reduce_point(struct observation *obs,struct image img,float tmid,float x,fl
|
|||
reverse(img.ra0,img.de0,rx,ry,&ra,&de);
|
||||
|
||||
// Correct for stationary camera
|
||||
mjd1=img.mjd+0.5*(double) img.exptime/86400.0;
|
||||
mjd2=img.mjd+(double) tmid/86400.0;
|
||||
ra+=gmst(mjd2)-gmst(mjd1);
|
||||
|
||||
if (img.tracked==0) {
|
||||
mjd1=img.mjd+0.5*(double) img.exptime/86400.0;
|
||||
mjd2=img.mjd+(double) tmid/86400.0;
|
||||
ra+=gmst(mjd2)-gmst(mjd1);
|
||||
}
|
||||
|
||||
dec2sex(ra/15.0,sra,0);
|
||||
dec2sex(de,sde,1);
|
||||
|
||||
|
@ -492,7 +541,8 @@ int main(int argc,char *argv[])
|
|||
float fx=0.5,fy=0.333;
|
||||
int ix=0,iy=0,istar;
|
||||
struct image *img;
|
||||
|
||||
struct aperture ap;
|
||||
|
||||
// Environment variables
|
||||
env=getenv("ST_DATADIR");
|
||||
|
||||
|
@ -545,6 +595,12 @@ int main(int argc,char *argv[])
|
|||
ymin=0.0;
|
||||
ymax=img[0].naxis2;
|
||||
|
||||
// Default aperture
|
||||
ap.x=0.0;
|
||||
ap.y=0.0;
|
||||
ap.r1=5.0;
|
||||
ap.r2=10.0;
|
||||
|
||||
// Forever loop
|
||||
for (;;) {
|
||||
if (redraw!=0) {
|
||||
|
@ -613,6 +669,14 @@ int main(int argc,char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
// Plot aperture
|
||||
if (ap.x>0.0 && ap.y>0.0) {
|
||||
cpgsci(3);
|
||||
cpgcirc(ap.x,ap.y,ap.r1);
|
||||
cpgcirc(ap.x,ap.y,ap.r2);
|
||||
cpgsci(1);
|
||||
}
|
||||
|
||||
redraw=0;
|
||||
}
|
||||
|
||||
|
@ -824,6 +888,15 @@ int main(int argc,char *argv[])
|
|||
continue;
|
||||
}
|
||||
|
||||
// Aperture photometry
|
||||
if (c=='g') {
|
||||
ap.x=x;
|
||||
ap.y=y;
|
||||
aperture_photometry(img[iimg],ap);
|
||||
redraw=1;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Help
|
||||
if (c=='h') {
|
||||
printf("q Quit\n");
|
||||
|
@ -888,6 +961,12 @@ struct image read_fits(char *filename,int pnum)
|
|||
// COSPAR ID
|
||||
img.cospar=atoi(qfits_query_hdr(filename,"COSPAR"));
|
||||
|
||||
// Tracked
|
||||
if (qfits_query_hdr(filename,"TRACKED")!=NULL)
|
||||
img.tracked=atoi(qfits_query_hdr(filename,"TRACKED"));
|
||||
else
|
||||
img.tracked=0;
|
||||
|
||||
// Transformation
|
||||
img.ra0=atof(qfits_query_hdr(filename,"CRVAL1"));
|
||||
img.de0=atof(qfits_query_hdr(filename,"CRVAL2"));
|
||||
|
|
11
satid.c
11
satid.c
|
@ -37,7 +37,7 @@ struct image {
|
|||
double mjd;
|
||||
float *dt,exptime;
|
||||
char nfd[32];
|
||||
int cospar;
|
||||
int cospar,tracked;
|
||||
};
|
||||
struct sat {
|
||||
long Isat;
|
||||
|
@ -153,7 +153,8 @@ void plot_satellites(char *tlefile,struct image img,long satno,double mjd0,float
|
|||
s=apparent_position(mjd);
|
||||
|
||||
// Adjust for stationary camera
|
||||
s.ra+=gmst(img.mjd+0.5*img.exptime/86400.0)-gmst(mjd);
|
||||
if (img.tracked==0)
|
||||
s.ra+=gmst(img.mjd+0.5*img.exptime/86400.0)-gmst(mjd);
|
||||
|
||||
// Convert to rx,ry
|
||||
r=acos(sin(img.de0*D2R)*sin(s.de*D2R)+cos(img.de0*D2R)*cos(s.de*D2R)*cos((img.ra0-s.ra)*D2R))*R2D;
|
||||
|
@ -373,6 +374,12 @@ struct image read_fits(char *filename)
|
|||
// COSPAR ID
|
||||
img.cospar=atoi(qfits_query_hdr(filename,"COSPAR"));
|
||||
|
||||
// Tracked
|
||||
if (qfits_query_hdr(filename,"TRACKED")!=NULL)
|
||||
img.tracked=atoi(qfits_query_hdr(filename,"TRACKED"));
|
||||
else
|
||||
img.tracked=0;
|
||||
|
||||
// Transformation
|
||||
img.ra0=atof(qfits_query_hdr(filename,"CRVAL1"));
|
||||
img.de0=atof(qfits_query_hdr(filename,"CRVAL2"));
|
||||
|
|
Loading…
Reference in New Issue