一种实现电子地图沿线展示全景图像计算机系统的制作方法

文档序号:18397046发布日期:2019-08-09 23:31阅读:257来源:国知局
一种实现电子地图沿线展示全景图像计算机系统的制作方法

本发明涉及互联网地理信息技术领域,具体涉及一种实现电子地图沿线展示全景图像计算机系统。



背景技术:

随着电子地图技术的发展,基于电子地图的全景图像已经成为一种新的、开放的资源。全景图像的采集方式主要是全景图像采集车沿街道匀速行进,每隔一定距离(如10-30米)拍摄一张全景图像,互联网地理信息服务平台提供商为电子地图、全景图像开发利用提供开放平台,如免费提供android、ios、web开发开放平台,以实现电子地图、全景图像的调用与显示,构建功能丰富、交互性强的电子地图应用。在导游、线路查看工作中经常需要事先实地“走马观花”熟悉一下路线,实际试走一遍,如果能利用互联网的全景图像在计算机屏幕上虚拟“踩线”省工省时,然而依托现有街景地图,这需要完全依赖人工在电子地图上反复操作,通过人机交互在电子地图某一划定路段上不断移动鼠标重复操作逐一查询获取多个全景图像,或者在全景图像视窗内不断移动鼠标重复操作方向箭头获取前方全景图像,才能完成计算机屏幕上虚拟“踩线”工作;另外,目前的网络终端地图导航具有加载全景图像的功能,在网络终端地图导航中,有线路设定、实时卫星定位、实时3d场景显示和实时语音提示等导航功能,但不能进行在显示的指定路线上,按一定间隔和行进方向提取及组织显示相应全景图像完成虚拟“踩线”工作。“一种实现街景视图展示的方法及装置”(申请号:201410457789.3,专利授权公告号cn104199944b)对上述问题进行了有益探索,其采取预先生成各路段沿道路行进方向的视野角度范围内的部分全景图像拼接成动态图像,根据接收的起点、终点坐标,生成动态图像自动播放,这在解决了现有技术中人工操作较为多的问题,并获得动态图像自动播放的快捷优势的同时,需要增加一定规模的服务器图像存贮负担。总之,需要本领域技术人员迫切解决的一个技术问题就是如何能够按照电子地图上任意一段设定线路,将其覆盖的全景图像自动顺序提取出来并进行有效地组织定向、定时显示,且无需额外占用服务器的图像存贮量。



技术实现要素:

本发明所要解决的技术问题是提供一种实现电子地图沿线展示全景图像计算机系统,将终端屏幕电子地图上任意设定的一段线路用折线数据作为数学表达方式,在此基础上,沿着折线行进方向,按照一定距离间隔,自动进行全景图像提取工作,无需进行图像再拼接增加服务器图像存贮负担,解决人工操作鼠标在电子地图上沿线路采集全景图像效率低的问题,通过创立一个用于存储折线、提取点坐标和显示方位的数据结构;设置一组操作变量,通过接收一系列有起点、终点,并有前后顺序的点的经纬度坐标,形成一个有起点终点、有行进方向的折线,将该折线数据进行存储;创建一个沿折线遍历其直线段按照一定距离间隔生成分割点算法,在组成折线的每个直线段内,按照直线段行进方向和一定间隔距离再分割成若干个子直线段,相应新生成分割点、并顺序存储,形成沿折线带有前后拓扑关系、显示方位、经纬度坐标的一组全景图像提取点;最后按照遍历提取点检索全景图像算法,在折线的各点及提取点顺序逐一提取其点所覆盖一定范围内的一个全景图像,在终端屏幕全景图像窗口内,按一定时间间隔定向控制显示,所显示的全景图像的水平视角是与行进方向有一个固定夹角,竖直视角是与相对水平面的竖直方向有一个固定夹角,通过创建数据结构、两步遍历法,对沿电子地图上一线路的若干个全景图像进行定位、定向、定时、顺序的控制显示,实现显著提高全景图像提取工作效率目的。

为实现上述目的,本发明公开了一种实现电子地图沿线展示全景图像计算机系统,包括存储器、处理器、显示器、互联网、电子地图、全景图像,以及存储在存储器上并可在处理器上运行的计算机程序,在程序内首先进行初始化设置,将终端显示器屏幕s100左右一分为二,分别开设一个电子地图窗口s120和一个全景图像窗口s110,在电子地图窗口内实例化一个电子地图并命名为电子地图视窗s121,用于显示折线、提取点,在全景图像窗口内实例化一个全景图像并命名为全景图像视窗s111,用于显示全景图像,如图2所示,需要说明的是,本发明对全景图像窗口和电子地图窗口在终端屏幕内如何分布、是否铺满不做限制,对实现通过接收一系列有起点、终点顺序点的经纬度坐标,形成一个带行进方向的折线,沿所述折线,按照行进方向和一定间隔距离自动顺序提取所述折线覆盖的多个全景图像,并按照与行进方向在水平面沿顺时针有一个固定夹角作为全景图像的水平视角、沿竖直方向与水平面有一个固定夹角作为全景图像的竖直视角,逐一延时显示全景图像,其特征在于,所述处理器执行所述程序时实现以下步骤:

步骤一:设置数据结构,包括设置一个包括存贮两个以上点经纬度坐标的折线数据存贮结构,设置一个包括存贮若干个全景图像提取点的经纬度坐标的全景图像提取点数据存贮结构,所述折线数据存贮结构或全景图像提取点数据存贮结构还包括全景图像提取点水平视角,进入步骤二;

步骤二:设置操作变量,包括操作采集变量设置、全景图像显示变量设置、初始值设置,操作采集变量设置进一步包括,设置一个折线点总数变量n(取值范围:2至100)、一个分割距离变量l(取值范围:10至1000米)、一个全景图像搜索半径变量d(取值范围:10至50米),全景图像显示变量设置进一步包括,设置一个全景图像显示的水平偏移视角变量a(与行进方向在水平面沿顺时针的夹角,取值范围:0至360度)、一个全景图像竖直偏移视角变量b(沿竖直面与水平面夹角,向上为正、向下为负,取值范围:正负30度)、一个全景图像放大系数变量z、一个延迟时间变量t(取值范围:2至10秒),初始值设置进一步包括,为l、d、z、t设置一个数值,l需大于等于d,进入步骤三;

步骤三:基础数据采集,包括折线数据、显示方位数据采集,折线数据采集进一步包括,按照从起点到终点顺序接收n个空间地理位置点的经纬度坐标,形成一个顺序存储n-1个直线段的折线数据表,显示方位数据采集进一步包括,接收一个全景图像显示的水平偏移视角,接收一个全景图像竖直偏移视角,进入步骤四;(需要说明的是,本发明对接收一个折线上两个以上点的经纬度坐标、显示方位数据等基础数据的具体方式方法、具体数值不加以限制)

步骤四:生成全景图像提取点,包括按照逐直线段遍历设置提取点算法,遍历所述折线数据表的每一个直线段,对于所述每一个直线段,将所述折线上一直线段的两端点、按照所述分割距离l获取的若干个分割点的经纬度坐标、根据直线段行进方向叠加所述全景图像显示的水平偏移视角作为该全景图像提取点的水平视角,进行顺序存储,形成一个带有前后方位拓扑关系的多个全景图像提取点的全景图像提取点数据表,进入步骤五;

步骤五:遍历提取点显示全景图像,按照遍历提取点检索全景图像算法,建立遍历所有全景图像提取点循环,在遍历循环内执行包括,第一步、提取所述全景图像提取点数据表的当前记录位置的全景图像提取点的经纬度坐标和其水平视角,第二步、按照所述全景图像搜索半径d,查询所提取的全景图像提取点周围指定范围内是否有全景图像,如果有则将所述提取全景图像提取点的水平视角作为全景图像显示的水平视角,将所述全景图像竖直偏移视角作为全景图显示的竖直视角,以及已设置的全景图放大系数,利用延迟函数间隔t秒时间后,在全景图像窗口内显示该全景图像,第三步、所述当前记录位置移向下一条记录位置,继续进行所述遍历循环。

优先的,步骤一中包括设置一个包括存贮两个以上点经纬度坐标的折线数据存贮结构,设置一个包括存贮若干个全景图像提取点的经纬度坐标的全景图像提取点数据存贮结构,所述折线数据存贮结构或全景图像提取点数据存贮结构还包括全景图像提取点水平视角还包括,设置一个包括经度坐标、纬度坐标2个字段的折线数据存贮结构,用于存储n个点经纬度坐标,设置一个包括经度坐标、纬度坐标、水平视角3个字段的全景图像提取点数据存贮结构,用于存储若干个全景图像提取点的经纬度坐标和其水平视角,如图3所示。需要说明的是,该种数据结构的优点是遍历全景图像提取点时,只需一次遍历就可完成,缺点是每个全景图像提取点均存储水平视角,存在冗余问题。

优先的,步骤一中包括设置一个包括存贮两个以上点经纬度坐标的折线数据存贮结构,设置一个包括存贮若干个全景图像提取点的经纬度坐标的全景图像提取点数据存贮结构,所述折线数据存贮结构或全景图像提取点数据存贮结构还包括全景图像提取点水平视角还包括,设置一个包括经度坐标、纬度坐标、水平视角、子直线段总数4个字段的折线数据存贮结构,用于存储n个点经纬度坐标、n-1个直线段的水平视角(直线段的行进方向与全景图像显示的水平偏移视角之和,全景图像取景点的水平视角直接使用其所在直线段的水平视角)、子直线段总数,设置一个包括经度坐标、纬度坐标2个字段的全景图像提取点数据存贮结构,用于存储若干个全景图像提取点经纬度坐标,如图4所示。需要说明的是,该种数据结构的优点是数据存储占用空间相对较少,不存在冗余问题,缺点是遍历全景图像提取点时,需遍历折线的直线段、再嵌套遍历全景图像提取点才能完成,运算相对耗时。

优先的,步骤三中按照从起点到终点顺序接收n个空间地理位置点的经纬度坐标还包括,包括以采用人机交互方式直接从终端屏幕电子地图上获取,或者从指定数据库相关表中直接读取,或者从指定数据文件中直接读取,或者根据某算法计算出的从起点到终点的路径序列点的经纬度数据,或者程序载体是网页则通过读取网页地址参数变量href内的内容五种方式。需要说明的是,本发明对接收一个折线上从起点到终点的若干个点的经纬度坐标的具体方式方法、点的数量、具体数值不加以限制。

