/////////////////////////////////////////////////////////////////////////// // NAME: ABI_ADP.h // FUNCTION: head file for ABI_ADP.cpp. // DESCRIPTION: interface for the Class_ABI_ADP class. // REFERENCE: none // CALLING SEQUENCE: none // INPUTS: none // OUTPUTS: none // DEPENDENCIES: none // RESTRICTIONS: none // HISTORY: none ////////////////////////////////////////////////////////////////////////// #if !defined(AFX_ABI_ADP_H__3641CC40_B9AE_4230_B913_BAE4560B27B3__INCLUDED_) #define AFX_ABI_ADP_H__3641CC40_B9AE_4230_B913_BAE4560B27B3__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "ABI_GranuleData.h" /* this structure holds the information read from configure file. */ typedef struct STRUCT_ABI_ADP_CONFIG { char MODIS_data_folder[STRMAX]; char output_ADP_folder[STRMAX]; }STRUCT_ABI_ADP_CONFIG; class Class_ABI_ADP { public: Class_ABI_ADP(); virtual ~Class_ABI_ADP(); void ProcessADP(char* configFname); private: /* Initiate the ABI smoke and dust detection */ void process2kmADP(ABI_GranuleData& gd, int32 swid, char *ADP_SDname, int32 output_lines, int outputFileType); /* Produce output for ABI smoke and dust detection */ void create_ADP_file(char *ADPfile, int outputFileType, ABI_GranuleData& gd); /* Read input configuration file */ void read_ABI_ADP_configFile(char * configFname); /* Read ABI Scan line input data */ void readABIScanData(int32 fid_input, char *sds_name,int32 *start, int32 *edge,void *pBuffer); /* calculate mean and standard deviation for a pindex_xel */ int calculateStdDev( float32 *pdata, int index_x, int index_y, int NX_size, int NY_size, int boxSize,float *mean_value, float *StdDev_value); /* Compute the standard deviation of spatial varibility of reflectance for smoke and dust detection */ void spatialMeanStd(ABI_GranuleData& gd); /* smoke detection over ocean */ void smokeMaskingOcean(STRUCT_ABI_DATA *pABIData, int32 index2KM, uint8 &mask,uint8 &mask_c); /* dust detection over ocean */ void dustMaskingOcean(STRUCT_ABI_DATA *pABIData, int32 index2KM, uint8 &mask,uint8 &mask_db,uint8 &mask_c); /* snow/ice masking over land */ void snowMaskingLand(STRUCT_ABI_DATA *pABIData, int32 index2KM, float32 *absCorRefl, uint8 &mask); /* smoke detection over land */ void smokeMaskingLand(STRUCT_ABI_DATA *pABIData, int32 index2KM, uint8 &mask,uint8 &mask_ism,uint8 &mask_c); /* dust detection over land */ void dustMaskingLand(STRUCT_ABI_DATA *pABIData, int32 index2KM, uint8 &mask,uint8 &mask_ism,uint8 &mask_db,uint8 &mask_c); /* Compute STD of reflectanc or BT on N by N pindex_xels (usually sliding window is 3 by 3 pindex_xels) */ void sliding_mean_StdDev_of_scan(int NX_size,int NY_size, int boxsize, float32 *data, float32 *meandata, float32 *stddata); int m_count_fitRefl4; int m_skipLines; STRUCT_ABI_ADP_CONFIG m_Config; }; #endif // !defined(AFX_ABI_ADP_H__3641CC40_B9AE_4230_B913_BAE4560B27B3__INCLUDED_)