/////////////////////////////////////////////////////////////////////////// // NAME: ADP_IO.h // FUNCTION: Head file // DESCRIPTION: Head file for program ADP_IO.cpp // REFERENCE: none // CALLING SEQUENCE: none // INPUTS: none // OUTPUTS: none // DEPENDENCIES: none // RESTRICTIONS: none // HISTORY: none ////////////////////////////////////////////////////////////////////////// #if !defined(AOT_UTILITY_H__0A092C32_D496_4624_BCE5_98A2D0870DE2__INCLUDED_) #define AOT_UTILITY_H__0A092C32_D496_4624_BCE5_98A2D0870DE2__INCLUDED_ #include #include #include #include #include "hdf.h" #include "mfhdf.h" #include "HdfEosDef.h" #include "sdr.h" #include "Config.h" #include "MemoryManager.h" #ifndef PI #define PI 3.1415927 /* Pi */ #endif /* PI may be declared in the HDF includes */ #ifndef STRMAX #define STRMAX 256 #endif #define GRTORAD 0.01745329252 #define MISSING_F9999 -9999.0F #define VERBOSE 2 #define SCALE_AOT_RESULT 1 #define SCANLINESINBUFFER 144 //36 //2016 #define ID_LAND 0 #define ID_WATER 1 /* Structure Definitions */ typedef struct STRUCT_BUFFER { int32 linepos; // start line in dataset int32 nlines; // valid lines int buffer int32 max_lines; //max lines in buffer int32 PxielsPerLine; // pixels per line; int32 npix; // total pixels int buffer int32 SDSMaxLines; // maximium lines of the SDS int32 start2d[2]; /* Start Position Array 2D */ int32 start3d[3]; /* Start Position Array 3D */ int32 edge2d[2]; /* End Position Array 2D */ int32 edge3d[3]; /* End Position Array 3D */ }STRUCT_BUFFER; typedef struct STRUCT_HDF_SDS { int32 sds_id; //id for HDF SDS char sds_name[STRMAX]; //name of HDF SDS int32 scaled; //flag, indicating if the SDS is scaled float scale, offset; //scale and offset when SDS is scaled int32 missing; //missing value when SDS is scaled int32 dimensions; //dimensions of SDS ( = 2 or 3) int32 dataType; //data type if scaled ;//DFNT_UINT16 or DFNT_INT16 STRUCT_BUFFER *pBuffer; //pointer to structure which defines the buffer size }STRUCT_HDF_SDS; typedef struct STRUCT_ADP { uint8 *aerosol; //Aerosol Flag (1 - yes, 0- no) uint8 *smoke; //smoke (1-yes,0-no) uint8 *dust; //dust Flag ((1-yes,0-no) uint8 *dust_db; //deep-blue dust Flag ((1-yes,0-no) }STRUCT_ADP; typedef struct STRUCT_QUALTYDATA { char *Byte1; char *Byte2; char *Byte3; char *Byte4; char *Byte5; }STRUCT_QUALITYDATA; // byte 1 is quality flag // Byte 2-5 are for product quality information //test// void processError(char *task, char *object); void HDF_SDreadData(int32 sdid,char *sds_name,int32 *start, int32 *stride, int32 *dims,VOIDP data); int32 HDF_SDstart(char * filename, int32 mode); void HDF_SDreadattr(int32 fid,int32 att_index, VOIDP pAttr); //--------------- void getScaledData(void *data, int npix,float scale, float offset, int32 missing); void scaleFloattoInt16(void *data, int npix,float scale, float offset, int32 missing); void HDF_SDreadfield(STRUCT_HDF_SDS *pSDS,VOIDP data); void HDF_SDwritefield(STRUCT_HDF_SDS *pSDS,VOIDP data); //--------------- void HDF_SWreadfield(int32 swid,char *sds_name,int32 *start, int32 *stride, int32 *edge,VOIDP data); void HDF_SWwritefield(int32 swid,char *sds_name,int32 *start, int32 *stride, int32 *edge,VOIDP data); void HDF_SWwritefield_scale(int32 swid,char *sds_name,STRUCT_SCALE *pScale, int32 *start,int32 *stride,int32 *edge,VOIDP data); void HDF_SWdetach(int32 swid); void HDF_SWdefdim(int32 swid, char *dim_name, int dim_size); int32 HDF_SWattach(int32 fid, char *sw_name); void HDF_SWclose(int32 fid); void HDF_SWdefdatafield(int32 swid, char *fieldname, char *dimnames, int32 type, int32 merge_mode, STRUCT_SCALE *pScale); void HDF_SWdefdatafield(int32 swid, char *fieldname, char *dimnames, int32 type, int32 merge_mode); int32 HDF_SWcreate(int32 fid, char * sw_name); int32 HDF_SWopen(char *filename, int32 mode); int32 HDF_SWattrinfo(int32 swid, char *AttrName, int32 *pType, int32 *pCount); int int16tof32calread(int32 swid, char *field, int32 plane, int32 type, int32 linepos, int32 nlines, int32 npix, int32 PxielsPerLine, float32 *farr); void logStatus(char *task, time_t *time_StepBegin); void InitBuffer(STRUCT_BUFFER *pBF, int32 nlines, int32 PxielsPerLine, int32 SDSMaxLines); void setBuffer(int iBlock, STRUCT_BUFFER *pBF); void HDF_readScaledSDR(int swid,char * sds_name, int32 bandInSDS, float *pData, STRUCT_BUFFER *pBF); int getTagValue(char *pstring, char *tag,char *strValue); char * getTextFileContent(char * fname); void getOrbitSwathSize(char *sdrfile, int32 &width, int32 &height); void getFirstSwathName(char * file_name, char *swath_name); char *findParameter(char *pParmFileContent, char *keyword); void getIntParmValue(char *pParmFileContent, VOIDP paramValue, char *keyword, int32 words); void getParmValue(char *pParmFileContent, VOIDP paramValue, char *keyword, int32 words); void getParmValuesInStructure(char *pParmFileContent, VOIDP paramValue, char *keyword, int32 words,int sizeOfstructure,int DataType); void getParmValue(char *pParmFileContent, VOIDP paramValue,char *keyword, int32 size_dim1, int32 size_dim2); void open_SDR_swath(char *sdrfile, int32 &fid, int32 &swid); void HDF_SWwrite_Scale_Offset(int32 swid,char *sds_name,float scale, float offset, int32 missing); int HDF_SWread_Scale_Offset(int32 swid,char *sds_name,float &scale, float &offset, int32 &missing); void HDF_SWreadfield_scale(int32 swid,char *sds_name,int32 *start, int32 *stride,int32 *edge,VOIDP data); void HDF_SDwritefield_scale(int32 sdid,STRUCT_SCALE *pScale,int32 *start, int32 *stride,int32 *edge,VOIDP data); void HDF_SDwritefield(int32 sdid,int32 *start,int32 *stride,int32 *edge, VOIDP data); void HDF_setSDSattributes(int32 fid, char *SDname, char *field_names, STRUCT_SCALE *pScale); void HDF_setSDSattributes(int32 fid, char *SDname, char *field_names); void getReflRangeBycount(float64 *Refl, int NPoints, double countPercent1, double countPercent2, float64 &lowR, float64 &upperR); #endif //! defined(AOT_UTILITY_H__0A092C32_D496_4624_BCE5_98A2D0870DE2__INCLUDED_)