首页> 中国专利> 一种基于Qt的嵌入式地图生成方法

一种基于Qt的嵌入式地图生成方法

摘要

本发明提供了地图技术领域的一种基于Qt的嵌入式地图生成方法,包括:步骤S10、创建一边界表以及一区域信息表;步骤S20、基于Qt创建一地图视图,并为所述地图视图创建一显示场景;步骤S30、设置所述地图视图的滚动条、背景色、放大图标、缩小图标以及鼠标联动函数;步骤S40、利用所述边界表以及区域信息表,分别在所述显示场景中绘制边界以及区域,并设定各所述区域的标识;步骤S50、在所述地图视图中调用显示函数创建一覆盖所有边界的矩形框,基于所述矩形框显示区域以及标识,并利用所述放大图标、缩小图标以及鼠标联动函数调整区域的显示效果。本发明的优点在于:极大的降低了嵌入式地图的使用门槛,极大的提升了适用范围。

著录项

  • 公开/公告号CN113220769A

    专利类型发明专利

  • 公开/公告日2021-08-06

    原文格式PDF

  • 申请/专利权人 福建新大陆通信科技股份有限公司;

    申请/专利号CN202110431347.1

  • 发明设计人 赵泽钧;

    申请日2021-04-21

  • 分类号G06F16/26(20190101);G06F16/29(20190101);G06F3/0484(20130101);G06F3/0483(20130101);

  • 代理机构35212 福州市鼓楼区京华专利事务所(普通合伙);

  • 代理人范小清

  • 地址 350000 福建省福州市马尾开发区儒江东路70号(飞毛腿工业园)6#楼及5#楼二至四层

  • 入库时间 2023-06-19 12:07:15

说明书

技术领域

本发明涉及地图技术领域,特别指一种基于Qt的嵌入式地图生成方法。

背景技术

随着智慧化、电子化的发展,深入到街道或乡村的各个地区都开始安装满足不同功能的嵌入式设备。为了满足功能性、管理性的需求,这些嵌入式设备依据地区的单元层次结构进行管理,例如智能应急广播系统就是由上级前端控制下属镇村的终端进行播放。为便于基层操作人员管理下级地区的嵌入式设备,上级的嵌入式设备一般采用地图形式进行管理,展示下级地区的嵌入式设备。

然而,传统上设置在嵌入式设备内的地图,采用在线调用地图服务商的API在Web界面上显示的方式,存在如下缺点:1、嵌入式设备必须联网;2、地图服务商只针对县级以上地区有地图轮廓;3、主要用于展示,难以进行业务相关的操作;4、启动浏览器引擎渲染地图对嵌入式设备的软硬件有一定要求。

因此,如何提供一种基于Qt的嵌入式地图生成方法,实现降低嵌入式地图的使用门槛,并提升适用范围,成为一个亟待解决的问题。

发明内容

本发明要解决的技术问题,在于提供一种基于Qt的嵌入式地图生成方法,实现降低嵌入式地图的使用门槛,并提升适用范围。

本发明是这样实现的:一种基于Qt的嵌入式地图生成方法,包括如下步骤:

步骤S10、创建一边界表以及一区域信息表,并将所述边界表以及区域信息表存储至地图数据库;

步骤S20、基于Qt创建一地图视图,并为所述地图视图创建一显示场景;

步骤S30、设置所述地图视图的滚动条、背景色、放大图标、缩小图标以及鼠标联动函数;

步骤S40、利用所述地图数据库中的边界表以及区域信息表,分别在所述显示场景中绘制边界以及区域,并设定各所述区域的标识;

步骤S50、在所述地图视图中调用显示函数创建一覆盖所有边界的矩形框,基于所述矩形框显示区域以及标识,并利用所述放大图标、缩小图标以及鼠标联动函数调整区域的显示效果。

进一步地,所述步骤S10具体为:

通过公共API获取各级行政区域的地理经纬度边界数据、地区编码、区域编码、区域名字、区域经度以及区域纬度;

创建一边界表,将所述地区编码作为主键,将所述地理经纬度边界数据作为主键对应的值存储至边界表中;

创建一区域信息表,将所述区域编码、区域名字、区域经度以及区域纬度存储至区域信息表中,并设定一关联字段,用于标识各区域编码对应上一级的区域编码。

进一步地,所述地理经纬度边界数据为包括若干个坐标点的长字符串,各坐标点之间以分号分隔,各坐标点的经度和纬度以空格分隔;

