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

📄 msg_header.cpp

📁 HRIT读取,用于在LINUX下显示高束数据图像
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    uint    pos, len;
    long    nhi;
    unsigned long   nReadBytes;
    GetHeaderInfo();
    pos = m_PrimaryHeader.Total_Header_Length;
    len = m_PrimaryHeader.Data_Field_Length;

    if(dwBufSize<len)
    {
        if(data!=NULL) delete data;
        data = new unsigned char[len];
        if(data!=NULL) dwBufSize = len;
        else dwBufSize = 0;
    }
    if(data!=NULL)
    {
    	hFile = CreateFile(szFileName, GENERIC_READ, 0, NULL,
						   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    	if(hFile!=INVALID_HANDLE_VALUE)
        {
            nReadBytes = 0;
            nhi = 0;
            SetFilePointer(hFile, pos, &nhi, FILE_BEGIN);
            ReadFile(hFile, data, len, &nReadBytes, NULL);
            CloseHandle(hFile);
        }
      
        hFile=CreateFile(fs,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    	if(hFile!=INVALID_HANDLE_VALUE)
        {
            nReadBytes = 0;
            nhi = 0;
            SetFilePointer(hFile, pos, &nhi, FILE_BEGIN);
            WriteFile(hFile, data, len, &nReadBytes, NULL);
            CloseHandle(hFile);
        }
    }
 }

 */
//---------------------------------------------------------------------------
void THritFile::SaveHeadStructToFile(char *fs)
{
    char *s0[] =
    {
        "Header_Type = %d\r\n",
        "Header_Record_Length = %d\r\n",
        "File_Type_Code = %d\r\n",
        "Total_Header_Length = %d\r\n",
        "Data_Field_Length = %d\r\n"
    };
    char *s1[] =
    {
        "Header_Type = %d\r\n",
        "Header_Record_Length = %d\r\n",
        "NB = %d\r\n",
        "NC = %d\r\n",
        "NL = %d\r\n",
        "Compression_Flag = %d\r\n"
    };
    char *s2[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "Projection_Name[32] = %s\r\n",
        "CFAC = %d\r\n",
        "LFAC = %d\r\n",
        "COFF = %d\r\n",
        "LOFF = %d\r\n"
    };
    char *s3[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "ImageDataFunction: \r\n%s\r\n"
    };
    char *s4[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "Annotation: = %s\r\n"
    };
    char *s5[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "CDS_P_Field = %d\r\n",
        "CDS_T_Field_day = %d\r\n",
        "CDS_T_Field_ms = %d\r\n"
    };
    char *s6[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "AncillaryText: \r\n%s\r\n"
    };
    char *s7[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "Key_Number = %d\r\n",
    };
    char *s80[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "Image_Segm_Seq_No = %d\r\n",
        "Total_No_Image_Segm = %d\r\n",
        "Line_No_Image_Segm = %d\r\n"
    };
    char *s81[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "Station_Number = %d\r\n"
    };
    char *s82[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "ImageCompensationInfo: \r\n%s\r\n"
    };
    char *s83[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "stImageObserveTime: \r\n%s\r\n"
    };
    char *s84[] =
    {
        "Header_Type = %d\r\n",
        "Header_Recrd_Length = %d\r\n",
        "ImageQualityInfo: \r\n%s\r\n"
    };
    char *ss[] =
    {
        "Primary Header:\r\n\r\n",
        "Image Structure:\r\n\r\n",
        "Image Navigation:\r\n\r\n",
        "Image Data Function:\r\n\r\n",
        "Annotation:\r\n\r\n",
        "Time Stamp:\r\n\r\n",
        "Ancillary Text:\r\n\r\n",
        "Key Header:\r\n\r\n",
        "Image Segment Identification:\r\n\r\n",
        "Encryption key Message Header:\r\n\r\n",
        "Image Compensation Information Header:\r\n\r\n",
        "Image Observation Time Header:\r\n\r\n",
        "Image Quality Information Header:\r\n\r\n"
    };
    char *s_ = "------------------------------------------------\r\n";

    FILE *fp = fopen(fs, "wb");
    int i = 0;
    if(fp!=NULL)
    {
        if(m_PrimaryHeader.bValid)
        {
            fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s0[0], m_PrimaryHeader.Header_Type);
            fprintf(fp, s0[1], m_PrimaryHeader.Header_Record_Length);
            fprintf(fp, s0[2], m_PrimaryHeader.File_Type_Code);
            fprintf(fp, s0[3], m_PrimaryHeader.Total_Header_Length);
            fprintf(fp, s0[4], m_PrimaryHeader.Data_Field_Length);
        }
        i++;
        if(m_ImageStruct.bValid)
        {
        	fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s1[0], m_ImageStruct.Header_Type);
            fprintf(fp, s1[1], m_ImageStruct.Header_Record_Length);
            fprintf(fp, s1[2], m_ImageStruct.NB);
            fprintf(fp, s1[3], m_ImageStruct.NC);
            fprintf(fp, s1[4], m_ImageStruct.NL);
            fprintf(fp, s1[5], m_ImageStruct.Compression_Flag);
        }
        i++;
        if(m_ImageNavigation.bValid)
        {
            fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s2[0], m_ImageNavigation.Header_Type);
            fprintf(fp, s2[1], m_ImageNavigation.Header_Record_Length);
            fprintf(fp, s2[2], m_ImageNavigation.Projection_Name);
            fprintf(fp, s2[3], m_ImageNavigation.CFAC);
            fprintf(fp, s2[4], m_ImageNavigation.LFAC);
            fprintf(fp, s2[5], m_ImageNavigation.COFF);
            fprintf(fp, s2[6], m_ImageNavigation.LOFF);
        }
        i++;
        if(m_ImageDataFunction.bValid)
        {
            fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s3[0], m_ImageDataFunction.Header_Type);
            fprintf(fp, s3[1], m_ImageDataFunction.Header_Record_Length);
            fprintf(fp, s3[2], m_ImageDataFunction.szText);
        }
        i++;
        if(m_Annotation.bValid)
        {
            fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s4[0], m_Annotation.Header_Type);
            fprintf(fp, s4[1], m_Annotation.Header_Record_Length);
            fprintf(fp, s4[2], m_Annotation.szText);
        }
        i++;
        if(m_TimeStamp.bValid)
        {
            fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s5[0], m_TimeStamp.Header_Type);
            fprintf(fp, s5[1], m_TimeStamp.Header_Record_Length);
            fprintf(fp, s5[2], m_TimeStamp.CDS_P_Field);
            fprintf(fp, s5[3], m_TimeStamp.CDS_T_Field_day);
            fprintf(fp, s5[4], m_TimeStamp.CDS_T_Field_ms);
        }
        i++;
        if(m_AncillaryText.bValid)
        {
        	fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s6[0], m_AncillaryText.Header_Type);
            fprintf(fp, s6[1], m_AncillaryText.Header_Record_Length);
            fprintf(fp, s6[2], m_AncillaryText.szText);
        }
        i++;
        if(m_KeyHeader.bValid)
        {
        	fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s7[0], m_KeyHeader.Header_Type);
            fprintf(fp, s7[1], m_KeyHeader.Header_Record_Length);
            fprintf(fp, s7[2], m_KeyHeader.Key_Number);
        }
        i++;
        if(m_ImageSegmentID.bValid)
        {
            fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s80[0], m_ImageSegmentID.Header_Type);
            fprintf(fp, s80[1], m_ImageSegmentID.Header_Record_Length);
            fprintf(fp, s80[2], m_ImageSegmentID.Image_Segm_Seq_No);
            fprintf(fp, s80[3], m_ImageSegmentID.Total_No_Image_Segm);
            fprintf(fp, s80[4], m_ImageSegmentID.Line_No_Image_Segm);
        }
        i++;
        if(m_EncryptionKeyMsgHeader.bValid)
        {
            fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s81[0], m_EncryptionKeyMsgHeader.Header_Type);
            fprintf(fp, s81[1], m_EncryptionKeyMsgHeader.Header_Record_Length);
            fprintf(fp, s81[2], m_EncryptionKeyMsgHeader.Station_Number);
        }
        i++;
        if(m_ImageCompensationInfo.bValid)
        {
            fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s82[0], m_ImageCompensationInfo.Header_Type);
            fprintf(fp, s82[1], m_ImageCompensationInfo.Header_Record_Length);
            fprintf(fp, s82[2], m_ImageCompensationInfo.szText);
        }
        i++;
        if(m_ImageObserveTime.bValid)
        {
            fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s83[0], m_ImageObserveTime.Header_Type);
            fprintf(fp, s83[1], m_ImageObserveTime.Header_Record_Length);
            fprintf(fp, s83[2], m_ImageObserveTime.szText);
        }
        i++;
        if(m_ImageQualityInfo.bValid)
        {
        	fprintf(fp, s_);
            fprintf(fp, ss[i]);
            fprintf(fp, s84[0], m_ImageQualityInfo.Header_Type);
            fprintf(fp, s84[1], m_ImageQualityInfo.Header_Record_Length);
            fprintf(fp, s84[2], m_ImageQualityInfo.szText);
            fprintf(fp, s_);
        }
        fclose(fp);
    }
}

⌨️ 快捷键说明

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