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.
105 lines
4.6 KiB
C++
105 lines
4.6 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
//文件: Gxf格式回写类
|
|
//主要功能:
|
|
// 转换GeoMap Gxf的明码格式
|
|
//
|
|
//
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
#include ".\geomapbase.h"
|
|
#include <list>
|
|
|
|
namespace NFormatReader
|
|
{
|
|
namespace NGeoMapReader
|
|
{
|
|
class GXFElementCollection;
|
|
class CGeoMapGxfWriter : public CGeoMapBase
|
|
{
|
|
public:
|
|
CGeoMapGxfWriter(void);
|
|
virtual ~CGeoMapGxfWriter(void);
|
|
public:
|
|
list<GXFElementCollection> elementList;
|
|
public:
|
|
BOOL WriteGxf(const char * const outFilePath); // 文件路径
|
|
int WritePaper(GxfMap * paper); // 纸张大小
|
|
int WriteMap(GxfMap * map); // 映射关心
|
|
int WriteProjection(GMProjection * projection); // 投影计算
|
|
int WriteTransform(GxfTransform * transform); // 比例转换
|
|
int WriteLayer(GxfLayer * layer); // 层
|
|
int WriteText(GxfText * text); // 文本/文字
|
|
int WriteSymbol(GxfSymbol * symbol); // 符号
|
|
int WriteRect(GxfRect * rect); // 矩形框
|
|
int WriteBmp(GxfBmp * bmp, BYTE* pBmpBuffer); // 位图
|
|
int WriteMeta(GxfMeta * bmp, BYTE* pBmpBuffer); // 源文件
|
|
int WriteLog(GxfLog * log, BYTE* pBmpBuffer); // 测井曲线
|
|
int WriteSeissection(GxfSeisSection * section,BYTE * pBmpBuffer);// 地震剖面
|
|
int WritePolygon(GxfPolygon * polygon, DPoint* pt); // 面
|
|
int WritePolyline(GMPolyline * polyline, DPoint * pt); // 多边形线
|
|
int WriteContour(GxfIsoline * contour, DPoint * pt); // 等值线
|
|
int WriteFault(GMFault * fault, DPoint * pt); // 断层
|
|
int WriteRoundRect(GxfRect* rectangle); // 圆角矩形
|
|
int WritePie(GxfPie * pie); // 饼形图
|
|
int WriteEllipse(GxfPie * ellipse); // 椭圆
|
|
int WriteSeisLine(GxfSeisLine * seisline, DPoint3 * dt); // 地震测线
|
|
int WriteFrame(GxfFrame * frame); // 图框
|
|
int WriteLegend(GxfLegend* legend); // 图例
|
|
int WriteTown(GxfReside * town); // 地名
|
|
int WriteScale(GxfScale * scale); // 刻度
|
|
int WriteWell(GxfWell * well); // 井位
|
|
int WriteElement(); // 回写图元函数
|
|
public:
|
|
int AddPaperElement(GxfMap * paper); // 填充纸张
|
|
int AddMapElement(GxfMap * map); // 填充映射
|
|
int AddProjectionElement(GMProjection * projection); // 填充投影
|
|
int AddTransformElement(GxfTransform * transform); // 填充转换
|
|
int AddLayerElement(GxfLayer * layer); // 填充层
|
|
int AddTextElement(GxfText * text); // 填充文本
|
|
int AddSymbolElement(GxfSymbol * symbol); // 填充符号
|
|
int AddRectElement(GxfRect * rect); // 填充矩形
|
|
int AddBmpElement(GxfBmp * bmp,BYTE * pBmpBuffer); // 填充位图
|
|
int AddMetaElement(GxfMeta * meta,BYTE * pMetaBuffer); // 填充元文件
|
|
int AddLogElement(GxfLog * log,BYTE * pLogBuffer); // 填充测井曲线
|
|
int AddSeissectionElement(GxfSeisSection * section,BYTE * pSectionBuffer);// 填充地震剖面
|
|
int AddPolygonElement(GxfPolygon * polygon,DPoint * pDt); // 填充多边形
|
|
int AddPolylineElement(GMPolyline * polyline,DPoint * pDt); // 填充折线
|
|
int AddContourElement(GxfIsoline * contour,DPoint * pDt); // 填充等值线
|
|
int AddFaultElement(GMFault * fault,DPoint * pDt); // 填充断层
|
|
int AddRoundRectElement(GxfRect * roundRect); // 填充圆角矩形
|
|
int AddPieElement(GxfPie * pie); // 填充饼图
|
|
int AddEllipseElement(GxfPie * ellipse); // 填充椭圆
|
|
int AddSeisLineElement(GxfSeisLine * seisline,DPoint3 * pDp3); // 填充测线
|
|
int AddFrameElement(GxfFrame * frame); // 填充图框
|
|
int AddLegendElement(GxfLegend * legend); // 填充图例框
|
|
int AddTownElement(GxfReside * town); // 填充地名
|
|
int AddScaleElement(GxfScale * scale); // 填充刻度
|
|
int AddWellElement(GxfWell * well); // 填充井位
|
|
protected:
|
|
char floatStr[1024]{};
|
|
char * ConvertColorToHex(GColor clor,char * buf); // 颜色转十六进制
|
|
char * IntToFloat(int i); // Int 转 Float
|
|
char * FTS(double &v); // Float 转 string
|
|
char * IntToString(int i); // Int 转 string
|
|
int WriteStringElem(const char * str, int isMar = 1); // string写
|
|
int WriteName(const char* str, int isMar = 0); // 写名称
|
|
int WriteSymbolID(int nID, int isMar = 0); // 写符号ID
|
|
|
|
FILE *m_file = nullptr;
|
|
};
|
|
class GXFElementCollection
|
|
{
|
|
public:
|
|
char *elementName = nullptr; // 图元名称
|
|
void * pEleBody = nullptr; // 图元属性体
|
|
IPoint * pt = nullptr; // 图元数据体
|
|
DPoint * dt = nullptr; // 图元数据体
|
|
DPoint3 * dp3 = nullptr; // 图元数据体
|
|
double * labelData = nullptr; // 图元标注点数据
|
|
BYTE* pBmpBuffer = nullptr; // 图元数据体
|
|
};
|
|
};
|
|
};
|
|
using namespace NGeoMapReader; |