所述地区编码以及区域编码均为12位数字的字符串。

进一步地,所述步骤S30中,所述滚动条在地图缩放时不进行显示;

所述放大图标以及缩小图标在地图缩放时保持大小和位置不变,并分别关联放大函数以及缩小函数;

所述鼠标联动函数包括一鼠标按下联动函数以及一鼠标弹起联动函数,分别用于开启和关闭拖拽模式。

进一步地,所述步骤S40具体为:

读取所述地图数据库中边界表的地理经纬度边界数据,得到若干个坐标点,利用坐标转换公式将各所述坐标点映射到显示场景中,利用addPolygon()函数连接各所述坐标点完成边界的绘制;

读取所述地图数据库中区域信息表的区域经度以及区域纬度,利用坐标转换公式将各所述区域经度以及区域纬度映射到显示场景中,完成区域的绘制,并设定各所述区域的标识。

进一步地,所述坐标转换公式具体为:

x=(width*hscale/360)*(180+lng);

y=(height*vscale/180)*(90-lat);

其中x和y表示坐标转换后的横坐标和纵坐标;width和height表示显示场景的分辨率的宽和高;hscale和vscale表示显示调整系数,为正数;lng和lat表示坐标转换前的经度和纬度。

进一步地,所述步骤S40中,所述设定各所述区域的标识具体为:

通过Arealtem类绘制图标用于表示所述区域,设定所述图标的填充颜色,用不同颜色表示所述区域内嵌入式设备的不同工作状态,并绘制一文本框用于显示所述区域名字;所述图标以及文本框在地图缩放时保持大小不变。

进一步地,所述步骤S40还包括:

在绘制边界以及区域时,若区域的坐标点A出现在对应边界的外边时,遍历边界找到离坐标点A最近的坐标点B,连接坐标点A和坐标点B得到直线AB,计算直线AB的斜率k;

判断k的取值范围是否为[-1,1],若是,则校正坐标点C离边界的距离d为边界轮廓高度的1/40;若否,则所述距离d为边界轮廓宽度的1/40;

将所述直线AB延伸至边界内,基于所述距离d确定校正坐标点C。

本发明的优点在于:

通过在嵌入式设备上创建一用于存储边界表以及区域信息表的地图数据库,使得嵌入式设备在显示地图时直接从地图数据库中获取数据即可,嵌入式设备无需联网;通过获取各级行政区域的地理经纬度边界数据、地区编码、区域编码、区域名字、区域经度以及区域纬度,使得嵌入式设备上的地图能够精确显示到镇级的地图轮廓;通过Qt创建嵌入式地图,不需要GPU的支持,降低了软硬件的要求;通过设置滚动条、背景色、放大图标、缩小图标以及鼠标联动函数,自定义图标的颜色以及文本框显示的内容,可以对地图进行复杂的操作,最终极大的降低了嵌入式地图(应用于嵌入式设备的地图)的使用门槛,极大的提升了嵌入式地图的适用范围。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1是本发明一种基于Qt的嵌入式地图生成方法的流程图。

图2是本发明坐标点校正的示意图。

具体实施方式

请参照图1至图2所示,本发明一种基于Qt的嵌入式地图生成方法的较佳实施例,包括如下步骤:

步骤S10、在嵌入式设备上创建一边界表(Bounds表)以及一区域信息表(Areas表),并将所述边界表以及区域信息表存储至地图数据库;

步骤S20、在嵌入式设备上基于Qt(Graphics View框架)创建一地图视图(MapView),并为所述地图视图创建一显示场景(scene);scene可以方便地创建多边形、处理缩放、设置位置等操作;

步骤S30、设置所述地图视图的滚动条、背景色、放大图标(加号)、缩小图标(减号)以及鼠标联动函数;设置所述背景色用于提升地图观看的舒适度;

步骤S40、利用所述地图数据库中的边界表以及区域信息表,分别在所述显示场景中绘制边界以及区域,并设定各所述区域的标识;

步骤S50、在所述地图视图中调用显示函数创建一覆盖所有边界的矩形框,基于所述矩形框显示区域以及标识,并利用所述放大图标、缩小图标以及鼠标联动函数调整区域的显示效果,即完成嵌入式地图的生成。通过创建覆盖所有边界的矩形框,让地图视图可以完整且饱满的显示当前地图。

