ISCE_INSAR/components/stdproc/alosreformat/include/image_sio.h

165 lines
4.2 KiB
C

/* taken from soi.h */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <math.h>
#include <time.h>
#define SOL 299792458.0
#define PI 3.1415926535897932
#define PI2 6.2831853071795864
#define I2MAX 32767.0
#define I2SCALE 4.e6
#define TRUE 1
#define FALSE 0
#define RW 0666
#define MULT_FACT 1000.0
#define sgn(A) ((A) >= 0.0 ? 1.0 : -1.0)
#define clipi2(A) ( ((A) > I2MAX) ? I2MAX : (((A) < -I2MAX) ? -I2MAX : A) )
#define nint(x) (int)rint(x)
#define ERS1 1
#define ERS2 2
#define RSAT 3
#define ENVS 4
#define ALOS 5
#define EXIT_FLAG 1
#define paka(p) {perror((p)); exit(EXIT_FLAG);}
#define MALLOC(p,s) if (((p) = malloc(s)) == NULL) {paka("error: malloc() ");}
#define NULL_DATA 15
#define NULL_INT -99999
#define NULL_DOUBLE -99999.9999
#define NULL_CHAR "XXXXXXXX"
typedef struct SCOMPLEX {short r,i;} scomplex;
typedef struct FCOMPLEX {float r,i;} fcomplex;
typedef struct DCOMPLEX {double r,i;} dcomplex;
struct PRM {
char input_file[256];
char SLC_file[256];
char out_amp_file[256];
char out_data_file[256];
char deskew[8];
char iqflip[8];
char offset_video[8];
char srm[8];
char ref_file[128];
char led_file[128];
char orbdir[8]; /* orbit direction A or D (ASCEND or DESCEND) - added by RJM*/
char dtype[8]; /* SLC data type a-SCOMPLEX integer complex, c-FCOMPLEX float complex */
char date[16]; /* yymmdd format - skip first two digits of year - added by RJM*/
int debug_flag;
int bytes_per_line;
int good_bytes;
int first_line;
int num_patches;
int first_sample;
int num_valid_az;
int st_rng_bin;
int num_rng_bins;
int chirp_ext;
int nlooks;
int rshift;
int ashift;
int fdc_ystrt;
int fdc_strt;
int rec_start;
int rec_stop;
int SC_identity; /* (1)-ERS1 (2)-ERS2 (3)-Radarsat (4)-Envisat (5)-ALOS */
int ref_identity; /* (1)-ERS1 (2)-ERS2 (3)-Radarsat (4)-Envisat (5)-ALOS */
int nrows;
int num_lines;
int SLC_format; /* 1 => complex ints (2 bytes) 2 => complex floats (4 bytes) */
double SC_clock_start; /* YYDDD.DDDD */
double SC_clock_stop; /* YYDDD.DDDD */
double icu_start; /* onboard clock counter */
double ref_clock_start;
double ref_clock_stop;
double caltone;
double RE; /*local earth eadius */
double rc; /* polar radius */
double ra; /* equatorial radius */
double vel; /* Equivalent SC velocity */
double ht; /* (SC_radius - RE) center */
double ht_start; /* (SC_radius - RE) start */
double ht_end; /* (SC_radius - RE) end */
double near_range;
double far_range;
double prf;
double xmi;
double xmq;
double az_res;
double fs;
double chirp_slope;
double pulsedur;
double lambda;
double rhww;
double pctbw;
double pctbwaz;
double fd1;
double fdd1;
double fddd1;
double delr; /* added RJM */
double yaw; /* added RJM 12/07*/
double sub_int_r;
double sub_int_a;
double sub_double;
double stretch_r;
double stretch_a;
double a_stretch_r;
double a_stretch_a;
double baseline_start;
double baseline_end;
double alpha_start;
double alpha_end;
double bpara; /* parallel baseline - added by RJM */
double bperp; /* perpendicular baseline - added by RJM */
};
/*
offset_video off_vid
chirp_ext nextend
-------------------------------
scnd_rng_mig srm
Flip_iq iqflip
reference_file ref_file
rng_spec_wgt rhww
rm_rng_band pctbw
rm_az_band pctbwaz
rng_samp_rate fs
good_bytes_per_line good_bytes
earth_radius RE
SC_vel vel
SC_height ht
SC_height_start ht_start
SC_height_end ht_end
PRF prf
I_mean xmi
Q_mean xmq
pulse_dur pulsedur
radar_wavelength lambda
rng_spec_wgt rhww
*/
int verbose; /* controls minimal level of output */
int debug; /* more output */
int roi; /* more output */
int swap; /* whether to swap bytes */
int quad_pol; /* quad polarization data */
int ALOS_format; /* AUIG: ALOS_format = 0 */
/* ERSDAC: ALOS_format = 1 */
int force_slope; /* whether to set the slope */
int dopp; /* whether to calculate doppler */
int quiet_flag; /* reduce output */
int SAR_mode; /* 0 => high-res */
/* 1 => wide obs */
/* 2 => polarimetry */
/* from ALOS Product Format 3-2 */
double forced_slope; /* value to set chirp_slope to */
double tbias; /* time bias for bad orbit data */