优先的,所述以采用人机交互方式直接从终端屏幕电子地图上获取还包括,在电子地图窗口内的电子地图上,在用户触发鼠标或屏幕后,从触发地图事件中,获得该点的经纬度坐标数值,并在电子地图上实例化一个图标表示该点位置,重复n次从触发地图事件中,采集n个点。

优先的,所述程序载体是网页则通过读取网页地址参数变量href内的内容还包括,在生成网页时,在网页地址参数变量href内加入n个点的经纬度坐标数值,在加载网页时,从网页地址参数变量href内对应读取n个点的经纬度坐标数值。需要说明的是,本发明对网页地址参数变量href内n个点的经纬度坐标压缩编码的具体方式方法不加以限制。

优先的,步骤三中形成一个顺序存储n-1个直线段的折线数据表还包括,一个所述直线段由一个起点和一个终点组成,所述折线中第一个直线段的终点是第二个直线段的起点,以此类推,所述折线中最后一个直线段的终点就是所述折线的终点,所述折线中所述第一个直线段的起点是所述折线的起点,组成一个具有行进方向包含n-1个首尾相连的直线段的折线,从第0条记录开始,依次追加形成所述折线数据表。

优先的,按照本发明的数据结构具体设计之一,如图3所示的数据结构,步骤四中包括按照逐直线段遍历设置提取点算法,遍历所述折线数据表的每一个直线段,对于所述每一个直线段,将所述折线上一直线段的两端点、按照所述分割距离l获取的若干个分割点的经纬度坐标、根据直线段行进方向叠加所述全景图像显示的水平偏移视角作为该全景图像提取点的水平视角,进行顺序存储,形成一个带有前后方位拓扑关系的多个全景图像提取点的全景图像提取点数据表还包括,设置一个直线段序列位置变量p、一个全景图像提取点个数变量q、一个单个直线段内子直线段总数变量sum,初始化p=0、q=0、sum=0,遍历所述折线数据表的所述折线的n-1个直线段(p从0开始,至n-2),每次循环执行的内容进一步包括,提取该直线段两端点坐标,计算出的所提取的直线段上沿起点向终点的在水平面与正北方向的顺时针夹角(行进方向),并与所述全景图像显示的水平偏移视角a相加,获得水平视角(取值范围是0至360度),依据分割距离l(取值范围:10至1000米),沿起点向终点方向将该直线段分割出sum子直线段形成sum-1个分割点,将该直线段起点、sum-1个分割点、终点的经纬度坐标和所获得水平视角,从第q条记录开始逐条追加到所述全景图像提取点数据表中,q=q+sum+1。

优先的,按照本发明的数据结构设计之二,如图4所示的数据结构,步骤四中包括按照逐直线段遍历设置提取点算法,遍历所述折线数据表的每一个直线段,对于所述每一个直线段,将所述折线上一直线段的两端点、按照所述分割距离l获取的若干个分割点的经纬度坐标、根据直线段行进方向叠加所述全景图像显示的水平偏移视角作为该全景图像提取点的水平视角,进行顺序存储,形成一个带有前后方位拓扑关系的多个全景图像提取点的全景图像提取点数据表还包括,设置一个直线段序列位置变量p、一个全景图像提取点个数变量q、一个单个直线段内子直线段总数变量sum,初始化p=0、q=0、sum=0,遍历所述折线数据表的所述折线的n-1个直线段(p从0开始,至n-2),每次循环执行的内容进一步包括,提取该直线段两端点坐标,计算出的所提取的直线段上沿起点向终点的在水平面与正北方向的顺时针夹角(行进方向),并与所述全景图像显示的水平偏移视角a相加,获得水平视角(取值范围是0至360度),依据分割距离l(取值范围:10至1000米),沿起点向终点方向将该直线段分割出sum子直线段形成sum-1个分割点,将所获得水平视角、子直线段总数sum存储到所述折线数据表的第p条记录的对应字段内,将该直线段起点、sum-1个分割点、终点的经纬度坐标,从第q条记录开始逐条追加到所述全景图像提取点数据表中,q=q+sum+1,如图6所示。