通过上述步骤,本申请可以在对软硬件性能不高的嵌入式设备上,绘制出具有交互性、拓展性的地图,且保证位置的正确,相比现有通过网页技术调用显示地图,具有速度快、占用空间小、可离线使用、拓展性强等优点,便于嵌入式设备的管理,减少管理费用。

所述步骤S10具体为:

通过公共API获取各级行政区域的地理经纬度边界数据、地区编码、区域编码、区域名字、区域经度以及区域纬度;

创建一边界表,将所述地区编码作为主键,将所述地理经纬度边界数据作为主键对应的值存储至边界表中;即将所述地理经纬度边界数据按照分号提取坐标点,再将各坐标点分别与一地区编码对应存储至边界表中;

创建一区域信息表,将所述区域编码、区域名字、区域经度以及区域纬度存储至区域信息表中,并设定一关联字段,用于标识各区域编码对应上一级的区域编码。

所述地理经纬度边界数据为包括若干个坐标点的长字符串,各坐标点之间以分号分隔,各坐标点的经度和纬度以空格分隔;

所述地区编码以及区域编码均为12位数字的字符串。

所述步骤S30中,对MapView使用setHorizontalScrollBarPolicy()函数以及setVerticalScrollBarPolicy()函数使所述滚动条在地图缩放时不进行显示;

所述放大图标以及缩小图标在地图缩放时保持大小和位置不变,并分别关联放大函数以及缩小函数,父对象为MapView;所述放大函数以及缩小函数需要首先读出MapView的变换矩阵,将表示水平与垂直的分量进行加减以实现放大或缩小,最后再把修改完的变换矩阵设置回去进行缩放;

所述鼠标联动函数包括一鼠标按下联动函数以及一鼠标弹起联动函数,分别用于开启和关闭拖拽模式。

所述步骤S40具体为:

读取所述地图数据库中边界表的地理经纬度边界数据,得到若干个坐标点,利用坐标转换公式将各所述坐标点映射到显示场景中,利用addPolygon()函数连接各所述坐标点完成边界的绘制;

读取所述地图数据库中区域信息表的区域经度以及区域纬度,利用坐标转换公式将各所述区域经度以及区域纬度映射到显示场景中,完成区域的绘制,并设定各所述区域的标识。

所述坐标转换公式具体为:

x=(width*hscale/360)*(180+lng);

y=(height*vscale/180)*(90-lat);

其中x和y表示坐标转换后的横坐标和纵坐标;width和height表示显示场景的分辨率的宽和高;hscale和vscale表示显示调整系数,为正数,取值分别优选为160和130;lng和lat表示坐标转换前的经度和纬度;所述坐标转换公式用于将经纬度映射为平面坐标。

所述步骤S40中,所述设定各所述区域的标识具体为:

通过继承自QGraphicsItem的Arealtem类绘制图标用于表示所述区域,设定所述图标的填充颜色,用不同颜色表示所述区域内嵌入式设备的不同工作状态,并绘制一文本框用于显示所述区域名字;所述图标以及文本框在地图缩放时保持大小不变。

所述步骤S40还包括:

在绘制边界以及区域时,若区域的坐标点A出现在对应边界的外边时,遍历边界找到离坐标点A最近的坐标点B,连接坐标点A和坐标点B得到直线AB,计算直线AB的斜率k;

判断k的取值范围是否为[-1,1],若是,则校正坐标点C离边界的距离d为边界轮廓高度的1/40;若否,则所述距离d为边界轮廓宽度的1/40;

将所述直线AB延伸至边界内,基于所述距离d确定校正坐标点C;坐标点校正过程需要使用到反正切函数、正弦函数以及余弦函数。

综上所述,本发明的优点在于:

通过在嵌入式设备上创建一用于存储边界表以及区域信息表的地图数据库,使得嵌入式设备在显示地图时直接从地图数据库中获取数据即可,嵌入式设备无需联网;通过获取各级行政区域的地理经纬度边界数据、地区编码、区域编码、区域名字、区域经度以及区域纬度,使得嵌入式设备上的地图能够精确显示到镇级的地图轮廓;通过Qt创建嵌入式地图,不需要GPU的支持,降低了软硬件的要求;通过设置滚动条、背景色、放大图标、缩小图标以及鼠标联动函数,自定义图标的颜色以及文本框显示的内容,可以对地图进行复杂的操作,最终极大的降低了嵌入式地图(应用于嵌入式设备的地图)的使用门槛,极大的提升了嵌入式地图的适用范围。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号