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.

643 lines
19 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD>: <20><>ʽת<CABD><D7AA><EFBFBD><EFBFBD>
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
// ת<><D7AA>MapGis<69><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƹ<EFBFBD>ʽ
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2008-7-09
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "otherformat.h"
#include "afxtempl.h"
#include ".\symbolbaselib.h"
#include "DrawOperator\curveex.h"
namespace NFormatReader
{
namespace NMapGisReader
{
//<2F><>ɫ<EFBFBD><C9AB>
class CMGColorLib
{
public:
CMGColorLib();
BOOL Read(LPCTSTR lpszColorFile);
BOOL Write(LPCTSTR lpszColorFile, LPCTSTR lpDefaultColorFile);
BOOL WriteColorDFD(LPCTSTR lpszFileName);
BOOL CreateColorFillCurve(void* pxy);
void SortColorWithID(void);
void GetColorMap(CMap<DWORD, DWORD, int, int>& arrColorMap);
void SetColorMap(CMap<DWORD, DWORD, int, int>& arrColorMap, bool bResetID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫֵ<C9AB><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>ɫֵ<C9AB><D6B5><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD>
void SortColorWithColor(void);
int FindColorID(COLORREF col); //<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ٲ<EFBFBD><D9B2>ң<EFBFBD><D2A3><EFBFBD>Ҫ<EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD><EFBFBD><EFBFBD>ɫֵ<C9AB><D6B5><EFBFBD><EFBFBD>
int Add(int nID, COLORREF col);
COLORREF GetColor(int nIndex);
// MapGis<69><73>ɫΪCMYK<59><EFBFBD><E1B9B9><EFBFBD><EFBFBD>K<EFBFBD><4B>C<EFBFBD><43>M<EFBFBD><4D>Y ˳<><CBB3><EFBFBD><EFBFBD><E6B4A2>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ֽ<EFBFBD>
struct stuColorCMYK
{
BYTE k,c,m,y;
};
class CMGColorItem
{
public:
CMGColorItem(void);
long m_nColorID; //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʼ
stuColorCMYK color; //<2F><>ɫֵ
int ReadColor(CFile& fr);
int WriteColor(CFile& fw);
CString GetMessage(int nIndex);
COLORREF GetColor();
void SetColor(COLORREF col);
};
CArray<CMGColorItem, CMGColorItem> arrColor;
protected:
static int _compare_MapGis_ArrayID(const void *d1,const void *d2);
static int _compare_MapGis_ArrayColor(const void *d1,const void *d2);
};
//<2F><><EFBFBD>ſ<C5BF><E2A3A8>ͼ<EFBFBD>
class CMGSymbolLib : public CSymbolBaseLib
{
public:
CMGSymbolLib();
virtual ~CMGSymbolLib();
virtual BOOL Read(LPCTSTR lpszFileName);
struct stuElementHead // ͼԪ<CDBC><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ռ10<31><30><EFBFBD>ֽ<EFBFBD>
{
short type; // ͼԪ<CDBC><D4AA><EFBFBD><EFBFBD>(=0)
short FillColor; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
short LineColor; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ(δ<><CEB4>)
short LineWidth; // <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD><><CEB4>) (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>0=0.05<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,2=0.08,3=0.1,<2C><>,9=0.4,10=0.5)
short SubElementCount; // <20><><EFBFBD>ɱ߽<C9B1><DFBD>Ļ<EFBFBD><C4BB>θ<EFBFBD><CEB8><EFBFBD>
};
struct stuOneElement
{
stuElementHead head;
short *eleArcCoorNum; //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
int eleArcCoorNumTotal; //<2F><><EFBFBD>л<EFBFBD><D0BB>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
CMGColorLib* m_pColorLib; //<2F><>ɫ<EFBFBD><EFBFBD><E2A3AC><EFBFBD>ⲿָ<E2B2BF><D6B8>
protected:
void* ReadOneSymbol(CFile& fr); //<2F><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>CXy*ָ<><D6B8>
COLORREF GetColor(int nIndex);
void AddArcLine(void* pxy, stuOneElement* pOneElement, float* pCoorAll);
double GetLineWidth(int nIndex);
};
//<2F><><EFBFBD>ͷ<EFBFBD><CDB7>ſ<EFBFBD>
class CMGLineTypeLib : public CMGSymbolLib
{
public:
CMGLineTypeLib(void);
virtual ~CMGLineTypeLib(void);
struct stuDataInfo
{
int dataOffset; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʼλ<CABC><CEBB>
short eleNum; //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵ĸ<CDB5><C4B8><EFBFBD>
};
virtual BOOL Read(LPCTSTR lpszFileName);
void* ReadOneLineType(CFile& fr, stuDataInfo* pInfo);
};
//ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CMGFillGrphLib : public CMGSymbolLib
{
public:
CMGFillGrphLib(void);
virtual ~CMGFillGrphLib(void);
virtual BOOL Read(LPCTSTR lpszFileName);
};
////////////////////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>MPJ<50><4A>ʹ<EFBFBD>õ<EFBFBD><C3B5>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD>
/***********************************************
// ע<><EFBFBD><E2A3BA><EFBFBD>ýṹ<C3BD><E1B9B9>Ա<EFBFBD><D4B1><EFBFBD>ʽΪ<CABD><CEAA><EFBFBD>ֽ<EFBFBD>(/Zp1)<29><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>#pragma pack(1)
//***********************************************/
#pragma pack(1)
//˫<><CBAB><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>
struct MapGisRect8
{
double x1;
double y1;
double x2;
double y2;
};
// MapGis<69><73><EFBFBD><EFBFBD>
struct MapGisEnv
{
char clib[128]; //<2F><><EFBFBD>ֿ<EFBFBD>Ŀ¼
char sys[128]; //ϵͳĿ¼
char cur[128]; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ŀ¼
char temp[128]; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
char slib[128]; //ϵͳ<CFB5><CDB3>Ŀ¼
};
////1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>(MAP_PARA<52><EFBFBD><E1B9B9>type<70>ֶ<EFBFBD>ֵ)
enum EMapGis_CoorType
{
COOR_CUSTOM = 0, /*<2A>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ*/
COOR_JWD = 1, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ*/
COOR_BL = 2, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ*/
COOR_PRJ = 3, /*ͶӰƽ<D3B0><C6BD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ*/
COOR_XYZ = 4 /*<2A><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ*/
};
////2<><32><EFBFBD><EFBFBD><EFBFBD>굥λ(MapGisMap<61><EFBFBD><E1B9B9>unit<69>ֶ<EFBFBD>ֵ)
////2.1 <20><><EFBFBD>ȵ<EFBFBD>λ
enum EMapGis_UnitType
{
MG_UNIT_MM =0x00, //<2F><><EFBFBD><EFBFBD>
MG_UNIT_MilliMeter =0x01, //<2F><><EFBFBD><EFBFBD>
MG_UNIT_Meter =0x02, //<2F><>
MG_UNIT_Second =0x03, //<2F><>
MG_UNIT_Degree =0x04, //<2F><>
MG_UNIT_DMS =0x05, //<2F>ȷ<EFBFBD><C8B7><EFBFBD>,<2C><><EFBFBD><EFBFBD>DDDMMSS.SSSS<53><53>ʽ
MG_UNIT_Foot =0x06, //Ӣ<><D3A2>
MG_UNIT_Minute =0x07, //<2F><>(60<36><30>֮һ<D6AE><D2BB>)
MG_UNIT_Radian =0x08, //<2F><><EFBFBD><EFBFBD>
MG_UNIT_GRAD =0x09, //<2F>ݶ<EFBFBD> 1<>ݶ<EFBFBD>=0.015707963267949<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MG_UNIT_KM =0x0A, //<2F><><EFBFBD><EFBFBD>
MG_UNIT_DM =0x0B, //<2F><><EFBFBD><EFBFBD>
MG_UNIT_CM =0x0C, //<2F><><EFBFBD><EFBFBD>
MG_UNIT_Inch =0x0D, //Ӣ<><D3A2>
MG_UNIT_Yard =0x0E, //<2F><>
MG_UNIT_SeaMile =0x0F, //<2F><><EFBFBD><EFBFBD>
MG_UNIT_Mile =0x10 //Ӣ<><D3A2>
};
//
////2.2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
//#define UNIT_SQ_MM 0x20 //ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Square Millimeter)
//#define UNIT_SQ_CM 0x21 //ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Square Centimeter)
//#define UNIT_SQ_DM 0x22 //ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Square Millimeter)
//#define UNIT_SQ_M 0x23 //ƽ<><C6BD><EFBFBD><EFBFBD>(Square DeciMeter)
//#define UNIT_SQ_KM 0x24 //ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Square KiloMeter)
//#define UNIT_SQ_Inch 0x25 //ƽ<><C6BD>Ӣ<EFBFBD><D3A2>(Square Inch)
//#define UNIT_SQ_Foot 0x26 //ƽ<><C6BD>Ӣ<EFBFBD><D3A2>(Square Foot)
//#define UNIT_SQ_Yard 0x27 //ƽ<><C6BD><EFBFBD><EFBFBD>(Square Yard)
//#define UNIT_Are 0x28 //<2F><>Ķ(Are)
//#define UNIT_Acre 0x29 //ӢĶ(Acre)
//#define UNIT_Hectare 0x2A //<2F><><EFBFBD><EFBFBD>(Hectare)
//#define UNIT_SQ_Mile 0x2B //ƽ<><C6BD>Ӣ<EFBFBD><D3A2>(Square Mile)
//
////2.3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
//#define UNIT_CU_MM 0x40 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Cubic Millimeter)
//#define UNIT_CU_CM 0x41 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Cubic Centimeter)
//#define UNIT_CU_DM 0x42 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Cubic Millimeter)
//#define UNIT_CU_M 0x43 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Cubic DeciMeter)
//#define UNIT_CU_Inch 0x45 //<2F><><EFBFBD><EFBFBD>Ӣ<EFBFBD><D3A2>(Cubic Inch)
//#define UNIT_CU_Foot 0x46 //<2F><><EFBFBD><EFBFBD>Ӣ<EFBFBD><D3A2>(Cubic Foot)
//#define UNIT_CU_Yard 0x47 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Cubic Yard)
//
////3<><33><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(MAP_PARA<52><EFBFBD><E1B9B9>earthParam<61>ֶ<EFBFBD>ֵ)
enum EMapGis_EarthType
{
EP_UnDefine =0, //δָ<CEB4><D6B8>"<22>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
EP_Beijing54 =1, //" 1:<3A><><EFBFBD><EFBFBD>54/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><CBB9>(1940<34><30>)<29><><EFBFBD><EFBFBD>", //"Krasovsky"
EP_Xian80 =2, //" 2:<3A><><EFBFBD><EFBFBD>80/1975 <20><>I.U.G.G<>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD> ",
EP_IUGG1979 =3, //" 3:1979 <20><>I.U.G.G<>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD> ",
EP_IUGG1983 =4, //" 4:1983 <20><>I.U.G.G<>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>",
EP_UserDefine =5, //" 5:<3A>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>Զ<EFBFBD><D4B6><EFBFBD>) ",
EP_IUGG1967 =6, //" 6:1967 <20><>I.U.G.G<>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>",
EP_WGS84 =7, //" 7:WGS-84 ",
EP_GRS80 =8, //" 8:GRS-80 ",
EP_WGS72 =9, //" 9:WGS-72 ",
EP_Australia =10, //" 10:<3A>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>1965<36><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
EP_11 =11, //" 11:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1910<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
EP_12 =12, //" 12:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1880<38><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
EP_13 =13, //" 13:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1866<36><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
EP_14 =14, //" 14:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1841<34><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
};
////4<><34>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>(MAP_PARA<52><EFBFBD><E1B9B9>projType<70>ֶ<EFBFBD>)
enum EMapGis_ProjType
{
PRJ_LonLat =0, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ(<28><>γ<EFBFBD><CEB3>)
PRJ_UTM =1, //ͨ<>ú<EFBFBD><C3BA><EFBFBD>ī<EFBFBD><C4AB><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ(UTM)",
PRJ_Albers_Conical_EQ_Area =2, //<2F>Ƕ<EFBFBD><C7B6><EFBFBD>˹<EFBFBD>Ȼ<EFBFBD>Բ׶ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",ALBERS CONICAL EQUAL AREA
PRJ_Lambert_Conformal_Conic =3, //<2F><><EFBFBD><EFBFBD><EFBFBD>صȽ<D8B5>Բ׶ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",LAMBERT CONFORMAL CONIC
PRJ_Mercator =4, //ī<><C4AB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD>Բ<EFBFBD><D4B2>)ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",MERCATOR
PRJ_Gauss_Kruger =5, //<2F><>˹-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>Ƚ<EFBFBD>)ͶӰ",GAUSS-KRUGER
PRJ_Polyconic =6, //<2F><>ͨ<EFBFBD><CDA8>Բ׶ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",POLYCONIC
PRJ_EQ_Dist_Conic =7, //<2F>Ⱦ<EFBFBD>Բ׶ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",EQUIDISTANT CONIC
PRJ_Transverse_Mecator =8, //<2F><><EFBFBD><EFBFBD>ī<EFBFBD><C4AB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>Ƚ<EFBFBD>)ͶӰ",TRANSVERSE MECATOR
PRJ_StereoGraphic =9, //<2F><><EFBFBD><EFBFBD>ͶӰ(<28>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>ϵ",STEREOGRAPHIC
PRJ_Lambert_Azimuthal_EQ_Area =10, //<2F><><EFBFBD><EFBFBD><EFBFBD>صȻ<D8B5><C8BB><EFBFBD>λͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",LAMBERT AZIMUTHAL EQUAL_AREA
PRJ_Azimuthal_EQ_Dist =11, //<2F>Ⱦ෽λͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",AZIMUTHAL EQUIDISTANT
PRJ_Gnomonic =12, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",GNOMONIC
PRJ_Orthographic =13, //<2F><><EFBFBD><EFBFBD>ͶӰ(<28>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>Զ)<29><><EFBFBD><EFBFBD>ϵ",ORTHOGRAPHIC
PRJ_General_VER_NS_Perspective =14, //ͨ<>ô<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>͸<EFBFBD><CDB8>(<28><><EFBFBD><EFBFBD>)ͶӰ",GENERAL VERTICAL NEAR_SIDE PERSPECTIVE
PRJ_Sinusoidal =15, //<2F><><EFBFBD><EFBFBD>ͶӰ(αԲ<CEB1><D4B2>)<29><><EFBFBD><EFBFBD>ϵ",SINUSOIDAL
PRJ_Equirectangular =16, //<2F>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>(<28><><EFBFBD><EFBFBD>)ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",EQUIRECTANGULAR
PRJ_Miller_Cylindrical =17, //<2F><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><><CDB8><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>)ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",MILLER CYLINDRICAL
PRJ_V_D_Grinten_I =18, //<2F><><EFBFBD>¸<EFBFBD><C2B8>ֶ<EFBFBD>IͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",VAN DER GRINTEN I
PRJ_Oblique_Mercator =19, //б<><D0B1>ī<EFBFBD><C4AB><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",OBLIQUE MERCATOR (HOTINE)
PRJ_Polar_Srereographic =20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ",POLAR SREREOGRAPHIC
};
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
struct MapGisMap
{
char type; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
char unit; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD>굥λ,
double mapw; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> type<70><65><EFBFBD><EFBFBD>ϵ,unit<69><74>λ.
double maph; //..................<2E><> type<70><65><EFBFBD><EFBFBD>ϵ,unit<69><74>λ.
char projType; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>
char earthParam; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double jd0; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½Ǿ<C2BD><C7BE><EFBFBD> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double wd0; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>......γ<><CEB3> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double djd; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ݾ<EFBFBD><DDBE>ȿ<EFBFBD><C8BF><EFBFBD> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double dwd; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double rate; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>, <20>޵<EFBFBD>λ
double lon; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>߾<EFBFBD><DFBE><EFBFBD> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double lon1; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double lon2; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>2 <20><><EFBFBD><EFBFBD> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double lat; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>ͶӰԭ<D3B0><D4AD>γ<EFBFBD><CEB3> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double lat1; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>˫γ<CBAB><CEB3>1 γ<><CEB3> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double lat2; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>˫γ<CBAB><CEB3>2 γ<><CEB3> , <20><><EFBFBD>ݵ<EFBFBD>λͳһ<CDB3><D2BB><EFBFBD><EFBFBD>UNIT_DMS<4D><53>ʽ
double dx; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>ͼֽ<CDBC><D6BD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>ϵ<EFBFBD>е<EFBFBD><58><C6AB>ֵ ,type<70><65><EFBFBD><EFBFBD>ϵ,unit<69><74>λ.
double dy; //....................................Yƫ<59><C6AB> ,type<70><65><EFBFBD><EFBFBD>ϵ,unit<69><74>λ.
char levelType; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double h; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ĸ߲<C4B8>, <20><>λΪ
double H; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD>ͶӰƽ<D3B0><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ׼<CBAE><D7BC><EFBFBD>ĸ߲<C4B8>, <20><>λΪ
double vRate; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>
char vUnit; //<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>λ
char TICtype; //TIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
char TICunit; //TIC<49><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>굥λ
char infoUnit; //ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
double infoRatex; //ͼ<><CDBC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λֵ<CEBB><D6B5><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ݵ<EFBFBD>λֵ<CEBB><D6B5>x<EFBFBD><78><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>, <20><>ʼֵ<CABC><D6B5><EFBFBD>븳0<EBB8B3><30>1
double infoRatey; //........................................y<><79><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>, <20><>ʼֵ<CABC><D6B5><EFBFBD>븳0<EBB8B3><30>1
};
// MapGis<69><73><EFBFBD><EFBFBD>
struct MapGisMpj
{
short FileNum; //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MapGisRect8 Prj_Rect; //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>Χ
MapGisEnv Env; //ͼ<>λ<EFBFBD><CEBB><EFBFBD>
char Title[60]; //ͼ<>α<EFBFBD><CEB1><EFBFBD>
int lLayerDictOffset; //ͼ<><CDBC><EFBFBD>ֵ<EFBFBD>λ<EFBFBD><CEBB>
int lFirstFile; //ͼ<><CDBC><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ʼλ<CABC><CEBB>
//<2F><><EFBFBD><EFBFBD>ҳ<EFBFBD>漰λ<E6BCB0><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double TranX,TranY; //λ<><CEBB>
double ScaleX,ScaleY; //<2F><><EFBFBD><EFBFBD>
double Angle; //<2F><>ת<EFBFBD>Ƕ<EFBFBD>
double VerW,VerH; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
short PrjType;
int lFirstCLN; //ͼ<><CDBC><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ʼλ<CABC><CEBB>
MapGisMap PrjMapParam; //<2F><><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD>ĵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
char UnUsed[128];
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>е<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><E1B9B9>0x190=400<30>ֽڣ<D6BD>
struct MapGisFile
{
char Filetype; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>(<28><>/<2F><>/<2F><><><D3B0>)
char FileState; //<2F>ļ<EFBFBD>״̬(<28>ر<EFBFBD>/<2F><><EFBFBD><EFBFBD>/<2F>༭/<2F><>ǰ<EFBFBD>༭)
char Filename[128]; //<2F>ļ<EFBFBD><C4BC><EFBFBD>(ȫ·<C8AB><C2B7>)
char Describe[128]; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MapGisRect8 rect; //<2F><><EFBFBD>Χ
char UserType; //<2F>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char GroupCode; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char DataSource[32]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>Դ(<28><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>)
double MinDispRate; //<2F><>С<EFBFBD><D0A1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>(<MinDispRate,<2C><><EFBFBD><EFBFBD>ʾ)
double MaxDispRate; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>(>MaxDispRate,<2C><><EFBFBD><EFBFBD>ʾ)
char NoteFlg; //<2F><>־<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶζ<D6B6>̬<EFBFBD><CCAC>ע,<2C>Լ<EFBFBD><D4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>
char NoteField[21]; //<2F><>ע<EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
float NoteHeight; //<2F><>ע<EFBFBD>ָ<EFBFBD>
short NoteColor; //<2F><>ע<EFBFBD><D7A2>ɫ
char NoteFont; //<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
::byte CLNClassCode; //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
char UnUsed[30]; //<2F><><EFBFBD><EFBFBD>
};
//////////////////////////////////////////////////////////////////////////////////////////////////////
// ͼ<><CDBC><EFBFBD>ļ<EFBFBD><C4BC>еĸ<D0B5><C4B8><EFBFBD><EFBFBD><EFBFBD>(<28><>16<31><36>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct MapGisIndex
{
int pos; // λ<><CEBB>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ʼλ<CABC><CEBB>)
int len; // <20>ֽڳ<D6BD><DAB3><EFBFBD>
short unknow; // δ֪(0xFFFF)
};
//<2F><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ
struct MapGisArc
{
short LineType; // <20><><EFBFBD><EFBFBD>
::byte AuxLineType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
::byte isTrans; // <20>Ƿ<EFBFBD>͸<EFBFBD><CDB8>
int LineColor; // <20><>ɫ
float LineWidth; // <20>߿<EFBFBD>
::byte isSmooth; // <20>Ƿ<EFBFBD>ƽ<EFBFBD><C6BD>(0=<3D><><EFBFBD>ߡ<EFBFBD>1=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
float XParam; // Xϵ<58><CFB5>
float YParam; // Yϵ<59><CFB5>
int AuxColor; // <20><><EFBFBD><EFBFBD>ɫ
short LayerID; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int res0; // <20><><EFBFBD><EFBFBD>(=0)
int res1; // <20><><EFBFBD><EFBFBD>(=0)
int ID; // <20><><EFBFBD>ε<EFBFBD>ID
MapGisRect8 rect; // <20><><EFBFBD>Χ
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ
struct MapGisPoly
{
int FillColor; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
short FillSymbol; // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
float SymWidth; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float SymHeight; // ͼ<><CDBC><EFBFBD>߶<EFBFBD>
int SymColor; // ͼ<><CDBC><EFBFBD><EFBFBD>ɫ
short LayerID; // ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
::byte isTrans; // <20>Ƿ<EFBFBD>͸<EFBFBD><CDB8>
short basLN; // <20><><EFBFBD><EFBFBD>б<EFBFBD>»<EFBFBD><C2BB>ߵĻ<DFB5><C4BB><EFBFBD><EFBFBD><EFBFBD>
long res0; // <20><><EFBFBD><EFBFBD>(=0)
long res1; // <20><><EFBFBD><EFBFBD>(=0)
MapGisRect8 rect; // <20><><EFBFBD>Χ
};
// <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>Խṹ(0x27=39<33><39><EFBFBD>ֽ<EFBFBD>)
struct MapGisField
{
char name[20]; // <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
::byte type; // <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
int offset; // <20>ֶ<EFBFBD>ƫ<EFBFBD><C6AB>
short len; // <20>ֶγ<D6B6><CEB3><EFBFBD>(<28>ֽڳ<D6BD><DAB3><EFBFBD>)
short lenc; // <20>ֶγ<D6B6><CEB3><EFBFBD>(<28>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>)
::byte prec; // <20>ֶξ<D6B6><CEBE><EFBFBD>(С<><D0A1>λ<EFBFBD><CEBB>)
short enable; // <20>ʹ<E0BCAD>ܱ<EFBFBD>־(0/1/2=<3D><><EFBFBD><EFBFBD>/<2F><>/<2F><>ֹ)
::byte flg; // <20><>ӡ<EFBFBD><D3A1>־
short ptc_pos; // <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ϊ0,1,2...
int unknow; // δ֪(?)
};
// MapGisField<6C><EFBFBD><E1B9B9>enable<6C><65><EFBFBD><EFBFBD>: (0-->0x00FFΪMapGisϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>)
#define MG_FLDEDT_NO 0x0000 //<2F>ֶοɱ༭״̬,<2C><><EFBFBD><EFBFBD>
#define MG_FLDEDT_YES 0x0001 //<2F>ֶοɱ༭״̬,<2C><>
#define MG_FLDEDT_FORBID 0x0002 //<2F>ֶοɱ༭״̬,<2C><>ֹ
#define MG_FLD_VIS 0x0004 //<2F>ֶοɼ<CEBF>״̬(<28><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ״̬)
#define MG_FLD_MSK 0x0008 //<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>״̬
#define MG_FLD_EXT 0x0010 //<2F><><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>(TEXT_TYPE--EXT_TYPE)
#define MG_FLD_REPEL 0x0020 //<2F><><EFBFBD>ֶ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
#define MG_FLD_DBSKEY 0x0040 //<2F><><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ؼ<EFBFBD><D8BC>ֶ<EFBFBD>
#define MG_FLD_EDT (MG_FLDEDT_NO|MG_FLDEDT_YES|MG_FLDEDT_FORBID) /*<2A>ֶα༭״̬*/
////<2F><><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
#define PNT_NOTE 0 // <20>ڵ<EFBFBD>/<2F>ַ<EFBFBD><D6B7><EFBFBD>
#define PNT_SUB 1 // <20><>ͼ/<2F><><EFBFBD><EFBFBD>
#define PNT_CIR 2 // Բ
#define PNT_ARC 3 // <20><>
#define PNT_IMAGE 4 // MSIͼ<49><CDBC>
#define PNT_TEXT 5 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define PNT_TYPE_NUM 6 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊdouble<6C>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>Ϊ40<34><30><EFBFBD>ֽڣ<D6BD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ˡ<EFBFBD>#pragma pack(1)<29><><EFBFBD><EFBFBD><EFBFBD>ʽΪ1<CEAA>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD>Ըýṹ<C3BD><EFBFBD><E5B3A4>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>34<33>ֽ<EFBFBD>
union infoPoint
{
struct str // <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>22 Bytes<65><73>
{
float height; //<2F>߶<EFBFBD>
float width; //<2F><><EFBFBD><EFBFBD>
float space; //<2F><><EFBFBD><EFBFBD>
float angle; //<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƕȣ<C7B6><C8A3><EFBFBD>360<36><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB>ʾ
short ifnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
short chnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
::byte ifnx; //<2F><><EFBFBD>Σ<EFBFBD>0=<3D><><EFBFBD>壬1=<3D><>б<EFBFBD><D0B1>2=<3D><>б<EFBFBD><D0B1>3=<3D><><EFBFBD>ʣ<EFBFBD>4=<3D><><EFBFBD>ʣ<EFBFBD>64=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>65=<3D><>б<EFBFBD><D0B1>Ӱ<EFBFBD><D3B0>66=<3D><>б<EFBFBD><D0B1>Ӱ<EFBFBD><D3B0>67=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>68=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ
::byte hvpl; //ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>0=ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD> 1=<3D><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
};
struct text // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>34 Bytes<65><73>
{
float height; //<2F>߶<EFBFBD>
float width; //<2F><><EFBFBD><EFBFBD>
float space; //<2F>ּ<EFBFBD><D6BC><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
float angle; //<2F><>360<36><30><EFBFBD>ƶ<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB>ʾ
short ifnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
short chnt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
::byte ifnx; //<2F><><EFBFBD>Σ<EFBFBD>0=<3D><><EFBFBD>壬1=<3D><>б<EFBFBD><D0B1>2=<3D><>б<EFBFBD><D0B1>3=<3D><><EFBFBD>ʣ<EFBFBD>4=<3D><><EFBFBD>ʣ<EFBFBD>64=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>65=<3D><>б<EFBFBD><D0B1>Ӱ<EFBFBD><D3B0>66=<3D><>б<EFBFBD><D0B1>Ӱ<EFBFBD><D3B0>67=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>68=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ
float lspace; //<2F>м<EFBFBD><D0BC><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
float dx; //<2F><><EFBFBD>
float dy; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
::byte hvpl; //ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>0=ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD> 1=<3D><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
};
struct submap // <20><>ͼ<EFBFBD><CDBC>24 Bytes<65><73>
{
int subno; //<2F><>ͼ<EFBFBD><CDBC>
float height; //<2F>߶<EFBFBD>
float width; //<2F><><EFBFBD><EFBFBD>
float angle; //<2F>Ƕ<EFBFBD>
float penw; //<2F>߿<EFBFBD><><CEB4>)
int fclr; //<2F><><EFBFBD><EFBFBD>ɫ(δ<><CEB4>)
};
struct circle // Բ<><D4B2>17 Bytes<65><73>
{
double radiu; //radiu>0, <=0Ϊ<30>Ƿ<EFBFBD> [float-->double]
int lcol; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫΪicol [short-->int]
float penw; //<2F>߿<EFBFBD>(6.0<EFBFBD><EFBFBD>ǰΪshort)
::byte fflag; //4.1<EFBFBD>ʼ 1=<3D><><EFBFBD><EFBFBD>Բ 0=<3D><><EFBFBD><EFBFBD>Բ
};
struct arc // <20><><EFBFBD><EFBFBD>20 Bytes<65><73>
{
double radiu; //radiu>0, <=0Ϊ<30>Ƿ<EFBFBD> [float-->double]
float begang; //<2F><>ʼ<EFBFBD>Ƕ<EFBFBD>
float endang; //<2F><>ֹ<EFBFBD>Ƕ<EFBFBD>
float penw; //<2F>߿<EFBFBD><DFBF><EFBFBD>(6.0<EFBFBD><EFBFBD>ǰΪshort)
};
struct image // ͼ<><CDBC><EFBFBD><EFBFBD>20 Bytes<65><73>
{
double width; // [float-->double]
double height; // [float-->double]
float angle; //<2F>Ƕ<EFBFBD><><CEB4>)
};
};
struct MapGisPoint
{
::byte type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
::byte isTrans; // <20>Ƿ<EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD>0=<3D><>͸<EFBFBD><CDB8><EFBFBD><EFBFBD>1=͸<><CDB8>
char infoPointData[34]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ը<EFBFBD>Ϊ40<34>ֽ<EFBFBD>
float infoDx; // [new, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>dx]
float infoDy; // [new, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>dy]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ40<34>ֽ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>short<72>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD>
int iColor; // [short-->int]
int linNo; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD>
int layer; // ͼ<><CDBC><EFBFBD><EFBFBD>
short res1; // <20><><EFBFBD><EFBFBD>
short res2; // <20><><EFBFBD><EFBFBD>
short res3; // <20><><EFBFBD><EFBFBD>
};
#pragma pack()
// <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󳤶<EFBFBD>
#define MG_MAX_STRING_LEN 512
class CMapGisFile :
public COtherFormat
{
public:
CMapGisFile(void);
virtual ~CMapGisFile(void);
BOOL Read(LPCTSTR lpszPathName);
BOOL B_ReadMpj(LPCTSTR lpszPathName); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
BOOL B_ReadBinary(LPCTSTR lpszPathName);//<2F>㣨*.wt<77><74><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>*.wl<77><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*.wp<77><70>
BOOL A_ReadAscii(LPCTSTR lpszPathName); //<2F><>(*.wat)<29><><EFBFBD><EFBFBD>(*.wal)<29><><EFBFBD><EFBFBD>(*.wap)
protected:
//<2F>ı<EFBFBD><C4B1><EFBFBD>ʽ
BOOL A_ReadWatPoint(CFile& fr); //<2F><>
BOOL A_ReadWalLine(CFile& fr); //<2F><>
BOOL A_ReadWapRegion(CFile& fr); //<2F><>
CString GetFontName(int nType);
COLORREF GetColor(int nIndex);
virtual void SetCurrentLayer(CString strLayer);
public:
class CMGPoint : public CPoint2D
{
public:
CMGPoint();
~CMGPoint();
CStringArray arrCommand;
int id; //ID<49><44>
int type; //<2F><><EFBFBD>ͣ<EFBFBD>0 <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>1 <20><>ͼ<EFBFBD><CDBC>2 Բ<><D4B2>3 <20><><EFBFBD><EFBFBD>4 ͼ<><CDBC><EFBFBD><EFBFBD>5 <20>ı<EFBFBD>
int layer; //ͼ<><CDBC>
int transparen; //͸<><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int color; //<2F><>ɫ
BOOL Read(CFile& fr);
};
class CMGLine //<2F><><EFBFBD><EFBFBD>
{
public:
CMGLine();
~CMGLine();
BOOL Read(CFile& fr);
void ClearCurve();
MapGisArc m_par; //<2F><><EFBFBD>߲<EFBFBD><DFB2><EFBFBD>
bool isValid = false;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ЧԪ<D0A7><D4AA>
CCurveEx* m_pCurve; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EABCB0><EFBFBD><EFBFBD>
double length; //<2F>߳<EFBFBD><DFB3><EFBFBD>
protected:
BOOL ReadParameter(CFile& fr);
BOOL ReadCurve(CFile& fr);
};
class CMGLineSegment : public CMGLine //<2F><><EFBFBD><EFBFBD>
{
public:
CMGLineSegment();
~CMGLineSegment();
BOOL Read(CFile& fr);
int frontNode; //ǰ<>ڵ<EFBFBD><DAB5><EFBFBD>
int backNode; //<2F><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>
int leftRegion; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int rightRegion; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
class CMGNode : public CPoint2D //<2F>ڵ<EFBFBD>
{
public:
CMGNode();
~CMGNode();
BOOL Read(CFile& fr);
CArray<long,long> m_arrLineSegment; //<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
};
class CMGRegion //<2F><>
{
public:
CMGRegion();
~CMGRegion();
BOOL Read(CFile& fr);
CArray<long,long> m_arrLineSegment; //<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
MapGisPoly m_par;
bool isValid; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ЧԪ<D0A7><D4AA>
double penWidth; //<2F>ʿ<EFBFBD>
int id; //ID<49><44>
double area; //<2F><><EFBFBD><EFBFBD>
double length; //<2F>ܳ<EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƹ<EFBFBD>ʽ
MapGisIndex m_IndexTable[16];
void B_ReadPoint(CFile& fr, int m_nEle); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void B_ReadAttData(CFile& fr, int start,int len); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ļ<EFBFBD><C4BC><EFBFBD>ʼλ<CABC>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD>
void B_ReadArcLine(CFile& fr, int m_nArc, CList<CMGLineSegment*, CMGLineSegment*> &lineList); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void B_ReadPoly(CFile& fr, int nPoly, CList<CMGRegion*, CMGRegion*> &polyList); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void toCurveSolid(CMGRegion& rgn, CPointList& dp);
void toCurveSolid(CMGRegion& rgn, CList<CMGLineSegment*, CMGLineSegment*> &arcLine);
void Clear(CList<CMGLineSegment*, CMGLineSegment*> &line);
void Clear(CList<CMGRegion*, CMGRegion*> &poly);
CMGColorLib m_mgColorLib; //<2F><>ɫ<EFBFBD><C9AB>
CMGSymbolLib m_mgSymbolLib; //<2F><><EFBFBD>ſ<EFBFBD>
CMGFillGrphLib m_mgFillGrphLib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD>
CMGLineTypeLib m_mgLineTypeLib; //<2F><><EFBFBD>Ϳ<EFBFBD>
int ProcessScript(CString& str);
void WriteColorDFD(LPCTSTR lpszFileName);
CString FindSymbol(int nIndex, COLORREF col);
CString FindFillSymbol(int nIndex, COLORREF col);
void SetMapInfo(MapGisMap& map);
};
};
};
using namespace NMapGisReader;