优先的,按照本发明的数据结构设计之二,如图4所示的数据结构,步骤五中按照遍历提取点检索全景图像算法,建立遍历所有全景图像提取点循环,在遍历循环内执行包括,第一步、提取所述全景图像提取点数据表的当前记录位置的全景图像提取点的经纬度坐标和其水平视角,第二步、按照所述全景图像搜索半径d,查询所提取的全景图像提取点周围指定范围内是否有全景图像,如果有则将所述提取全景图像提取点的水平视角作为全景图像显示的水平视角,将所述全景图像竖直偏移视角作为全景图显示的竖直视角,以及已设置的全景图放大系数,利用延迟函数间隔t秒时间后,在全景图像窗口内显示该全景图像,第三步、所述当前记录位置移向下一条记录位置,继续进行所述遍历循环还包括,设置一个直线段序列位置变量p、一个直线段内点序列位置变量c、一个指向所述全景图像提取点数据表的当前记录位置变量q、一个单个直线段内子直线段总数变量sum、一个水平视角变量h、一个竖直视角变量v,初始化p=0、c=0、q=0、sum=0、v=b,设置最外层对所述折线数据表进行直线段遍历,p从0至n-2(即从第1个直线段到第n-1个直线段),提取折线上第p条记录,即第p+1个直线段的水平视角、子直线段总数sum,将所提取的水平视角作为该直线段上的所有全景图像提取点的水平视角赋值给h,c=0,设置第二层的一直线段内点遍历,c从0至sum-1(即从该直线段起点开始至最后一个分割点),在所述第二层遍历循环内执行包括,第一步、从所述全景图像提取点数据表的第q条记录中提取该点经纬度坐标,第二步、按照所述全景图像搜索半径d,依据所提取的第q条记录中的点经纬度坐标查询该点周围指定区域内是否有全景图像,如果有则使用所查询到的全景图像id、所述水平视角h、所述竖直视角v、所述全景图像放大系数z,利用延迟函数间隔t秒时间后,在全景图像窗口内显示该全景图像,第三步、c=c+1、q=q+c,判断所述直线段内点序列位置c,如果小于等于所述本直线段内子直线段总数变量sum-1,则继续进行所述第二层的一直线段内点遍历,如果大于sum-1则进一步判断p,如果大于n-2、则结束,否则p=p+1、q=q+1、继续进行最外层的折线直线段遍历。

本发明的有益效果是:对于本发明利用电子地图和全景图像,通过创建电子地图上折线、全景图像提取点存贮数据结构、遍历折线直线段获取全景图像提取点,并进行定向、定位、定时、顺序控制显示,与现有技术相比,全景图像提取效率提高效果显著,具体有益效果有以下四个方面,一是提高全景图像查询工作效率,批量自动提取全景图像,将沿一路段行进方向逐一提取具有相对位置逻辑关系的一串全景图像的复杂人工操作转化为计算机自动完成,相对于传统需要完全依赖人工在电子地图上某一设定路段,一个一个提取显示全景图像的方式,减少了人机交互动作次数,显著提高工作效率,如果按一公里直线段设定路段每隔50米提取显示一个全景图像计算,批量自动提取相对于人机交互操作工作效率提高10倍;二是在网络终端完成虚拟“踩线”工作,沿行进方向某一固定夹角(包括水平和竖直视角)显示全景图像,在一个直线段内,按照计算出的提取点所查询出的全景图像,均按照统一直线段行进方向的一个固定夹角,使用时间延迟函数延迟一定时间后显示,如同坐在敞篷车里看街景的效果,街景随着敞篷车前进,一幅一幅地展现出来,把电子地图上海量全景图像,有效组织利用展现出来;三是为电子地图空间查询增添了一种新的方法,本发明的遍历一折线各直线段上沿行进方向设置具有前后方位拓扑关系提取点、再遍历提取点检索全景图像的两步遍历法,优于一般gis软件中的线路buffer一次遍历算法(在一划定线路的一定半径范围内提取满足一定属性条件、具有位置属性但无前后拓扑关系的信息集合);四是本发明实现的定向显示沿线景物,是在未增加服务器图像存储负担的前提下,实现定向、定位、定时、顺序控制显示,这也是本发明的在利用全景图像全视野的优势独创的解决方案。

附图说明

图1为本发明的实现电子地图沿线展示全景图像计算机程序流程图。

图2为本发明屏幕窗口设置示意图。

图3为本发明的数据结构设计之一示意图。

图4为本发明的数据结构设计之二示意图。

图5为本发明的所述折线逐直线段遍历设置分割点算法实现示意图。

图6为本发明的数据结构设计之二的逐直线段遍历提取点数据表示意图。

图7为本发明的沿折线通过l、d两步遍历法查询与经典gis技术中buffer通过d一次遍历算法查询区别示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图,通过以下2个实施例具体说明,对本发明作进一步详细的说明。

实施例1,作为本发明的实施例1,如图1所示,示出了本发明实现一种实现电子地图沿线展示全景图像计算机系统的程序流程图,具体数据结构使用的是本发明的数据结构设计之一,如图3所示,编程语言使用javascript脚本语言,基于html5及css3,全景图像及相应开发工具使用“x市xx行业主要设施基础信息管理系统”中配置的全景图像和相应的javascriptapi,该系统采用b/s结构,该系统中的全景图像是通过2000万像素专业全景相机,根据工作需要在选定线路拍摄的三维实景共m个全景图像,每个全景图像数据包括其拍摄地点经纬度坐标、id码属性数据和图像数据,全景图像数据和应用程序布设在所述服务器中,全景图像属性数据存储在一个包括id、经度、纬度3个字段的全景图像属性数据表内,从第0条记录开始至m-1条记录存储所拍摄的m个全景图像的属性数据,电子地图具体使用百度地图,百度公司针对web应用提供了一套webjavascriptapi,它是一套由javascript语言编写的应用程序接口,可提供网站中构建地图,支持pc端和移动端基于浏览器的地图应用开发,且支持html5特性的地图开发,实施例1以一个名为panostepshow.html互联网网页s100作为载体,在页面中使用<scripttype='text/javascript'src='gpanotjw.js'></script>初始化链接全景图像功能库,使用<scripttype="text/javascript"src="http://api.map.baidu.com/api@v=3.0"></script>初始化链接百度地图,将s100左右一分为二,分别从左向右具体使用<div>标签创建并命名为一个全景图像窗口区块s110和一个电子地图窗口区块s120,具体使用百度公司webjavascriptapi在电子地图窗口区块s120内实例化一个电子地图并命名为电子地图视窗s121,vars121=newbmap.map(“s120”);s121.centerandzoom(newbmap.point(117.1212,39.1567),12},s121作为一个折线显示载体,具体使用vars111=newgpanooptions(“s110”,“服务器存储全景图像路径”,“id”),id为自建的m个全景图像中的一个全景图像id码,在全景图像窗口区块s110内实例化一个全景图像视窗,作为全景图像显示载体,如图2所示,对通过网页url网址路径后面的查询字符串格式读取折线顺序点的经纬度坐标及显示视角,按照与行进方向呈一个固定夹角和一定间隔距离自动顺序提取所述折线覆盖的路段上的多个全景图像,实现定向、定时、顺序控制显示全景图像,计算机程序进行以下步骤:

步骤一:设置数据结构1,包括设置一个包括存贮两个以上点经纬度坐标的折线数据存贮结构,设置一个包括存贮若干个全景图像提取点的经纬度坐标的全景图像提取点数据存贮结构,所述折线数据存贮结构或全景图像提取点数据存贮结构还包括全景图像提取点水平视角,进入步骤二。本发明实施例可以提供如下具体方案:使用本发明的数据结构设计之一,如图3所示,分别设置用于存储折线点经度坐标、纬度坐标两个一维数组lat[]、lng[]来构成折线数据表;分别设置用于存储全景图像提取点经度坐标、纬度坐标、水平视角3个一维数组panolat[]、panolng[]、dic[]来构成全景图像提取点数据表。需要说明的是,本发明使用的折线数据是具有数据结构,使用折线的数据进行设定线路数学表达,并在此表述的基础上进行再分割形成提取点,依据提取点逐点提取全景图像定向显示工作属本发明原创,是实现虚拟“踩线”工作的数学表达基础。

步骤二:设置操作变量2,包括操作采集变量设置、全景图像显示变量设置、初始值设置,操作采集变量设置进一步包括,设置一个折线点总数变量n(取值范围:2至100)、一个分割距离变量l(取值范围:10至1000米)、一个全景图像搜索半径变量d(取值范围:10至50米),全景图像显示变量设置进一步包括,设置一个全景图像显示的水平偏移视角变量a(与行进方向在水平面沿顺时针的夹角,取值范围:0至360度)、一个全景图像竖直偏移视角变量b(沿竖直面与水平面夹角,向上为正、向下为负,取值范围:正负30度)、一个全景图像放大系数变量z、一个延迟时间变量t(取值范围:2至10秒),初始值设置进一步包括,为l、d、z、t设置一个数值,l需大于等于d。本发明实施例可以提供如下具体方案:varn=null,l=80,d=50,a=null,b=null,z=1、t=3。需要说明的是,本发明对各变量的具体命名、初始值设置,不加以限制。

步骤三:基础数据采集3,包括折线数据、显示方位数据采集,折线数据采集进一步包括,按照从起点到终点顺序接收n个空间地理位置点的经纬度坐标,形成一个顺序存储n-1个直线段的折线数据表,显示方位数据采集进一步包括,接收一个全景图像显示的水平偏移视角,接收一个全景图像竖直偏移视角,进入步骤四。本发明实施例可以提供如下具体方案:在生成网页时,在网页地址参数变量href内加入5个点的经纬度坐标数值、一个全景图像显示的水平偏移视角、一个全景图像竖直偏移视角,在加载网页时,从网页地址参数变量href内对应读取5个点的经纬度坐标数值、一个全景图像显示的水平偏移视角、一个全景图像竖直偏移视角,具体在生成网页时为panostepshow.html@lat1=117.213***&lng1=39.131***&lat2=117.214***&lng2=39.127***&lat3=117.216***&lng3=39.124***&lat4=117.219***&lng4=39.121***&lat5=117.222***&lng5=39.118***&a=60&b=10,在加载网页时,具体通过网页url网址路径后面的查询字符串格式读取5个顺序点的经纬度坐标及全景图像显示的水平偏移视角、竖直偏移视角,并相应存储,lng[0]=lng1、lat[0]=lat1、lng[1]=lng2、lat[1]=lat2、lng[2]=lng3、lat[2]=lat3、lng[3]=lng4、lat[3]=lat4、lng[4]=lng5、lat[4]=lat5、a=a、b=b,n=5,使用newbmap.marker()、s121.addoverlay(),对所述5个顺序点实例化成5个图标显示在电子地图上,具体使用newbmap.polyline()、s121.addoverlay()实例化成一个由所述5个顺序点组成的4个直线段的折线显示在电子地图上。需要说明的是,本发明对读取n个顺序点的经纬度坐标组成折线的具体方式方法和具体数值,不加以限制,对于读取全景图像显示的水平偏移视角、竖直偏移视角的方式方法和具体数值不加以限制。

步骤四:生成全景图像提取点4,包括按照逐直线段遍历设置提取点算法,遍历所述折线数据表的每一个直线段,对于所述每一个直线段,将所述折线上一直线段的两端点、按照所述分割距离l获取的若干个分割点的经纬度坐标、根据直线段行进方向叠加所述全景图像显示的水平偏移视角作为该全景图像提取点的水平视角,进行顺序存储,形成一个带有前后方位拓扑关系的多个全景图像提取点的全景图像提取点数据表,进入步骤五。本发明实施例可以提供如下具体方案:设置templat[]、templng[]两个一维数组用于存放一个直线段新生成分割点的经纬度坐标,设置一个全景图像提取点个数变量q,q=0,一个直线段内子直线段总数sum,sum=0,以及h、lngbegin、latbegin、lngend、latend、i、j操作变量,所述整个折线遍历设置提取点算法具体使用for(i=0;i<n-1;i++){latbegin=lat[i],latend=lat[i+1],lngbegin=lng[i],lngend=lng[i+1]},每次提取2个相邻点的经纬度坐标,即第i+1条直线段的起点和终点,重复n-1次,对第i条直线段按照l米间隔进行再分割,通过分割获取全景图像提取点;对通过分割获取全景图像提取点,包括执行下面三步,一是计算出水平视角h,以第i条直线段起点到终点作为该直线段行进方向,依据第i条直线段的起点和终点经纬度坐标,计算出该直线段方向与正北方向顺时针夹角,夹角取值范围是0-360度,先赋值给h,即该直线段的行进方向,之后h=h+a(取值范围是0-360度),二是计算出第i条直线段的起点和终点之间的距离,按照l将第i条直线段均分成sum个子直线段,对应新生成sum-1个分割点,换算出这sum-1个点的经纬度坐标顺序存储在templat[]、templng[](从第0条记录至sum-2条记录)中,三是存储全景图像提取点数据,将第i条直线段的起点和新生成sum-1个分割点、终点的经纬度坐标,以及所计算出水平视角h,追加在所述全景图像提取点数据表内,即panolat[q]=latbegin,panolng[q]=lngbegin;dic[q]=h,q=q+1,for(j=0;j<sum-1;j++){panolat[q]=templat[j],panolng[q]=templng[j],dic[q]=h,q=q+1},q=q+1,panolat[q]=latend,panolng[q]=lngend,dic[q]=h,第i条直线段上获取了sum+1个全景图像提取点。

