【背景技术】
过去十几年以来,随着互联网技术的发展,人们越来越依赖于互联网提供的丰富、快捷、及时的信息,这中间也包括在线电子地图信息。在线电子地图相对于传统的纸质地图或单机的电子地图,其具有更新及时、便于查询、使用直观简洁、以及提供的信息丰富等诸多优点,目前在中国的在线电子地图提供者中比较被广泛推荐的包括百度公司的百度地图(map.baidu.com)和谷歌公司的google地图(ditu.google.cn),其中尤其以百度公司的百度地图更加满足中国使用者的使用习惯而得到了广泛应用。
然而,电子地图的制作需要消耗大量的资源,包括收集数据、整理数据、生成和更新地图、以及完成这些工作所需的大量人力投入与软件、硬件环境投入。因此,电子地图的制作者总是希望能够以尽量少的成本(包括资源成本和时间成本)生产出满足市场需求的电子地图。相应地,已经有一些现有技术揭示与改进了电子地图的制作。
例如:中国发明专利申请第200910198697.7号就揭示了一种用于地理信息系统的栅格图片电子地图的制作方法。这种方法所采用的制作系统包括栅格图片生成组件,该组件根据最大比例尺,将地图影像图片切割成互相邻接的一系列基本栅格图片,并依次将数个对应大一级比例尺的栅格图片拼接,形成小一级比例尺的栅格图片,最终形成对应于所述的一组比例尺中的每一个的一系列栅格图片;还包括矢量数据库,保存一组矢量数据,每一组矢量数据对应一个比例尺,将该矢量数据与一系列栅格图片叠加,形成对应该比例尺的一系列地图单元,将该一系列地图单元按照栅格地图拼接成完整的地图。这种方法将地图分割成一个个的地图单元进行制作,在进行地图调用和地图升级时,只要升级相应的地图单元即可,无需但整个地图进行修改,从而减小了地图制作的工作量,提升了制作时间,节约资源。
又例如:美国专利第7,395,150B2号揭示了一种可以一边进行导航控制一边进行地图更新,还可以进行后台更新的“地图更新处理用数据生成方法”。该方法揭示了地图更新处理用数据生成装置对每个文件生成用于将旧地图文件改写为新地图文件的地图更新处理用文件,确定更新后的地图文件的序列号,生成在与该序列号对应的位置记入有标记的序列号管理文件,作为地图更新处理用数据来输出这些文件。本专利所揭示技术的优点在于可以一边进行导航使用一边更新地图,且在更新地图时也只需要修改需要更新的部分,同样可以减小了地图制作的工作量,提升了制作时间,节约资源。
但是,所述的现有技术的电子地图的制作过程是通过一台运算终端进行计算绘制,即先将原始地图数据全部集中在一台运算设备上逐步绘制出地图图像,然后将绘制出的地图图像集中存储在一台存储设备上。这样的现有地图生产过程存在几个缺陷:其一,地图的绘制生产时间过长,例如:若要基于已知的原始地图数据绘制出比较详尽的中国地图全图(所述全图包括大部分重要城市的详细地图信息及所有农村地区精确到自然村的地图信息),整个运算周期可能会长达一周时间;其二,地图的存储与更新不便,由于需要将绘制出的生成地图图像集中存储在一台存储设备上,需要专门的大容量存储设备,且后续地图的使用过程中,地图制作者的每一次地图更新升级,以及地图的使用者的每一次地图查询都需要频繁访问所述存储设备,极大增加该存储设备的使用负荷,影响其使用寿命。
【发明内容】
本发明的目的在于提供一种具有经过改进的分布式电子地图生成方法,该方法既可以缩短电子地图的绘制生成时间,有便于地图的更新升级。
本发明的另一目的在于提供一种生成分布式电子地图的装置,所述装置既可以缩短电子地图的绘制生成时间,有便于地图的更新升级。
相应地,本发明的
一种分布式电子地图生成方法,其中,该方法包括:
数据接收步骤:接收原始地图数据;
数据分发步骤:将所述原始地图数据切分成若干计算任务,并将所述若干计算任务分发给对应的若干数据计算终端;
数据计算步骤:所述若干数据计算终端分别绘制出地图图像;以及
数据存储步骤:将所述地图图像进行储存。
作为本发明的进一步改进,所述数据接收步骤中接收的原始地图数据为文本形式的原始矢量数据,包括地址名称、地址坐标和地址样式等。
作为本发明的进一步改进,所述数据分发步骤中的数据切分采用分布式计算的方法实现。
作为本发明的进一步改进,所述数据计算步骤中生成的地图图像为png格式的栅格图。
作为本发明的进一步改进,所述数据存储步骤中的地图图像存储方式为分布式存储集群,每个数据存储终端存储所述生成的地图图像的不同部分,各个数据存储终端仅对外暴露I/O接口。
作为本发明的进一步改进,所述的数据更新步骤包括:
接收待更新原始地图数据;
将所述待更新原始地图数据发送至至少一个数据计算终端;
绘制更新地图图像;以及
将所述更新地图图像进行储存。
作为本发明的进一步改进,在接收待更新原始地图数据后,还包括以下步骤:
判断所述待更新原始地图数据是否属于一个更新计算任务;
若是,则将所述更新计算人物发送至一个数据计算终端。
作为本发明的进一步改进,在接收待更新原始地图数据后,还包括以下步骤:
判断所述待更新原始地图数据是否属于多个更新计算任务;
若是,则将所述多个更新计算人物发送至与之对应的多个数据计算终端。
相应地,本发明的一种生成分布式电子地图的装置,其中,所述的装置包括:
数据接收单元,用于接收原始地图数据;
数据分发单元,用于将原始地图数据切分成若干计算任务,并将所述若干计算任务分发给对应的若干数据计算终端;
数据计算单元,其包括若干数据计算终端,分别绘制出地图图像;以及
数据存储单元,将所述地图图像进行储存。
作为本发明的进一步改进,所述数据接收单元中接收的原始地图数据为原始矢量数据,包括地址名称、地址坐标和地址样式等。
作为本发明的进一步改进,所述数据分发单元采用分布式计算的方法切分数据。
作为本发明的进一步改进,所述数据计算单元中生成的地图图像为png格式的栅格图。
作为本发明的进一步改进,所述数据存储单元中的地图图像存储方式为分布式存储集群,每个数据存储终端存储所述生成的地图图像的不同部分,各个数据存储终端仅对外暴露I/O接口。
作为本发明的进一步改进,还包括数据更新单元,用于将待更新的原始地图数据分发到至少一个所述的数据计算终端,并更新生成依据其所接收到的更新原始地图数据所绘制出的更新地图图像。
作为本发明的进一步改进,所述的数据更新单元包括:
所述的数据更新单元包括:
更新数据输入模块,接收待更新原始地图数据;
更新数据分发模块,将所述待更新原始地图数据发送至至少一个数据计算终端;
更新数据计算模块,绘制更新地图图像;以及
更新数据存储模块,将所述更新地图图像进行储存。
本发明的有益效果是:其一,采用了分布式的计算方法将整个计算任务切分成若干计算任务,并让若干个计算终端共同分担所述若干个子计算任务并同时展开计算,这样的方法大大提升了地图的生成速度;其二,采用了分布式存储集群,分别存储整个生成的地图的不同部分,并在地图更新时直接更新生成对应的某个存储终端中的地图,这样的方法即便于更新,又降低了储存终端的整体负荷。
【具体实施方式】
为了对发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式,在各图中相同的标号表示步骤相同的部分。在本文中,“示意性”表示“充当实例、例子或说明”,不应将在本文中被描述为“示意性”的任何图示、实施方式解释为一种更优选的或更具优点的技术方案。
首先参考图1,本发明的一种实施方式的生成分布式电子地图的装置1包括数据接收单元10,数据分发单元12,数据计算单元14,以及数据存储单元16。
其中,数据接收单元10用于接收原始地图数据。此处所说的原始数据通常所指的是文本形式的原始矢量数据,所述矢量数据包括大量的具体地址信息,每个地址信息通常包含地址名称、地址坐标和地址样式等。此处所述的地址名称可以包含不同类型的地址,例如:道路类地址、区域类地址与地标类地址,道路类地址用于描述“a路b号”、“a路b弄”等以道路为首的地址;区域类地址用于描述“a小区b号c室”等以小区名为首的地址;地标类地址用于描述“a大厦”、“b公园”等直接代表一个位置点的地址。此处所述的地址坐标通常包括所述地址信息的x、y轴坐标信息等等。
数据分发单元12用于将原始地图数据切分成若干计算任务,并将所述若干计算任务所包含的原始地图数据分别分发给对应的若干计算终端。此处数据分发单元12首先将所有需要计算的原始数据视为一个整体计算任务,然后根据所述整体计算任务的工作量将其切分成若干个子计算任务,尽量让每个子计算任务中所需要计算的任务数据量大体相当,这样可以保证在后续的同步计算处理时,每个计算终端所需要的计算时间大致相同,以便尽量地保证所有同时进行的计算任务可以在基本相同的时间期限内完成。关于计算任务切分的方法,本发明可以采用目前已知的分布式计算(map reduce)方法,关于分布式计算的原理已经是公知的技术,例如在百度百科(http://baike.baidu.com/view/30655.htm)中有详细的介绍,在此不再赘述。但是,需要指出的是,本发明的任务切分方法不一定局限与分布式计算方法,也可以采用其它的方法,例如采用人工整体计算任务切分的方法,当然其主要目的都是为了尽量实现每个子计算任务中所需要计算的任务数据量大体相当的目标。
数据计算单元14,其包括若干分别同时运行的数据计算终端,例如数据第一计算终端、数据计算终端2、....直至数据计算终端n,所需的数据计算终端的数量的基本原则是:让数据计算终端的数量对应于被切分后的子计算任务的数量,例如:若整体计算任务被切分成5个子计算任务,则需要提供5个并行的数据计算终端。每个数据计算终端分别生成依据其所接收到的原始地图数据所绘制出的地图图像,所述数据计算终端中生成的地图图像为png格式的栅格图,关于png格式图像的介绍可以参考百度百科中的详细描述(http://baike.baidu.com/view/5342.html?wtp=tt),在此不再赘述。
数据存储单元16用于存储生成的地图图像。本发明的一种实施方式是提供一种分布式存储集群,该分布式存储集群包括若干个数据存储终端:例如数据第一存储终端、数据存储终端2、....直至数据存储终端n,所需的数据存储终端的数量的基本原则是:让数据存储终端的数量对应于被切分后的子计算任务的数量,例如:若整体计算任务被切分成5个子计算任务,则需要提供5个并行的数据存储终端。每个数据存储终端分别存储对应的数据计算终端所绘制出的地图图像,如所述数据计算终端中生成的地图图像为png格式的栅格图。也就是说,每个数据存储终端存储所述生成的地图图像的不同部分,各个数据存储终端仅对外暴露I/O接口。这样做的好处是:每个数据存储终端所存储的最终地图图像都可以通过访问其对外链接的I/O接口被独立地访问。在使用者输入一个查询地址时,本发明的装置首先判断该地址所对应的地图图像存储在哪一个数据存储终端中,然后让装置直接调取该数据存储终端中的地图图像进行查询,而不必去一个个地访问所有的数据存储终端,这样既节省了资源,也可以大大缩短查询的时间。同理,若需要对整体电子地图的某个部分/区域进行更新升级,也需要首先判断待更新升级的部分/区域所对应的地图图像存储在哪一个数据存储终端中,然后让装置直接调取该数据存储终端中的地图图像进行更新升级,而不必去一个个地访问所有的数据存储终端,这样既节省了资源,也可以大大缩短查询的时间。但是,需要指出的是,本发明推荐的是分布是存储集群的方式来存储地图图像,然而其他的存储方法,例如传统的集中存储方式,也可以用于存储经过本发明的数据计算单元14并行计算后得到的地图图像。
参考图2,本发明的一种实施方式的分布式电子地图生成方法包括:数据接收步骤S1、数据分发步骤S3、数据计算步骤S5、数据存储步骤S7、以及数据更新步骤S9。
其中,数据接收步骤S1:接收原始地图数据,此处所说的原始数据通常所指的是文本形式的原始矢量数据,所述矢量数据包括大量的具体地址信息,每个地址信息通常包含地址名称、地址坐标和地址样式等。此处所述的地址名称可以包含不同类型的地址:例如:道路类地址、区域类地址与地标类地址,道路类地址用于描述“a路b号”、“a路b弄”等以道路为首的地址;区域类地址用于描述“a小区b号c室”等以小区名为首的地址;地标类地址用于描述“a大厦”、“b公园”等直接代表一个位置点的地址。此处所述的地址坐标通常包括所述地址信息的x、y轴坐标信息,等等。
数据分发步骤S3:将原始地图数据切分成若干计算任务,并将所述若干计算任务所包含的原始地图数据分别分发给对应的若干计算终端。此处数据分发单元12首先将所有需要计算的原始数据视为一个整体计算任务,然后根据所述整体计算任务的工作量将其切分成若干个子计算任务,尽量让每个子计算任务中所需要计算的任务数据量大体相当,这样可以保证在后续的同步计算处理时,每个计算终端所需要的计算时间大致相同,以便尽量地保证所有同时进行的计算任务可以在基本相同的时间期限内完成。关于计算任务切分的方法,本发明可以采用目前已知的分布式计算(map reduce)方法,关于分布式计算的原理已经是公知的技术,例如在百度百科(http://baike.baidu.com/view/30655.htm)中有详细的介绍,在此不再赘述。但是,需要指出的是,本发明的任务切分方法不一定局限与分布式计算方法,也可以采用其它的方法,例如采用人工整体计算任务切分的方法,当然其主要目的都是为了尽量实现每个子计算任务中所需要计算的任务数据量大体相当的目标。
数据计算步骤S5:所述若干数据计算终端分别运行,并分别生成依据其所接收到的原始地图数据所绘制出的地图图像。所需的数据计算终端(例如数据第一计算终端、数据计算终端2、...直至数据计算终端n)的数量的基本原则是:让数据计算终端的数量对应于被切分后的子计算任务的数量,例如:若整体计算任务被切分成5个子计算任务,则需要提供5个并行的数据计算终端。每个数据计算终端分别生成依据其所接收到的原始地图数据所绘制出的地图图像,所述数据计算终端中生成的地图图像为png格式的栅格图,关于png格式图像的介绍可以参考百度百科中的详细描述(http://baike.baidu.com/view/5342.html?wtp=tt),在此不再赘述。
数据存储步骤S7:将所述的地图图像反馈到数据储存终端进行储存。本发明的一种实施方式是提供一种分布式存储集群,该分布式存储集群包括若干个数据存储终端:例如数据第一存储终端、数据存储终端2、....直至数据存储终端n,所需的数据存储终端的数量的基本原则是:让数据存储终端的数量对应于被切分后的子计算任务的数量,例如:若整体计算任务被切分成5个子计算任务,则需要提供5个并行的数据存储终端。每个数据存储终端分别存储对应的数据计算终端所绘制出的地图图像,如所述数据计算终端中生成的地图图像为png格式的栅格图。也就是说,每个数据存储终端存储所述生成的地图图像的不同部分,各个数据存储终端仅对外暴露I/O接口。这样做的好处是:每个数据存储终端所存储的最终地图图像都可以通过访问其对外链接的I/O接口被独立地访问。在使用者输入一个查询地址时,本发明的装置首先判断该地址所对应的地图图像存储在哪一个数据存储终端中,然后让装置直接调取该数据存储终端中的地图图像进行查询,而不必去一个个地访问所有的数据存储终端,这样既节省了资源,也可以大大缩短查询的时间。同理,若需要对整体电子地图的某个部分/区域进行更新升级,也需要首先判断待更新升级的部分/区域所对应的地图图像存储在哪一个数据存储终端中,然后让装置直接调取该数据存储终端中的地图图像进行更新升级,而不必去一个个地访问所有的数据存储终端,这样既节省了资源,也可以大大缩短查询的时间。但是,需要指出的是,本发明推荐的是分布是存储集群的方式来存储地图图像,然而其他的存储方法,例如传统的集中存储方式,也可以用于存储经过本发明的数据计算单元14并行计算后得到的地图图像。第一存储终端
数据更新步骤S9:将待更新的原始地图数据分发到至少一个所述的数据计算终端,并更新生成依据其所接收到的更新原始地图数据所绘制出的更新地图图像。需要指出的是,在本发明中,数据更新步骤S9可以不包括在实现本发明目的之方法的必要步骤中,但是数据更新步骤S9在实际应用中同样非常重要,特别是在目前中国快速发展的环境下,各地的实际地形地貌、区域规划变化很快,及时地更新地图可以更好地满足地图使用者的需要,提高使用者的使用满意度。
参考图3,所述的数据更新步骤S9包括:
更新数据接收步骤S90:接收待更新原始地图数据,此处接收到的数据格式通常与数据接收步骤S1所接收到的数据的格式相同。
更新数据分发步骤S92:判断所述的待更新原始地图数据是属于一个更新计算任务,还是需要切分成若干个更新计算任务。
更新数据计算步骤S94:根据所述的更新数据分发步骤的结果将所述的更新计算任务分发到一个或者若干个计算终端,并更新生成依据其所接收到的更新原始地图数据所绘制出的更新地图图像。
更新数据存储步骤S96:将所述的更新地图图像反馈到数据储存终端进行储存,相对应地,此处推荐的储存方式是分布式储存集群。若更新只涉及到一个计算任务,则只需要启动一个对应的数据储存终端来存储对应的更新地图图像即可,若更新涉及到若干个计算任务,则需要启动若干个对应的数据储存终端来存储对应的更新地图图像。
相应地,本发明的生成分布式电子地图的装置1还包括数据更新单元,所述的数据更新单元包括:
更新数据输入模块,用于接收待更新原始地图数据;
更新数据分发模块,用于判断所述的待更新原始地图数据是属于一个更新计算任务,还是需要切分成若干个更新计算任务;
新数据计算模块,用于根据所述的更新数据分发步骤的结果将所述的更新计算任务分发到一个或者若干个计算终端,并更新生成依据其所接收到的更新原始地图数据所绘制出的更新地图图像;
以及更新数据存储模块,用于将所述的更新地图图像反馈到数据储存终端进行储存。
为了更好地阐述与理解本发明的技术方案,以下以本发明的生成分布式电子地图的装置1在所述的分布式电子地图的生成方法的驱动下,生成及更新江苏省南京市的地图为例,进一步描述其工作流程。
参考图4,在数据接收步骤S1中,执行如下具体操作:
步骤S10:获得江苏省地图的原始数据,包括文本格式的地址名称、地址坐标和地址样式;
步骤S12:将原始数据按照行政区域划分进行输入,例如南京市、苏州市、徐州市,从而建立完整的原始数据库。
在数据分发步骤S3中,执行如下具体操作:
步骤S30:将每个行政区域单位(例如南京市)的原始数据识别为一个计算任务,并将所有的计算任务汇总成一个计算任务清单;
步骤S32:采用map reduce方法,根据计算任务量大小,将该计算任务清单切分成若干个子计算任务清单;
步骤S34:提供计算终端,每个计算终端接收一个子计算清单,以及安装生成地图的计算程序,其中南京市的原始数据被切分到第一计算终端。
在数据计算步骤S5中,执行如下具体操作:
步骤S50:第一计算终端绘制出png格式的南京市地图图像,该图像对应于整个江苏省地图的一部分。
在数据存储步骤S7中,执行如下具体操作:
步骤S70:将生成的南京地图图像存储在第一存储终端中,并开放I/O接口,反馈可以调用信息到主服务器;
步骤S72:反馈南京市地图的计算任务已经绘制完成信息到主服务器/控制终端。
在数据存储步骤S9中,执行如下具体操作:
步骤S90:接收数据更新信息,启动第一计算终端,更新南京市地图,并生成的更新后地图图像;
步骤S92:将生成的更新后地图图像存储到第一存储终端,并反馈更形计算任务完成信息。
通过以上描述,可以得出,本发明的技术方案相对于现有技术具有突出的优点,具体表现在:其一,采用了分布式的计算方法将整个计算任务切分成若干计算任务,并让若干个计算终端共同分担所述若干个子计算任务并同时展开计算,这样的方法大大提升了地图的生成速度,例如,可以基于已知的原始地图数据绘,在一天之内制出比较详尽的中国地图全图(所述全图包括大部分重要城市的详细地图信息及所有农村地区精确到自然村的地图信息);其二,采用了分布式存储集群,分别存储整个生成的地图的不同部分,并在地图更新时直接更新生成对应的某个存储终端中的地图,这样的方法即便于更新,又降低了储存终端的整体负荷。
应当理解,虽然本说明书按照实施例加以描述,但并非每个实施例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施例的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施例或变更均应包含在本发明的保护范围之内。