⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msg_header.~h

📁 HRIT读取,用于在LINUX下显示高束数据图像
💻 ~H
字号:
//-----------------------------------------------------------------------------#ifndef __MSG_HEADER_H__#define __MSG_HEADER_H__#include <string>typedef enum {  MSG_HEADER_PRIMARY                     = 0,  MSG_HEADER_IMAGE_STRUCTURE             = 1,  MSG_HEADER_IMAGE_NAVIGATION            = 2,  MSG_HEADER_IMAGE_DATA_FUNCTION         = 3,  MSG_HEADER_ANNOTATION                  = 4,  MSG_HEADER_TIMESTAMP                   = 5,  MSG_HEADER_ANCILLARY_TEXT              = 6,  MSG_HEADER_KEY                         = 7,  MSG_HEADER_RESERVED                    = 8,  MSG_HEADER_SEGMENT_IDENTIFICATION      = 128,  MSG_HEADER_IMAGE_SEGMENT_LINE_QUALITY  = 129,  MSG_HEADER_MISSION_RESERVED_FUTURE_USE = 130,  MSG_HEADER_IMAGE_DATETIME              = 131,  MSG_HEADER_IMAGE_QUALITY               = 132} t_enum_MSG_headertype;#define MSG_HEADER_PRIMARY_LEN     16#define MSG_IMAGE_STRUCTURE_LEN     9#define MSG_IMAGE_NAVIGATION_LEN   51#define MSG_ANNOTATION_LEN         64#define MSG_TIMESTAMP_LEN          10    #define MSG_KEY_LEN                12#define MSG_SEGMENT_ID_LEN         13class stTextInfo{
public:
	unsigned char  	 Header_Type;
	unsigned short 	 Header_Record_Length;
	unsigned char* 	 szText;
    bool 			 bValid;
