ShapeToVml的一个类体

/*! @class
********************************************************************************
<PRE>
类名称   : CShapeToVml
功能     : 实现shape文件向Vml格式的转化,生成Html文件,并生成一个文本报告
--------------------------------------------------------------------------------
备注     : 版本:PBeta_3      完善日期:2007.12.22.23:20
典型用法 : {
              CShapeToVml my;
              my.GetShapeFile();//获得shape文件,并做初始化工作
              my.ReadeHead();   //读取shape文件的头记录,判断是否为shape,并作初始化工作
              my.WriteData();   //对shape文件的数据就行操作,转化开始
           }
--------------------------------------------------------------------------------
作者     : flyingfan
</PRE>
*******************************************************************************/


#include<iostream>
using namespace std;
#include<fstream>


 整型int的字节长
#define INT_LENGTH 4
/double的字节长
#define DOUBLE_LENGTH 8

/用于写html代码的宏数据
#define HTML_HEAD "<!--wangflying--><HTML xmlns:v><STYLE>v//:*{behavior:url(#default#VML);}</STYLE><BODY bgcolor=/"#eeeeee/">"
#define A "<v:polyline style=/"Z-INDEX:1;LEFT:0;POSITION:absolute;TOP:400/" points=/""
#define B "/" filled=/"t/" strokecolor=/"red/" fillcolor=/"white/"/>"


/**************************************************
结构体,便于存贮坐标,加快算法
***************************************************/
struct POINT
{
 double X;
 double Y;
};
typedef struct POINT Point;


#pragma once

class CShapeToVml
{


 ///构造函数
public:
 CShapeToVml(void);


public:
 //!获得shape文件,并做初始化工作
 void GetShapeFile();


public:
 //!读取shape文件的头记录,判断是否为shape,并作初始化工作
 void ReadeHead();


public:
 //!对shape文件的数据就行操作,转化开始
 void WriteData();


public:
 //析构函数,关闭文件流

 ~CShapeToVml(void);

private:
 //类自己需要的属性
 int m_nMemo ;// m_nMemo用于偏转文件指针,具体是记录了文件操作的字节位置
 char * m_pShapeFile ;  //shape文件路径
 int m_nTemp ;//读取到的整型数据,先存在这里,而后反转
 double m_dbTemp ;//缓存读取到的double数据


private:
 文件流
 ifstream m_inFile;   //shape源文件
 ofstream m_outTxt;   //生成的文本报告
 ofstream m_outHtml;  //生成的Html文件


private:
 /与shape文件相关的属性
 int m_nFile_Code;
 int m_nFile_Length;
 int m_nVersion;
 int m_nShape_Type;
 double m_dbXmin;
 double m_dbYmin;
 double m_dbXmax;
 double m_dbYmax;


private:
 //!反转 整型int 数据的字节顺序
 void Revers(int * i_data);


private:
 //!从二进制文本读取 双精度double 数据
 double dbGetData();


private:
 //!从二进制文本读取 整型int 数据
 int iGetData();


private:
 /**************************************************
 读取 点坐标 Point 的函数
 m_inFile为源文件
 length来判断该记录是否读完
 m_outTxt生成文本报告
 m_outHtml生成html文件
 ***************************************************/
 void ReadPoint(int & length);


private:
 /**************************************************
 读取 点坐标 MultiPoint 的函数
 m_inFile为源文件
 length来判断该记录是否读完
 m_outTxt生成文本报告
 m_outHtml生成html文件
 ***************************************************/
 void ReadMultiPoint(int & length);


private:
 /**************************************************
 读取 线 PolyLine 的函数
 m_inFile为源文件
 length来判断该记录是否读完
 m_outTxt生成文本报告
 m_outHtml生成html文件
 ***************************************************/
 void ReadPolyLine(int & length);


private:
 /**************************************************
 读取 面PolyGon 的函数
 m_inFile为源文件
 length来判断该记录是否读完
 m_outTxt生成文本报告,
 m_outHtml生成html文件
 具体的实现和PolyLine相似
 ***************************************************/
 void ReadPolyGon(int & length);


};
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值