You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.2 KiB
C++
98 lines
3.2 KiB
C++
#pragma once
|
|
#include "GeoMapBase.h"
|
|
#include "GeoMapGdbWriter.h"
|
|
|
|
namespace NFormatReader
|
|
{
|
|
namespace NGeoMapReader
|
|
{
|
|
|
|
class CCoordinateConvertor;
|
|
|
|
/* @brief GeoMap图件Reader */
|
|
class CGeoMapReader : public CGeoMapBase
|
|
{
|
|
public:
|
|
CGeoMapReader(void);
|
|
~CGeoMapReader(void);
|
|
|
|
public:
|
|
// 分析读取图件数据(图件名称)
|
|
int Read(LPCTSTR fname);
|
|
|
|
// 分析读取图层数据(数据开始位置,数据字节长度)
|
|
int ReadLayer (int start, int len);
|
|
int ReadElement (int start, int &elementLen, GMElementID eid); //读取元素
|
|
|
|
// 分析读取图元数据
|
|
int ELE_Symbol (int start, int &DataLen); // 符号
|
|
int ELE_Text (int start, int &DataLen); // 文本
|
|
int ELE_Legend (int start, int &DataLen); // 图例框
|
|
int ELE_Scale (int start, int &DataLen); // 比例尺
|
|
GMAxis ELE_Axis (int start, int &DataLen); // 刻度轴
|
|
int ELE_Compass (int start, int &DataLen); // 方向标淂v
|
|
int ELE_Well (int start, int &DataLen); // 井位
|
|
int ELE_Reside (int start, int &DataLen); // 地名
|
|
int ELE_Frame (int start, int &DataLen); // 图框
|
|
GMGrid ELE_Grid (int start, int &DataLen); // 直角网格
|
|
int ELE_Rectangle(int start,int &DataLen); // 矩形/圆角矩形/线段
|
|
int ELE_Pie (int start, int &DataLen); // 饼/椭圆
|
|
int ELE_Polyline(int start, int &DataLen); // 折线
|
|
int ELE_Fault (int start, int &DataLen); //断层线
|
|
int ELE_Isoline (int start, int &DataLen); // 等值线
|
|
int ELE_Polygon (int start, int &DataLen); // 面(多边形)
|
|
|
|
int ELE_SeisLine (int start, int &DataLen); // 地震测线
|
|
int ELE_SeisSection (int start, int &DataLen); // 地震剖面
|
|
int ELE_SeisArea (int start, int &DataLen); // 地震工区
|
|
int ELE_Lithology (int start, int &DataLen); // 岩性剖面
|
|
GMLog ELE_Log (int start, int &DataLen); // 测井曲线
|
|
int ELE_WellText (int start, int &DataLen); // 井旁文字
|
|
int ELE_WellLog (int start, int &DataLen); // 井旁曲线
|
|
int ELE_WellMarker (int start, int &DataLen); // 井旁标记de
|
|
int ELE_Compound (int start, int &DataLen); // 组合图元
|
|
int ELE_Custom (int start, int &DataLen); // 自定义图元
|
|
|
|
int ELE_Graphy (int start, int &DataLen); // 统计图
|
|
int ELE_Triagonal (int start, int &DataLen); // 三角图
|
|
|
|
int ELE_Bmp (int start, int &DataLen); // BMP位图
|
|
int ELE_Metafile (int start, int &DataLen); // WMF/EMF元文件
|
|
|
|
int ELE_OilWaterCol (int start, int &DataLen); // 油水柱子
|
|
int ELE_DataCross (int start, int &DataLen); // 数据十字
|
|
int ELE_String (int start, int &DataLen); // 文字
|
|
int ELE_String(GMText& text, int start, int &DataLen); // 文字
|
|
|
|
CString GetElementTypeString(GMElementID nID);
|
|
|
|
protected:
|
|
CFile m_fr; // 当前文件对象
|
|
CString m_FileName; // 当前文件名称
|
|
FILE * m_FILE = nullptr;
|
|
int m_CurPos = 0; // 当前文件位置
|
|
char m_Buffer[256]{}; // 读取缓冲区
|
|
int m_iCurLayer = 0; // 分析的当前图层序号
|
|
|
|
char m_Magic[12]{}; // 文件标志
|
|
BYTE m_Major{ 0 }; // 文件主版本号
|
|
BYTE m_Minor{ 0 }; // 文件次版本号
|
|
|
|
int m_WidthMM = 0;
|
|
int m_HeightMM = 0; // 图纸宽度、高度(单位为毫米)
|
|
COLORREF m_BkColor; // 背景颜色
|
|
|
|
int m_nLayer = 0; // 图层数
|
|
int m_nElement = 0; // 当前图层的图元个数
|
|
GMElementID m_GdbElement{}; // 当前图元类型
|
|
CRect m_Mbr; // 当前图元的MBR
|
|
|
|
GMFileHead m_fileHead; // 图件属性
|
|
GMLayerHead m_layerHead; // 当前图层属性
|
|
|
|
GMLayerIndex m_GdbLayerIndex[100]{};// 图层位置索引(图层数小于100)
|
|
};
|
|
|
|
};
|
|
};
|