public:
	stTextInfo();
    ~stTextInfo();
    bool Assign(unsigned char *ptr);
};
//---------------------------------------------------------------------------
struct stPrimaryHeader
{
public:
	unsigned char  	Header_Type;			// = 0;
	unsigned short 	Header_Record_Length;   // = 0x10;
	unsigned char  	File_Type_Code;         // 0:	image data file;
											// 1:	GTS Message(not used);
											// 2:	alphanumeric text file;
    										// 3:	encryption key message;
	unsigned int   	Total_Header_Length;
	__int64 		Data_Field_Length;
    bool 			bValid;
public:
    stPrimaryHeader(){ Header_Type = 0; bValid = false; }
	bool Assign(unsigned char *ptr);
};
struct stImageStruct
{
public:
	unsigned char  	Header_Type;           	// = 1;
	unsigned short 	Header_Record_Length;  	// = 9;
	unsigned char   NB;                 	// number of bits per pixel;
	unsigned short  NC;              		// number of columns;
	unsigned short  NL;                		// number of lines;
	unsigned char   Compression_Flag;      	// 0: 	no compression
											// 1: 	lossless compression
											// 2: 	lossy compression
	bool 			 bValid;
public:
	stImageStruct(){ Header_Type = 1; bValid = false; }
    bool Assign(unsigned char *ptr);
};
struct stImageNavigation
{
public:
	unsigned char  	Header_Type;           // = 2;
	unsigned short 	Header_Record_Length;  // = 0X33;
	unsigned char	Projection_Name[32];   // projection names;
	unsigned int    CFAC;                  // column scaling factor as;
	unsigned int   	LFAC;                  // line scaling factor as defined;
	unsigned int   	COFF;                  // column offset;
	unsigned int   	LOFF;                  // line offset;
    bool 			bValid;
public:
    stImageNavegation(){ Header_Type = 2; bValid = false; }
    bool Assign(unsigned char *ptr);
};
struct stImageDataFunction : public stTextInfo
{
	stImageDataFunction(){ Header_Type = 3; bValid = false; }
};
struct stAnnotation : public stTextInfo
{
	stAnnotation(){ Header_Type = 4; bValid = false; }
};
struct stTimeStamp
{
public:
	unsigned char  	Header_Type;           // = 5;
	unsigned short 	Header_Record_Length;  // = 0x0A;
	unsigned char	CDS_P_Field;		   // = 0x40;
	unsigned short  CDS_T_Field_day;	   // counter of days starting from 1958-1-1;
	unsigned int    CDS_T_Field_ms;        // milliseconds of day;
    bool 			bValid;
public:
	stTimeStamp(){ Header_Type = 5; bValid = false; }
    bool Assign(unsigned char *ptr);
};
struct stAncillaryText : public stTextInfo
{
	stAncillaryText(){ Header_Type = 6; bValid = false; }
};
struct stKeyHeader
{
public:
	unsigned char  	Header_Type;            // = 7;
	unsigned short 	Header_Record_Length;   // = 7;
	unsigned int	Key_Number;				// index of the used MGK;
    bool 			bValid;
public:
    stKeyHeader(){ Header_Type = 7; bValid = false; }
    bool Assign(unsigned char *ptr);
};
struct stImageSegmentID
{
public:
	unsigned char  	Header_Type;            // = 128;
	unsigned short 	Header_Record_Length;   // = 7;
	unsigned char   Image_Segm_Seq_No;      // image segment sequence number
	unsigned char   Total_No_Image_Segm;    // total number of image segments
	unsigned short  Line_No_Image_Segm;     // line number of the imagen segment
    bool 			bValid;
public:
	stImageSegmentID(){ Header_Type = 0x80; bValid = false; }
    bool Assign(unsigned char *ptr);
};
struct stEncryptionKeyMsgHeader
{
public:
	unsigned char  	Header_Type;            // = 129;
	unsigned short 	Header_Record_Length;   // = 5;
	unsigned short	Station_Number;			// index of the used station;
    bool 			bValid;
public:
    stEncryptionKeyMsgHeader(){ Header_Type = 0x81; bValid = false; }
	bool Assign(unsigned char *ptr);
};
struct stImageCompensationInfo : public stTextInfo
{
	stImageCompensationInfo(){ Header_Type = 0x82; bValid = false; }
};
struct stImageObserveTime : public stTextInfo
{
	stImageObserveTime(){ Header_Type = 0x83; bValid = false; }
};
struct stImageQualityInfo : public stTextInfo
{
	stImageQualityInfo(){ Header_Type = 0x84; bValid = false; }
};
//===========================================================================
class THritFile
{
public:
    struct stPrimaryHeader				m_PrimaryHeader;
    struct stImageStruct 				m_ImageStruct;
    struct stImageNavigation			m_ImageNavigation;
    struct stImageDataFunction			m_ImageDataFunction;
    struct stAnnotation 				m_Annotation;
    struct stTimeStamp 					m_TimeStamp;
    struct stAncillaryText				m_AncillaryText;
    struct stKeyHeader					m_KeyHeader;
    struct stImageSegmentID				m_ImageSegmentID;
    struct stEncryptionKeyMsgHeader		m_EncryptionKeyMsgHeader;
    struct stImageCompensationInfo		m_ImageCompensationInfo;
    struct stImageObserveTime			m_ImageObserveTime;
    struct stImageQualityInfo			m_ImageQualityInfo;
public:
    unsigned char szFileName[256];
    unsigned char *data;
    unsigned long dwBufSize;
public:
    THritFile();
    THritFile(char *fs);
    ~THritFile();
    void SetFileName(unsigned char *fs);
    void GetHeaderInfo(unsigned char *ptr, int len);
    void GetHeaderInfo();
    void SaveHeadStructToFile(char *fs); 
    unsigned char *ReadDataField(unsigned long& nReadBytes);
}; /*数据类型 字节 数取值范围char 1 -128到126
unsigned char 1 0到255
short 2 -32,768到32,767
unsigned short 2 0到65,535
long 4 -2,147,483,648到2,147,483,648
unsigned long 4 0到4,294,967,295
int 4 同long
unsigned int 4 同unsigned long
float 4 1.2E-38到3.4E381
double 8 2.2E-308到1.8E3082
bool 1 true或false
 */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -