掌握了文件之间的关系之后,可以用C或C++语言编程实现对.TAB或.MIF文件的读取。为了存储对应地理图元的记录的信息,本文构造了如下的数据结构,如图2所示:
其中NTz结构指明该文件包含多少个字段,ONETz指明该字段包含多少个部分,kind指明改部分是点、线还是标注,ONEPART又给出了各个部分包含的坐标点的数量和位置信息。接下来在MiniGUI中主要对这个ONETz结构进行处理。
图 2 存储地理图元数据结构
4. 地图的绘制
4.1 基本的点、线、多边形的绘制
在把将上一步得到的坐标和坐标系的定义通过高斯投影变换[5],再将得到的坐标经过变换到MiniGUI的显示窗口,在本文中即平台的LCD的某个区域上,按照MiniGUI中定义的POINT类型,最后在MiniGUI中的MSG_PAINT消息中进行地图的绘制。
进入MiniGUI的绘制窗口前,首先完成对MapInfo格式文件的解析,得到上述的数据结构。进入窗口后,根据不同的地图元数据中指示的类型特点,如点、线、面、文本,调用不同的MiniGUI的绘图函数,如PollyLineTo、FillPolygon、 TextOut、Circle等函数在绘制区进行图元的绘制。增加坐标的变换和比例尺的分析后,可实现放大,缩小,漫游,测距功能。
4.2 功能扩展
在基本的绘制完成后