微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于嵌入式Linux的MapInfo格式地图显示

基于嵌入式Linux的MapInfo格式地图显示

时间:05-21 来源:互联网 点击:

包或者包的队列,之后可以根据一定的算法计算需要重绘的区域。并在MiniGUI.cfg中需要指定使用新构造的Dummy引擎。

3.MapInfo格式地图的显示

MapInfo是面向应用的桌面地图信息系统,数据组织方式灵活,查询、统计、分析及专题制图功能较强,其格式的地图较丰富。在一些农田采集平台,城市交通GPS引导中往往使用一些MapInfo格式的地图。由于在Linux平台下,没有控件的支持,但是可以通过分析 MapInfo格式,使用MiniGUI实现简单的地图显示。

MapInfo的数据格式主要分为TAB和MIF(MID)两种格式,TAB格式是MapInfo唯一的数据存储格式, 所有基于该软件上的应用系统都要以这种格式为依托。MapInfo数据采用双数据库存储模式,属性数据存储在属性数据的表结构文件(.tab)与属性数据文件(.dat)中,空间数据保存在空间数据文件(.map) 中,两者通过交叉索引文件(.id)联系(如图1所示)。通常TAB格式的文件主要由以下几个文件组成:.tab文件描述表结构,.dat或.dbf文件包含表的数据,.map文件表的图形对象,.id文件包含表的地理索引,.ind文件包含表的列索引。

MIF(MID)是MapInfo的外部数据交换文件。MapInfo主要通过MIF、MID两个文件与其他GIS软件建立数据接口,其中MIF数据文件主要保存空间数据的图形信息,MID 数据文件主要保存空间数据的属性信息。MIF由文件头和数据段组成,数据段包含MapInfo定义的点、线、面、多义线、区域、圆弧、文本、矩形、圆角矩形和椭圆等实体。MID文件为对应实体的属性。IND文件不是必需的,它对应于每个索引字段都有一个索引表。它们之间关系如图1所示。

MIF文件包括MIF File Header和MIF Data Section两个部分。在MIF File Header部分中我们通过格式分析可以得到该图层使用的坐标系是何种格式,使用的椭球标准(如WGS84,International 1924),转换坐标系使用的七参数等等。具体可以针对将要显示的地图的坐标系格式实现一种,如WGS84这种坐标系。而在MIF Data Section部分中地理对象被描述为point、line、polyline、region、arc、text、rectangle、rounded rectangle、ellipse、multipoint、collection这几种类型,并按照一定的格式存储。

掌握了文件之间的关系之后,可以用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 功能扩展

在基本的绘制完成后,还可以根据之前得到的数据结构和MiniGUI库函数的API扩展其他的功能。

选取图元的功能可以通过截取鼠标键弹起的信息,得到当前的屏幕位置信息,如果将该位置与线元素的距离比较,如果小于一定的像素阈值,则认为选中,并显示提示信息;如果是选取面,可以用是否在多边形内部来判断是否被选中。

另外,对一些特殊的标注点的图形显示,如医院、学校,可以采用加载bmp格式的图标在显示区标注。

笔者的平台要实时的通过串口接受GPS定位坐标和农田采集的信息,通过一个按钮控制一个线程的开关,该线程读取串口数据记录到文件中。该线程和MiniGUI之间可采用信号量同步,最终根据属性信息对农田区,即MiniGUI的API对多边形区域进行着色,产生某种属性的分布图。最后还可以将所有农田数据整合,得到预测的产量等分布图等等。

5. 结束语

本文提供了一种面向手持设备的工具嵌入式地图显示的具体方案,通过对MiniGUI的移植和对MapInfo格式文件的分析,达到最终地图的显示。采用北京市二环以内的MapInfo地图进行显示(含1000个左右的各种图元),将嵌入式平台显示结果(图3)和PC机上的 MapInfo软件显示的结果

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top