|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD>: <20><>ʽת<CABD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
// <09><>ȡGDBX<42><58>ʽ
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2024-11-14
|
|
|
|
|
|
//
|
|
|
|
|
|
//
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include ".\otherformat.h"
|
|
|
|
|
|
#include ".\EmbellishBaseLib.h"
|
|
|
|
|
|
#include "afxcoll.h"
|
|
|
|
|
|
#include "..\Layer.h"
|
|
|
|
|
|
#include "..\Xy.h"
|
|
|
|
|
|
#include "..\Utils.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "..\GdbxDefine.h"
|
|
|
|
|
|
#include "ProjectionLib/Projection.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace NFormatReader
|
|
|
|
|
|
{
|
|
|
|
|
|
class CGdbxFile :
|
|
|
|
|
|
public CEmbellishBaseLib
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
CGdbxFile(void);
|
|
|
|
|
|
virtual ~CGdbxFile(void);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
int Read(CFile& fr, short ver = -1); //XML<4D>ļ<EFBFBD><C4BC><EFBFBD>д
|
|
|
|
|
|
int Read(LPCTSTR lpszPathName, short ver = -1);
|
|
|
|
|
|
|
|
|
|
|
|
int SetMapUnit(int gm_unit);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
int ReadData(CFile& fr, short ver = -1); //XML<4D>ļ<EFBFBD><C4BC><EFBFBD>д(<28><>ϸ<EFBFBD>ֶ<EFBFBD>)
|
|
|
|
|
|
int ReadCoordSys(CFile& fr, short ver, void* pXmlParse); //ͶӰ
|
|
|
|
|
|
int ReadMapInfoHead(CFile& fr, short ver, void* pXmlParse); //<2F><>ͼ<EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
int ReadMeasure(CFile& fr, short ver, void* pXmlParse); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>;<EFBFBD><CDBE><EFBFBD>
|
|
|
|
|
|
int ReadSectionSymbols(CFile& fr, short ver); //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ReadSectionLayers(CFile& fr, short ver = -1); //ͼ<><CDBC>·<EFBFBD><C2B7>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int ReadRectInfo(void* pXmlParse, GDBXRectInfo * info); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
int ReadSectionLayersName(const CString &str); //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ReadCustomTool(void* pXmlParse, GDBXCustomTool * info); //<2F><><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
int ReadRectangle(void* pXmlParse, GDBXCustomTool * info); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
int ReadEllipse(void* pXmlParse, GDBXCustomTool * info); //<2F><>Բ<EFBFBD><D4B2>Ϣ<EFBFBD><CFA2>Բ<EFBFBD><D4B2>
|
|
|
|
|
|
int ReadPolyline(void* pXmlParse, GDBXCustomTool * info); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
int ReadPolygon(void* pXmlParse, GDBXCustomTool * info); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
int ReadIsoFault(void* pXmlParse, GDBXCustomTool * info); //<2F>ϲ<EFBFBD><CFB2><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int ReadLayers(void* pXmlParse, GDBXLayers * info); //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ReadLayer(void* pXmlParse, GDBXLayerInfo * info); //<2F><>ǰͼ<C7B0><CDBC><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
int ReadLayerInfo(void* pXmlParse, GDBXLayerInfo * info); //<2F><>ǰͼ<C7B0><CDBC><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
|
|
|
|
|
|
int ReadGridInfo(void* pXmlParse, GDBXLLGridInfo * info); //<2F><>ǰͼ<C7B0><CDBC><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ReadText(void* pXmlParse, GDBXTextInfo * info); //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ReadText(void* pXmlParse, GDBXAnchor * info); //
|
|
|
|
|
|
int ReadText(void* pXmlParse, GDBXGMFONT * info); //
|
|
|
|
|
|
int ReadLableOffset(void* pXmlParse, GDBXLableOffset * info);
|
|
|
|
|
|
|
|
|
|
|
|
int ReadScale(void* pXmlParse, GDBXScaleInfo * info); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int ReadImage(void* pXmlParse, GDBXImageInfo * info); //ͼƬ<CDBC><C6AC>gif<69>ȣ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int ReadInserMap(void *pXmlParse, GDBXInserMapInfo *info); //ͼ<><CDBC>GDBX<42>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int ReadWell(void* pXmlParse, GDBXWellInfo * info); //<2F><><EFBFBD>ž<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int ReadTown(void* pXmlParse, GDBXRectInfo * info); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ReadAnchorT(void* pXmlParse, GDBXRectInfo * info); //
|
|
|
|
|
|
|
|
|
|
|
|
int ReadFontInfo(void* pXmlParse, GDBXFontInfo * info); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
int ReadFillInfoModify(void* pXmlParse, GDBXFillInfo * info); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int ReadSegments(void* pXmlParse, GDBXSegments * info); //<2F>߶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ReadSegMemoryBlock(CFile& fr, void* pXmlParse, GDBXMemoryBlock * info); //<2F>߶<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(base64 ѹ<><D1B9>)
|
|
|
|
|
|
|
|
|
|
|
|
vector<GDBXLINETO> ReadBigPts(const GDBXSegments &info); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|
|
|
|
|
vector<GDBXLINETO> ReadMemoryBlock(const GDBXMemoryBlock &info);
|
|
|
|
|
|
|
|
|
|
|
|
int ReadOilWater(void* pXmlParse, GDBXOilWaterInfo * info); //<2F><>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ReadOilWaterGroup(void* pXmlParse, GDBXOilWaterGroupInfo * info); //
|
|
|
|
|
|
|
|
|
|
|
|
int InitMapInfo(const GDBXMapInfo &info);
|
|
|
|
|
|
int InitProjection(const GDBXProjection &pro);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void *DrawGDBXRectF(const GDBXCustomTool &rInfo, const GDBXFillInfo &info); //<2F><><EFBFBD>Ʒ<EFBFBD><C6B7>ž<EFBFBD><C5BE><EFBFBD>
|
|
|
|
|
|
void *DrawGDBXEllipseF(const GDBXCustomTool &eInfo, const GDBXFillInfo &info); //<2F><><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>Բ Բ Բ<><D4B2><EFBFBD><EFBFBD>
|
|
|
|
|
|
void *DrawGDBXPolylineF(const GDBXCustomTool &pInfo, const GDBXFillInfo &info, //<2F><><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
const GDBXSegments &sInfo, const GDBXMemoryBlock &mInfo);
|
|
|
|
|
|
void *DrawGDBXPolygonF(const GDBXCustomTool &pInfo, const GDBXFillInfo &info, //<2F><><EFBFBD>Ʒ<EFBFBD><C6B7>Ŷ<EFBFBD><C5B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
const GDBXSegments &sInfo, const GDBXMemoryBlock &mInfo);
|
|
|
|
|
|
|
|
|
|
|
|
int DrawGDBXRect(const GDBXCustomTool &rInfo, const GDBXFillInfo &info, //<2F><><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD>
|
|
|
|
|
|
const GDBXLayerInfo &lInfo);
|
|
|
|
|
|
int DrawGDBXEllipse(const GDBXCustomTool &eInfo, const GDBXFillInfo &info, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ Բ Բ<><D4B2><EFBFBD><EFBFBD>
|
|
|
|
|
|
const GDBXLayerInfo &lInfo);
|
|
|
|
|
|
int DrawGDBXPolyline(const GDBXCustomTool &pInfo, const GDBXFillInfo &info, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
const GDBXSegments &sInfo, const GDBXMemoryBlock &mInfo, const GDBXLayerInfo &lInfo);
|
|
|
|
|
|
int DrawGDBXPolygon(const GDBXCustomTool &pInfo, const GDBXFillInfo &info, //<2F><><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
const GDBXSegments &sInfo, const GDBXMemoryBlock &mInfo, const GDBXLayerInfo &lInfo);
|
|
|
|
|
|
int DrawGDBXIsoFault(const GDBXCustomTool &iInfo, const GDBXFillInfo &info, //<2F><><EFBFBD>ƶϲ<C6B6><CFB2><EFBFBD>
|
|
|
|
|
|
const GDBXSegments &sInfo, const GDBXMemoryBlock &mInfo, const GDBXLayerInfo &lInfo);
|
|
|
|
|
|
int DrawGDBXIsoLine(const GDBXCustomTool &iInfo, const GDBXFillInfo &info, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
const GDBXSegments &sInfo, const GDBXMemoryBlock &mInfo, const GDBXLayerInfo &lInfo, const GDBXFontInfo &fInfo);
|
|
|
|
|
|
int DrawGDBXGrid(const GDBXLLGridInfo & gInfo, const GDBXFillInfo &info, //ͼ<><CDBC>()
|
|
|
|
|
|
const GDBXGMFONT &xMaInfo, const GDBXGMFONT &xMiInfo, const GDBXGMFONT &yMaInfo,
|
|
|
|
|
|
const GDBXGMFONT &yMiInfo, const GDBXLableOffset &lInfo, const GDBXLayerInfo &layerInfo);
|
|
|
|
|
|
int DrawGDBXScale(const GDBXScaleInfo &sInfo, const GDBXFillInfo &info, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
const GDBXAnchor &aInfo, const GDBXLayerInfo &layerInfo);
|
|
|
|
|
|
int DrawGDBXImage(const GDBXImageInfo &iInfo, const GDBXFillInfo &info, //ͼƬ<CDBC><C6AC>gif<69>ȣ<EFBFBD>
|
|
|
|
|
|
const GDBXLayerInfo &layerInfo);
|
|
|
|
|
|
|
|
|
|
|
|
int DrawGDBXInserMap(const GDBXInserMapInfo &iInfo, const GDBXFillInfo &info, //ͼ<><CDBC>GDBX<42>ļ<EFBFBD>
|
|
|
|
|
|
const GDBXLayerInfo &layerInfo);
|
|
|
|
|
|
|
|
|
|
|
|
int DrawGDBXText(const GDBXTextInfo &tInfo, const GDBXFillInfo &info, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
const GDBXAnchor &aInfo, const GDBXLayerInfo &layerInfo, const GDBXLLGridInfo & gInfo);
|
|
|
|
|
|
int DrawGDBXWell(const GDBXWellInfo &wInfo, const GDBXFontInfo &fInfo, //<2F><><EFBFBD>ƾ<EFBFBD>ͼ<EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>
|
|
|
|
|
|
const GDBXFillInfo & info, const GDBXLayerInfo &layerInfo);
|
|
|
|
|
|
int DrawGDBXTownAnchor(const GDBXTextInfo &textInfo, const GDBXAnchor &aInfo, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>
|
|
|
|
|
|
const GDBXAnchor & jaInfo, const GDBXFillInfo & info, const GDBXLayerInfo &layerInfo);
|
|
|
|
|
|
int DrawGDBXLegendAnchor(const GDBXAnchor & jaInfo, const GDBXFillInfo & info, //<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ͼ<EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD>
|
|
|
|
|
|
const GDBXLayerInfo &layerInfo);
|
|
|
|
|
|
|
|
|
|
|
|
int DrawGDBXJGAnchor(const GDBXRectInfo &aInfo, const GDBXAnchor & jaInfo, //<2F><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
const GDBXFillInfo &info, const GDBXLayerInfo &layerInfo);
|
|
|
|
|
|
int DrawGDBXOilWater(const GDBXOilWaterInfo &oilInfo, const GDBXOilWaterGroupInfo &owgInfo,
|
|
|
|
|
|
const GDBXFillInfo &info, const GDBXFontInfo &fInfo, const GDBXLayerInfo &layerInfo); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD>
|
|
|
|
|
|
private:
|
|
|
|
|
|
void DeSerialize(CArchive& ar);
|
|
|
|
|
|
|
|
|
|
|
|
vector<CString> SplitByLine(const CString& input); //Layers <20><><EFBFBD><EFBFBD> \r\n <20>ָ<EFBFBD><D6B8>ַ<EFBFBD><D6B7><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CString ChangeEncoding(const CString &str, const CString &enc, int type = 0); //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|
|
|
|
|
|
|
|
|
|
|
CString Utf8ToGb2312(const CString& utf8Str, int type = 0); //ת<><D7AA>
|
|
|
|
|
|
wchar_t* ReplaceLineBreaks(wchar_t* pWideChar, int type = 0); //ȥ<><C8A5><EFBFBD>ַ<EFBFBD><D6B7>е<EFBFBD>\\r\\n
|
|
|
|
|
|
|
|
|
|
|
|
int StringToSize(const CString &str, CSize8 &size); //<2F>ַ<EFBFBD><D6B7><EFBFBD>-202682.400000,4875329.100000<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int StringToRect(const CString &str, CRect8 &rect); //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
int StringToRect(const CString &str, CRect8 &rect, int num);
|
|
|
|
|
|
|
|
|
|
|
|
bool IsOutsideModelSpace(double x0, double y0, const CRect8 &rect); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
BYTE* HexStringToByteArray(CString hexString, size_t& byteArraySize);
|
|
|
|
|
|
|
|
|
|
|
|
COLORREF PenColorReverse(uint64_t color);
|
|
|
|
|
|
CString SuperAndSubConversion(CString cmd, int& bScript); //<2F><><EFBFBD>±<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* libarchive <EFBFBD><EFBFBD>ѹ<EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
*
|
|
|
|
|
|
* \param gdbxPath gdbxȫ·<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param outPath <EFBFBD><EFBFBD>ѹ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȫ·<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \return
|
|
|
|
|
|
*/
|
|
|
|
|
|
int GdbxExtractZip(const CString &gdbxPath, const CString &outPath);
|
|
|
|
|
|
|
|
|
|
|
|
int RemoveAllGDBXFile(); //ɾ<><C9BE><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
bool IsDirectoryExist(const CString& path);
|
|
|
|
|
|
private:
|
|
|
|
|
|
struct GDBXInfo
|
|
|
|
|
|
{
|
|
|
|
|
|
int m_version; //<2F><>ȡ<EFBFBD>İ汾<C4B0><E6B1BE>
|
|
|
|
|
|
long m_color;
|
|
|
|
|
|
|
|
|
|
|
|
CString m_projection;
|
|
|
|
|
|
CString m_fileEncCoding; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>utf-8<><38>
|
|
|
|
|
|
CString m_gdbxXmlPath; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>xml<6D><6C>ʱ·<CAB1><C2B7><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
double dCentre_x;
|
|
|
|
|
|
double dCentre_y; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
double m_dScaleFactor; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ǰͼ<C7B0><CDBC><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ֵ<EFBFBD><D6B5>1<EFBFBD><31>m_dScaleFactor
|
|
|
|
|
|
CRect8 m_modelSpace;
|
|
|
|
|
|
|
|
|
|
|
|
CProjection m_ExchangeXYZ; //ͶӰ
|
|
|
|
|
|
CXy *m_pXyMark; //<2F>洢<EFBFBD><E6B4A2>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ָ<EFBFBD>루<EFBFBD>߶εȷ<CEB5><C8B7>ţ<EFBFBD>
|
|
|
|
|
|
CLayer* m_pLayer; //CLayer*CXy
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
GDBXInfo m_info;
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|