|
ocssw
1.0
|
00001 #ifndef L2BRSGEN_H /* avoid re-inclusion */ 00002 #define L2BRSGEN_H 00003 00004 #include <stdio.h> 00005 #include <string.h> 00006 #include <time.h> 00007 00008 #include "hdf.h" 00009 #include "mfhdf.h" 00010 #include "hdfhdr.h" 00011 #include "hdfmac.h" 00012 #include "usrhdr.h" 00013 #include "usrmac.h" 00014 00015 #include <clo.h> 00016 #include <readL2scan.h> 00017 #include <get_product_table.h> 00018 00019 #define VERSION "1.9" 00020 00021 #define IOERR -1 00022 #define RDERR -2 00023 #define MEMERR -3 00024 00025 #define MAXVAL 255 00026 00027 #define CHL_START (l2_data + 8*nsamp) 00028 #define CHL_END (l2_data + 9*nsamp) 00029 #define LAT_START (l2_str.latitude) 00030 #define LAT_END (l2_str.latitude + max_samp_used+1) 00031 #define LON_START (l2_str.longitude) 00032 #define LON_END (l2_str.longitude + max_samp_used+1) 00033 00034 #define MAXTILTS 20 00035 #define NFLAGS 16 00036 00037 /* Time Conversion Constants */ 00038 #define MSECHOUR 3600000 00039 #define MSECMIN 60000 00040 #define MSECSEC 1000 00041 00042 #define LONGNAME "long_name" 00043 #define RANGE "valid_range" 00044 00045 /* Global (file-level) Attributes */ 00046 /* Constants defined for attributes defined in sec.5.3.1 of product specs */ 00047 00048 #define PNAME "Product Name" 00049 #define TITLE "Title" 00050 #define LEGEND "Legend" 00051 #define TITLE_VAL " Level-2 Browse Data" 00052 #define DCENTER "Data Center" 00053 #define DCENTER_VAL "NASA/GSFC SeaWiFS Data Processing Center" 00054 #define MISSION "Mission" 00055 #define MSNCHAR "Mission Characteristics" 00056 #define SENSOR_NAME "Sensor Name" 00057 #define SENSOR "Sensor" 00058 #define SNSCHAR "Sensor Characteristics" 00059 00060 00061 #define REPLACES "Replacement Flag" 00062 #define SOFTID "Software ID" 00063 #define SOFTID_VAL "?????" 00064 #define SOFT_NAME "Software Name" 00065 #define SOFT_VER "Software Version" 00066 #define PTIME "Processing Time" 00067 #define L2BRS_INFILES "Input Files" 00068 #define PROC_CON "Processing Control" 00069 #define PROC_LOG "Processing Log" 00070 00071 /* Constants defined for attributes defined in sec.5.3.2 of product specs */ 00072 00073 #define PINFILES "Parent Input Files" 00074 #define PPNAME "Parent Product Name" 00075 #define STATION "Station Name" 00076 #define STLAT "Station Latitude" 00077 #define STLON "Station Longitude" 00078 #define DTYPE "Data Type" 00079 #define NSAMP "Parent Pixels per Scan Line" 00080 #define NREC "Parent Number of Scan Lines" 00081 #define SNCNTR "Scene Center Scan Line" 00082 #define NFREC "Filled Scan Lines" 00083 #define FFLAG1 "FF Missing Frames" 00084 #define FFLAG2 "SDPS Missing Frames" 00085 #define PCTFLAG "Flag Percentages" 00086 00087 /* Constants defined for attributes defined in sec.5.3.3 of product specs */ 00088 #define STIME "Start Time" 00089 #define ETIME "End Time" 00090 #define CTIME "Scene Center Time" 00091 #define NTIME "Node Crossing Time" 00092 #define SYEAR "Start Year" 00093 #define SDAY "Start Day" 00094 #define SMSEC "Start Millisec" 00095 #define EYEAR "End Year" 00096 #define EDAY "End Day" 00097 #define EMSEC "End Millisec" 00098 #define SNODE "Start Node" 00099 #define ENODE "End Node" 00100 #define ORBNUM "Orbit Number" 00101 #define NORAD1 "NORAD Line 1" 00102 #define NORAD2 "NORAD Line 2" 00103 00104 /* Constants defined for attributes defined in sec.5.3.4 of product specs */ 00105 #define LATUNITS "Latitude Units" 00106 #define LATUNITS_VAL "degrees North" 00107 #define LONUNITS "Longitude Units" 00108 #define LONUNITS_VAL "degrees East" 00109 #define CLAT "Scene Center Latitude" 00110 #define CLON "Scene Center Longitude" 00111 #define SCSOL_Z "Scene Center Solar Zenith" 00112 #define ULLAT "Upper Left Latitude" 00113 #define ULLON "Upper Left Longitude" 00114 #define URLAT "Upper Right Latitude" 00115 #define URLON "Upper Right Longitude" 00116 #define LLLAT "Lower Left Latitude" 00117 #define LLLON "Lower Left Longitude" 00118 #define LRLAT "Lower Right Latitude" 00119 #define LRLON "Lower Right Longitude" 00120 #define NLAT "Northernmost Latitude" 00121 #define SLAT "Southernmost Latitude" 00122 #define WLON "Westernmost Longitude" 00123 #define ELON "Easternmost Longitude" 00124 #define STCLAT "Start Center Latitude" 00125 #define STCLON "Start Center Longitude" 00126 #define ENDCLAT "End Center Latitude" 00127 #define ENDCLON "End Center Longitude" 00128 #define NODEL "Orbit Node Longitude" 00129 00130 /* Constants defined for attributes defined in sec.5.3.4 of product specs */ 00131 #define PARAM "Parameter" 00132 #define PARAM_VAL "Chlorophyll a concentration" 00133 #define UNITS "Units" 00134 #define UNITS_VAL "mg m^-3" 00135 #define PX_START "Start Pixel" 00136 #define PX_END "End Pixel" 00137 #define LAC_PX_ST "LAC Pixel Start Number" 00138 #define PX_SUBSAMP "Pixel Subsampling Rate" 00139 #define LAC_PX_SUBSAMP "LAC Pixel Subsampling" 00140 #define PX_NUM "Pixels per Scan Line" 00141 #define SC_START "Start Scan" 00142 #define SC_END "End Scan" 00143 #define SC_SUBSAMP "Scan Subsampling Rate" 00144 #define SC_NUM "Number of Scan Lines" 00145 #define PX_LL_NUM "Pixel Coordinates" 00146 #define SC_LL_NUM "Scan Coordinates" 00147 #define SC_TYPE "Scaling" 00148 #define SC_TY_VAL "logarithmic" 00149 #define SC_EQN "Scaling Equation" 00150 #define SC_EQN_VAL "Base**((Slope*brs_data) + Intercept) = chlorophyll a" 00151 #define BASE "Base" 00152 #define BASE_VAL 10.0 00153 #define SLOPE "Slope" 00154 #define SLOPE_VAL 0.015 00155 #define INTERCEPT "Intercept" 00156 #define INTERCEPT_VAL -2.0 00157 #define SCALE_OFF "Scale Offset" 00158 00159 /* Constants defined for attributes defined in sec.5.4.1 of product specs */ 00160 #define PX_LL_FIRST "px_ll_first" 00161 #define PX_LL_FST_ATTR "Lat/lon of pixels along first scan line" 00162 #define PX_LL_LAST "px_ll_last" 00163 #define PX_LL_LST_ATTR "Lat/lon of pixels along last scan line" 00164 #define SC_LL_FIRST "sc_ll_first" 00165 #define SC_LL_FST_ATTR "Lat/lon of starts of scan lines" 00166 #define SC_LL_LAST "sc_ll_last" 00167 #define SC_LL_LST_ATTR "Lat/lon of ends of scan lines" 00168 00169 /* Constants defined for attributes defined in sec.5.4.2 of product specs */ 00170 #define NTILTS "ntilts" 00171 #define NTILTS_NAME "Number of scene tilt states" 00172 #define T_FLAGS "tilt_flags" 00173 #define T_FLAGS_NAME "Tilt indicators" 00174 #define T_RANGES "tilt_ranges" 00175 #define T_RANGES_NAME "Scan-line number ranges of scene tilt states" 00176 #define T_LATS "tilt_lats" 00177 #define T_LATS_NAME "Latitudes of tilt-range scan line end points" 00178 #define T_LONS "tilt_lons" 00179 #define T_LONS_NAME "Longitudes of tilt-range scan line end points" 00180 00181 /* Constants defined for navigation data */ 00182 #define ORBVEC "orb_vec" 00183 #define ORBVEC_NAME "Orbit position vector at scan line time" 00184 #define ORBVEC_UNITS "kilometers" 00185 #define LVERT "l_vert" 00186 #define LVERT_NAME "Local vertical vector in ECEF frame" 00187 #define SUNREF "sun_ref" 00188 #define SUNREF_NAME "Reference Sun vector in ECEF frame" 00189 #define ATTANG "att_ang" 00190 #define ATTANG_NAME "Computed yaw, roll, pitch" 00191 #define SENMAT "sen_mat" 00192 #define SENMAT_NAME "ECEF-to-sensor-frame matrix" 00193 #define SCANELL "scan_ell" 00194 #define SCANELL_NAME "Scan-track ellipse coefficients" 00195 #define NFLAG "nflag" 00196 #define NFLAG_NAME "Navigation flags" 00197 #define CNTLPTCOLS "cntl_pt_cols" 00198 #define CNTLPTCOLS_NAME "Control point column values" 00199 00200 #define CNTLPTLAT "latitude" 00201 #define CNTLPTLAT_NAME "Latitude values" 00202 #define CNTLPTLON "longitude" 00203 #define CNTLPTLON_NAME "Longitude values" 00204 00205 00206 extern char ERR_MSG[1024]; 00207 00208 00209 int l2brsgen_init_options(clo_optionList_t* list); 00210 int l2brsgen_read_options(clo_optionList_t* list, int argc, char* argv[]); 00211 00212 int32 put_l2brs(char *l2brs_path, char *replaces, char *ptime, char *infiles, 00213 int32 px_start, int32 px_end, int32 px_subsamp, int32 brs_nsamp, 00214 int32 sc_start, int32 sc_end, int32 sc_subsamp, int32 brs_nrec, 00215 char *l2brs_name, float32 *l2brs_data, int32 *l2brs_flags, 00216 char *flag_names, char *mskflg, unsigned char *palette, 00217 float32 *px_ll_first, float32 *px_ll_last, float32 *sc_ll_first, 00218 float32 *sc_ll_last, char *proc_con, int16 syear, int16 sday, 00219 int32 smsec, int16 eyear, int16 eday, int32 emsec, char *dtype, 00220 int32 nrec, int32 nsamp, int32 ntilts, short *tilt_flags, 00221 int16 *tilt_ranges, int16 *cntl_pt_lat, int16 *cntl_pt_lon, 00222 meta_l2Type *meta_l2, product_table_t *ptable_rec, int32 outmode, int32 apply_pal); 00223 00224 void write_attrs(int32 sdfid, char *l2brs_path, char *replaces, char *ptime, 00225 char *infiles, int32 px_start, int32 px_end, int32 px_subsamp, 00226 int32 brs_nsamp, int32 sc_start, int32 sc_end, int32 sc_subsamp, 00227 int32 brs_nrec, char *l2brs_name, char *proc_con, int16 syear, 00228 int16 sday, int32 smsec, int16 eyear, int16 eday, int32 emsec, 00229 char *dtype, int32 nrec, int32 nsamp, meta_l2Type *meta_l2); 00230 00231 int32 write_image(char *l2brs_path, unsigned char *l2brs_data, int32 brs_nsamp, 00232 int32 brs_nrec, uint8 *palette); 00233 00234 int32 write_SDS(int32 sdfid, char *label, int32 ntype, int32 rank, 00235 int32 *dimsizes, int32 *start, void *buf); 00236 00237 int32 write_tilt_sets(int32 fid, int32 sdfid, int32 ntilts, int16 *tilt_flags, 00238 int16 *tilt_ranges); 00239 00240 int32 write_nav_sets(int32 fid, int32 sdfid, int32 brs_nrec, int32 brs_nsamp, 00241 int16 *cntl_pt_lat, int16 *cntl_pt_lon); 00242 00243 00244 #endif /* L2BRSGEN_H */
1.7.6.1