步骤五:遍历提取点显示全景图像5,按照遍历提取点检索全景图像算法,建立遍历所有全景图像提取点循环,在遍历循环内执行包括,第一步、提取所述全景图像提取点数据表的当前记录位置的全景图像提取点的经纬度坐标和其水平视角,第二步、按照所述全景图像搜索半径d,查询所提取的全景图像提取点周围指定范围内是否有全景图像,如果有则将所述提取全景图像提取点的水平视角作为全景图像显示的水平视角,将所述全景图像竖直偏移视角作为全景图显示的竖直视角,以及已设置的全景图放大系数,利用延迟函数间隔t秒时间后,在全景图像窗口内显示该全景图像,第三步、所述当前记录位置移向下一条记录位置,继续进行所述遍历循环。本发明实施例可以提供如下具体方案:设置一个指向所述全景图像提取点数据表的当前记录位置变量p,一个变量c、一个id码变量id、一个水平视角变量h、一个竖直视角变量v、一个提取点纬度坐标变量plng、一个提取点经度坐标变量plat,v=b,设置第一层全景图像提取点数据遍历,for(p=0;p<q;p++){plat=panolat[p],plng=panolng[p]、h=dic[p],设置第二层对自建的所述全景图像属性数据表中的m个全景图像拍摄点经纬度坐标遍历,for(c=0;c<m;c++){判断所述全景图像属性数据表内第c条记录的经度坐标与plat、纬度坐标与plng之差,如均小于所述全景图像搜索半径d,则从所述全景图像属性数据表内第c条记录的id字段中提取该全景图像id编码赋值于id,使用id、所述水平视角h、所述竖直视角v、所述全景图像放大系数z,利用延迟函数setinterval(t)或settimeout(t),使用实例化全景图像视窗的setpano()、setpov()、setzoom(),即s111.setpano(id)、s111.setpov(dic[p],b)、s111.setzoom(z),间隔t秒时间后显示全景图像}。需要说明的是,本发明所述通过遍历折线数据表,以组成折线的直线段为单位进行再分割,生成带直线段行进方向夹角、前后关系的全景图像提取点,之后再遍历全景图像提取点,按照搜索半径d检索全景图像,是一个独创的两步遍历法,如图7-1视图所示,优于经典gis技术中buffer一步遍历获取无拓扑关系带有地理定位属性的信息集合,如图7-2视图所示,两步遍历法属本发明的一个创新点。

实施例2,作为本发明的实施例2,如图1所示,示出了本发明实现一种实现电子地图沿线展示全景图像计算机系统的程序流程图,具体数据结构使用的是本发明的数据结构设计之二,如图4所示,编程环境具体可以使用javascript脚本语言、腾讯公司的街景地图javascriptapi及其网络全景图像数据,以互联网网页内的一个全景图像视窗作为全景图像显示载体,一个电子地图视窗作为一个折线显示载体,将网页首屏s100内左右一分为二,如图2所示,分别从左向右具体使用<div>标签创建并命名为一个全景图像窗口区块s110和一个电子地图窗口区块s120,首先使用javascript脚本语言在一个页面中初始化腾讯公司的街景地图使用<scripttype="text/javascript"charset="utf-8"src="http://map.qq.com/api/js@v=2.exp"></script>,具体使用腾讯地图api的newqq.maps.map(“s120”,{center:newqq.maps.latlng(39.1312,117.1121),zoom:13})在电子地图窗口区块s120内实例化一个电子地图并命名为电子地图视窗s121,具体使用newqq.maps.panorama()在全景图像窗口区块s110内实例化一个全景图像并命名为全景图像视窗s111,全景图像窗口和电子地图窗口将终端屏幕左右分割并铺满,使用街景信息查询接口newqq.maps.panoramaservice()实例化全景图像视窗街景信息查询接口s111-1,对通过采集电子地图上一系列有起点、终点顺序点的经纬度坐标,形成一个有起点和终点的折线,沿所述折线,按照与行进方向呈一个固定夹角和一定间隔距离自动顺序提取所述折线覆盖的路段上的多个全景图像,实现定向、定时、顺序控制显示全景图像,计算机程序进行以下步骤:

步骤一:设置数据结构1,包括设置一个包括存贮两个以上点经纬度坐标的折线数据存贮结构,设置一个包括存贮若干个全景图像提取点的经纬度坐标的全景图像提取点数据存贮结构,所述折线数据存贮结构或全景图像提取点数据存贮结构还包括全景图像提取点水平视角,进入步骤二。本发明实施例可以提供如下具体方案:使用本发明的数据结构设计之二,如图4所示,分别设置用于存储折线点经度坐标、纬度坐标、水平视角、直线段内子直线段总数四个一维数组lat[]、lng[]、dic[]、sum[]来构成折线数据表;分别设置用于存储全景图像提取点经度坐标、纬度坐标两个一维数组panolat[]、panolng[]来构成全景图像提取点数据表。

步骤二:设置操作变量2,包括操作采集变量设置、全景图像显示变量设置、初始值设置,操作采集变量设置进一步包括,设置一个折线点总数变量n(取值范围:2至100)、一个分割距离变量l(取值范围:10至1000米)、一个全景图像搜索半径变量d(取值范围:10至50米),全景图像显示变量设置进一步包括,设置一个全景图像显示的水平偏移视角变量a(与行进方向在水平面沿顺时针的夹角,取值范围:0至360度)、一个全景图像竖直偏移视角变量b(沿竖直面与水平面夹角,向上为正、向下为负,取值范围:正负30度)、一个全景图像放大系数变量z、一个延迟时间变量t(取值范围:2至10秒),初始值设置进一步包括,为l、d、z、t设置一个数值,l需大于等于d,进入步骤三。本发明实施例可以提供如下具体方案:varn=0,l=30,d=20,a=null,b=null,z=1、t=5。需要说明的是,本发明对各变量的具体命名、具体数值,不加以限制。

步骤三:基础数据采集3,包括折线数据、显示方位数据采集,折线数据采集进一步包括,按照从起点到终点顺序接收n个空间地理位置点的经纬度坐标,形成一个顺序存储n-1个直线段的折线数据表,显示方位数据采集进一步包括,接收一个全景图像显示的水平偏移视角,接收一个全景图像竖直偏移视角,进入步骤四。本发明实施例可以提供如下具体方案:在电子地图视窗,人工移动鼠标到电子地图上有蓝色高亮街道线路(但不是点击标记或信息窗口),单击鼠标左键触发地图click事件,获得该点经纬度坐标数值,使用该点经纬度坐标数值,及newqq.maps.marker()实例化一个图标显示在电子地图上,lat[n]=通过触发地图click事件获得点经度坐标数值,lng[n]=通过触发地图click事件获得点纬度坐标数值,n=n+1,重复上述人工移动鼠标单击鼠标左键n次,从电子地图上采集n个点,第0条记录存储的是第一个直线段的起点经纬度坐标,第1条记录存储的是第一个直线段的终点同时也是第二个直线段起点的经纬度坐标,依次类推到第n-1条记录,具体使用newqq.maps.polyline()实例化一个由n个点组成的n-1个直线段的折线,第一个为起点,第n个点位终点,在经度坐标、纬度坐标一维数组lat[]、lng[]内形成n条记录(从0到n-1),如图5所示,一个由5个点组成的4个直线段的折线,人工在电子地图上采集n个点,将第一个点作为起点,最后一个点作为终点,将n个点从起点到终点连在一起,就形成一个有行进方向的折线,设置一个全景图像显示的水平偏移视角a=60,一个全景图像竖直偏移视角b=10。需要说明的是,本发明对其它读取电子地图上有起点、终点的n个顺序点的经纬度坐标组成折线的具体方式方法,如从数据库、数据文件中提取,或者按照起点、终点计算出的线路所组成折线点数据,不加以限制,对于a、b的接收方式方法和具体数值不加以限制。

步骤四:生成全景图像提取点4,包括按照逐直线段遍历设置提取点算法,遍历所述折线数据表的每一个直线段,对于所述每一个直线段,将所述折线上一直线段的两端点、按照所述分割距离l获取的若干个分割点的经纬度坐标、根据直线段行进方向叠加所述全景图像显示的水平偏移视角作为该全景图像提取点的水平视角,进行顺序存储,形成一个带有前后方位拓扑关系的多个全景图像提取点的全景图像提取点数据表,进入步骤五。本发明实施例可以提供如下具体方案:设置templat[]、templng[]两个一维数组用于存放一个直线段新生成分割点的经纬度坐标,设置一个全景图像提取点个数变量q,q=0,一个直线段内子直线段总数sum,sum=0,以及h、latbegin、lngbegin、latend、lngend、i、j操作变量,所述整个折线遍历设置提取点算法具体使用for(i=0;i<n-1;i++){latbegin=lat[i],latend=lat[i+1],lngbegin=lng[i],lngend=lng[i+1]},每次提取2个相邻点的经纬度坐标,也就是一个直线段的起点和终点,重复n-1次,对第i条直线段按照l米间隔(l的取值范围一般在10米到1000米之间)进行再分割,获得分割点;对第i条直线段具体是进行下面三部分内容,一是首先计算出第i条直线段的起点和终点之间的距离,按照l将第i条直线段均分成sum个子直线段,对应新生成sum-1个点,换算出这sum-1个点的经纬度坐标临时存贮在templat[]、templng[](从第0条记录至sum-2条记录)中,将第i条直线段的起点和新生成sum-1个分割点、终点的经纬度坐标追加在全景图像提取点数据表内,即panolat[q]=latbegin,panolng[q]=lngbegin,q=q+1,for(j=0;j<sum-1;j++){panolat[q]=templat[j];panolng[q]=templng[j];q=q+1;},q=q+1,panolat[q]=latend,panolng[q]=lngend,第i条直线段上获取了sum+1个全景图像提取点;二是以直线段起点到终点作为该直线段行进方向,依据第i条直线段的起点和终点经纬度坐标,计算出该直线段行进方向与正北方向顺时针的夹角,夹角取值范围是0至360度,先赋值给h,即该直线段的行进方向,之后h=h+a(取值范围是0至360度);三是将h、sum分别赋值给dic[i]、sum[i]:dic[i]=h、sum[i]=sum。需要说明的是,本步骤所述通过遍历折线数据,以组成折线的直线段为单位进行再分割,生成带直线段行进方向夹角、前后关系的全景图像提取点,属本发明的一个创新点。

步骤五:遍历提取点显示全景图像5,按照遍历提取点检索全景图像算法,建立遍历所有全景图像提取点循环,在遍历循环内执行包括,第一步、提取所述全景图像提取点数据表的当前记录位置的全景图像提取点的经纬度坐标和其水平视角,第二步、按照所述全景图像搜索半径d,查询所提取的全景图像提取点周围指定范围内是否有全景图像,如果有则将所述提取全景图像提取点的水平视角作为全景图像显示的水平视角,将所述全景图像竖直偏移视角作为全景图显示的竖直视角,以及已设置的全景图放大系数,利用延迟函数间隔t秒时间后,在全景图像窗口内显示该全景图像,第三步、所述当前记录位置移向下一条记录位置,继续进行所述遍历循环。本发明实施例可以提供如下具体方案:根据使用本发明的数据结构设计之二(如图4所示)形成两个数据表(如图6所示),设置一个直线段序列位置变量p、一个直线段内点序列位置变量c、一个指向所述全景图像提取点数据表的当前记录位置变量q、一个单个直线段内子直线段总数变量sum、一个全景图像id编码变量id、一个水平视角变量h、一个竖直视角变量v,初始化p=0、c=0、q=0、sum=0、h=0、v=b;设置最外层的折线直线段遍历,p从0至n-2(即从第1个直线段到第n-1个直线段),提取所述折线数据表上第p条记录,即第p+1个直线段的水平视角赋值给h、子直线段总数赋值给sum,将所提取的水平视角作为该直线段上的所有全景图像提取点的水平视角,c=0;设置第二层的一直线段内点遍历,嵌套在所述最外层的折线直线段遍历中,c从0至sum-1(即从该直线段起点开始至最后一个分割点),在第二层遍历循环内执行包括,第一步、从所述全景图像提取点数据表的第q条记录中提取其经纬度坐标(panolat[q],panolng[q]),第二步、通过实例化全景图像视窗街景信息查询接口的getpano(),即id=s111-1.getpano(panolat[q],panolng[q])获取该点指定半径内d一个全景图像,如提取到一个全景图像(id不为空),则利用时间延迟函数setinterval(t)或settimeout(t)函数,使用实例化全景图像视窗的setpano()、setpov()、setzoom(),即s111.setpano(id)、s111.setpov(h、v)、s111.setzoom(z),延迟t秒时间后在全景图像窗口内显示该全景图像,第三步、判断c,如果小于等于所述本直线段内子直线段总数变量sum-1、则继续执行所述第二层遍历循环,如果大于sum-1则进一步判断p,如果大于n-2、则结束,否则p=p+1、q=q+1(越过该直线段的终点)、继续执行所述第一层遍历循环。需要说明的是,沿一个折线中各直线段行进方向,按照提取点位置先后顺序,以幻灯片形式连续显示具有先后地理位置关系的一系列全景图像,属本发明的一个创新点。

本领域内的技术人员应明白,本发明的实施例可提供为系统、或计算机程序产品。本发明是参照根据本发明实施例的流程图来描述的,应理解可由计算机程序指令实现流程图。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程的功能的步骤。尽管已描述了本发明的实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括实施例以及落入本发明范围的所有变更和修改。以上应用了具体2个实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1