《一种地图渲染方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种地图渲染方法和装置.pdf(16页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104252713A43申请公布日20141231CN104252713A21申请号201410449760022申请日20140904G06T15/00201101G06F9/44200601G09B29/1020060171申请人百度在线网络技术北京有限公司地址100085北京市海淀区上地十街10号百度大厦72发明人刘振桂陈雪阳慧蓉彭海波74专利代理机构北京汉昊知识产权代理事务所普通合伙11370代理人朱海波54发明名称一种地图渲染方法和装置57摘要本发明提供了一种地图渲染方法和装置,其中,地图渲染方法包括基于OPENGL组织矢量数据;根据所组织的矢量数据,渲染成对应的地。
2、图图片;其中,在组织矢量数据的过程中通过曲线拟合来计算函数的值。与现有技术相比,本发明提供的地图渲染方法和装置可以显著提升地图渲染的效率。51INTCL权利要求书2页说明书10页附图3页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书10页附图3页10申请公布号CN104252713ACN104252713A1/2页21一种地图渲染方法,包括基于OPENGL组织矢量数据;根据所组织的矢量数据,渲染成对应的地图图片;其中,在组织矢量数据的过程中通过曲线拟合来计算函数的值。2根据权利要求1所述的地图渲染方法,所述进行曲线拟合的步骤包括将函数的曲线分段,对每一段曲线使用对应的多项。
3、式进行曲线拟合,其中所述函数为三角函数。3根据权利要求2所述的地图渲染方法,所述对每一段曲线使用对应的多项式进行曲线拟合的步骤包括根据每一段曲线的曲率和次级,使用对应阶数的多项式进行曲线拟合。4根据权利要求1所述的地图渲染方法,所述根据所组织的矢量数据,渲染成对应的地图图片的步骤包括根据所组织的矢量数据,创建图像纹理并将为其分配合理的内存;从内存中调用图像纹理,渲染成对应的地图图片;其中,从内存中调用图像纹理后,保留所述内存。5根据权利要求1所述的地图渲染方法,其中各地图图片的渲染存在时间上的先后顺序,对于后续待渲染的地图图片,所述根据所组织的矢量数据,渲染成对应的地图图片的步骤包括根据所组织。
4、的矢量数据,创建图像纹理;初始化已保留的为前续已渲染的地图图片分配的内存并将其分配给所述图像纹理;从内存中调用图像纹理,渲染成对应的地图图片;其中,从内存中调用图像纹理后,保留所述内存。6根据权利要求1所述的地图渲染方法,其中各地图图片的渲染存在时间上的先后顺序,对于后续待渲染的地图图片,所述根据所组织的矢量数据,渲染成对应的地图图片的步骤包括根据所组织的矢量数据,创建图像纹理;比较所述图像纹理待需的存储空间和已保留的为前续已渲染的地图图片分配的内存的空间如果所述图像纹理待需的存储空间大于或等于已保留的为前续已渲染的地图图片分配的内存的空间,则初始化已保留的为前续已渲染的地图图片分配的内存并将。
5、其分配给所述图像纹理,否则,释放已保留的为前续已渲染的地图图片分配的内存,为所述图像纹理重新分配合理的内存;从内存中调用图像纹理,渲染成对应的地图图片;其中,从内存中调用图像纹理后,保留所述内存。7一种地图渲染装置,包括用于基于OPENGL组织矢量数据的单元;用于根据所组织的矢量数据,渲染成对应的地图图片的单元;其中,用于基于OPENGL组织矢量数据的单元包括用于在组织矢量数据的过程中通过曲线拟合来计算函数的值的模块。权利要求书CN104252713A2/2页38根据权利要求7所述的地图渲染装置,所述用于在组织矢量数据的过程中进行曲线拟合的模块用于将函数曲线分段,对每一段曲线使用对应的多项式进。
6、行曲线拟合,其中所述函数为三角函数。9根据权利要求8所述的地图渲染装置,所述用于在组织矢量数据的过程中进行曲线拟合的模块用于根据每一段曲线的曲率和次级,使用对应阶数的多项式进行曲线拟合。10根据权利要求7所述的地图渲染装置,所述用于根据所组织的矢量数据,渲染成对应的地图图片的单元包括用于根据所组织的矢量数据,创建图像纹理并将为其分配合理的内存的模块;用于从内存中调用图像纹理,渲染成对应的地图图片的模块;用于保留已分配的内存的模块。11根据权利要求7所述的地图渲染装置,其中各地图图片的渲染存在时间上的先后顺序,对于后续待渲染的地图图片,所述用于根据所组织的矢量数据,渲染成对应的地图图片的单元包括。
7、用于根据所组织的矢量数据,创建图像纹理的模块;用于初始化已保留的为前续已渲染的地图图片分配的内存并将其分配给所述图像纹理的模块;用于从内存中调用图像纹理,渲染成对应的地图图片的模块;用于保留已分配的内存的模块。12根据权利要求7所述的地图渲染装置,其中各地图图片的渲染存在时间上的先后顺序,对于后续待渲染的地图图片,所述用于根据所组织的矢量数据,渲染成对应的地图图片的单元包括用于根据所组织的矢量数据,创建图像纹理的模块;用于比较所述图像纹理待需的存储空间和已保留的为前续已渲染的地图图片分配的内存的空间的模块;用于初始化已保留的为前续已渲染的地图图片分配的内存并将其分配给所述图像纹理的模块;用于释。
8、放已保留的为前续已渲染的地图图片分配的内存,为所述图像纹理重新分配合理的内存的模块;用于从内存中调用图像纹理,渲染成对应的地图图片的模块;用于保留已分配的内存的模块。权利要求书CN104252713A1/10页4一种地图渲染方法和装置技术领域0001本发明涉及电子地图技术,尤其涉及地图渲染方法和装置。背景技术0002对于地图渲染而言,地图数据加载是影响渲染效率的一个至关重要的因素,而地图数据加载的重中之重是OPENGL开放的图形程序接口数据处理,因而,如何缩短OPENGL数据处理的时间成为地图渲染领域的一个重要问题。通常,在OPENGL数据处理中,基于泰勒级数来计算大量的三角函数和反三角函数,。
9、尽管可以到达很高的数据精度,但是耗时严重,导致加载速度缓慢;另外,OPENGL数据处理中,涉及用于存储每张待渲染的图片对应的图像纹理的临时内存的频繁分配和频繁释放,而内存的频繁分配需要频繁消耗CPU处理时间,从而严重地影响地图渲染的速度。发明内容0003本发明的目的是提供一种地图渲染方法和装置,可以显著提升地图渲染的效率。0004根据本发明的一个实施例,提供了一种地图渲染方法,包括0005基于OPENGL组织矢量数据;0006根据所组织的矢量数据,渲染成对应的地图图片;0007其中,在组织矢量数据的过程中通过曲线拟合来计算函数的值。0008根据本发明的另一个实施例,提供了一种地图渲染装置,包括。
10、0009用于基于OPENGL组织矢量数据的单元;0010用于根据所组织的矢量数据,渲染成对应的地图图片的单元;0011其中,用于基于OPENGL组织矢量数据的单元包括0012用于在组织矢量数据的过程中通过曲线拟合来计算函数的值的模块。0013与现有技术相比,本发明的实施例具有以下优点0014通过将耗时严重的泰勒级数的计算转化成多项式的计算进行处理,极大地提高了OPENGL的计算速度,从总体上提升了地图渲染效率。附图说明0015通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显0016图1示出了根据本发明一个优选实施例的地图渲染方法的流程图;00。
11、17图2示出了根据本发明的一个实施例的根据所组织的矢量数据渲染成对应的地图图片步骤的示意图;0018图3示出了根据本发明另一个实施例的根据所组织的矢量数据渲染成对应的地图图片步骤的示意图;0019图4示出了根据本发明又一个实施例的根据所组织的矢量数据渲染成对应的地说明书CN104252713A2/10页5图图片步骤的示意图;0020图5示出了根据本发明一个优选实施例的地图渲染装置的示意性框图;0021附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式0022下面结合附图对本发明作进一步详细描述。0023根据本发明的一个方面,提供了一种地图渲染方法。0024请参考图1,图1为根据本发明。
12、一个优选实施例的地图渲染方法的流程图。根据图1,所述地图渲染方法包括0025步骤S101,基于OPENGLOPENGRAPHICSLIBRARY,即开放的图形程序接口组织矢量数据,其中,在组织矢量数据的过程中进行曲线拟合。0026其中,矢量数据为渲染成地图图片的准备数据,通过OPENGL对矢量数据的组织,将这些矢量数据渲染成对应的地图图片。0027其中,可以从矢量数据缓存区或相应服务器来获取和组织矢量数据,基于OPENGL所组织的特定的矢量数据对应地图上待渲染的一张张的图片,其中待渲染的一张张的图片通过顺序组合,形成待显示的电子地图。0028如上文所述,OPENGL数据处理占据数据加载时间非常。
13、高的比重,而OPENGL组织矢量数据的过程中涉及大量的三角函数和反三角函数,而现有技术中通过泰勒级数来计算这些庞大的三角函数和反三角函数,容易导致耗时严重。为了解决耗时问题,本实施例基于OPENGL组织矢量数据的过程中进行曲线拟合,也即通过采用其他在空间计算上可以达到基本相同效果的函数来取代泰勒级数的运算,从而显著提升计算速率。0029可选地,为了进一步提升曲线拟合的计算速率,所述进行曲线拟合的步骤包括0030将曲线分段,对每一段曲线使用对应的多项式进行曲线拟合。0031也即将具有不同曲率或角度或弧度的曲线分成多段,对每一段曲线使用对应的多项式进行拟合逼近。例如,对于正弦函数SINX对应的曲线。
14、分段,将X处于0/2段的曲线使用与该曲线逼近的抛物线来拟合。0032由于曲线分为二次曲线、三次曲线甚至更高次的曲线,因而为了拟合不同次的曲线,可选地,根据每一段曲线的曲率或角度或弧度和次级,使用对应阶数的多项式进行曲线拟合。通过曲线拟合,在仍保持计算精度在000001范围内的基础上,将计算速度提升3040。0033为了更详细地示例本实施例如何通过多项式进行曲线拟合,对于不同的三角函数和反三角函数分别采用以下方式来计算0034对于正弦函数0035说明书CN104252713A3/10页60036说明书CN104252713A4/10页70037说明书CN104252713A5/10页80038对。
15、于余弦函数0039说明书CN104252713A6/10页900400041对于反正弦0042说明书CN104252713A7/10页100043对于反余弦00440045需要说明的是,上述描述仅是为了举例如何通过多项式的计算来对不同的三角函数或反三角函数的曲线进行拟合逼近,并不在此限制,其他可拟合三角函数或/和反三角函数的曲线的函数同样包含于此。0046步骤S102,根据所组织的矢量数据,渲染成对应的地图图片。0047其中,所组织的一定的矢量数据,对应相应的一张待渲染的地图图片。在渲染过程中,需要将矢量数据转化为对应的待渲染的地图图片的图像纹理,而每张地图图片的图像纹理都需要为其分配合理的内。
16、存。0048本实施例中,为了提升地图渲染速度和CPU的处理性能,请参考图2,图2示出了本发明的一个实施例的根据所组织的矢量数据,渲染成对应的地图图片步骤的示意图,根据图2,所述步骤S102包括0049步骤S201,根据所组织的矢量数据,创建图像纹理并将为其分配合理的内存。0050其中,不同的地图图片通常对应不同的图像纹理,图像纹理通常与地图上所表示的不同位置的地形地貌有关,在一些实施例中,可以将其简单看成地图的底图,例如用蓝色的底图表示海洋,用白色的底图表示陆地,用黑白相间的曲线表示铁路,用纯橘色的曲线表示高速公路等。0051通常,地图由多张地图图片拼凑而成,而一张地图图片包括一种或多种图像纹。
17、理,每张地图图片的渲染通常是按一定的优先级按序进行的,优先级的设定根据不同的需要进行调整,例如,以从待显示的电子地图的中心向周围的优先级按序渲染每张地图图片。0052由于每张待渲染的地图图片所包括的图像纹理的数量和种类存在差异,因而为每张待渲染的地图图片所对应的图像纹理分配的内存的空间也存在差异。例如,一张512512像素的图片所需分配的内存的空间通常大于一张256256像素的图片所需分配的内存空间。0053步骤S202,从内存中调用图像纹理,渲染成对应的地图图片,其中,从内存中调用图像纹理后,保留所述内存。0054其中,为图像纹理分配内存并从内存中调用图像纹理,是渲染地图图片的中间过程,也即。
18、每张待渲染的地图图片,都需要为其提供存储图像纹理的合适空间的内存,以便于渲染图片时,从分配的内存中调取相应的图像纹理。由此,此处所述的内存明显不同于显存。0055本实施例中,为了解决现有技术中为每张地图图片的图像纹理频繁分配内存和频繁释放内存、重新分配内存所导致的CPU处理时间消耗过多、地图渲染速度变慢的缺陷,从说明书CN104252713A108/10页11内存中调用图像纹理后,保留所述内存。0056可选地,请参考图3,图3示出了根据本发明另一个实施例的根据所组织的矢量数据,渲染成对应的地图图片步骤的示意图。根据图3,各地图图片的渲染存在时间上的先后顺序,对于后续待渲染的地图图片,为使得其图。
19、像纹理能够有效地利用为前续已渲染的地图图片所保留的内存,所述根据所组织的矢量数据,渲染成对应的地图图片的步骤S102包括0057步骤S301,根据所组织的矢量数据,创建图像纹理。如上文所述,不再赘述。0058步骤S302,初始化已保留的为前续已渲染的地图图片分配的内存并将其分配给所述图像纹理。即对已保留的为前续已渲染的地图图片分配的内存进行初始化操作,以使得后续待渲染的地图图片的图像纹理可以共享该内存,从而避免重新分配内存的繁琐,显著提升渲染过程的处理性能。0059步骤S303,从内存中调用图像纹理,渲染成对应的地图图片;其中,从内存中调用图像纹理后,保留所述内存。即对于后续待渲染的地图图片,。
20、当其从内存中调用图像纹理后,仍保留所述内存,为接下来的待渲染的地图图片的图像纹理提供存储空间。0060通过本实施例,一方面可以使后续待渲染图片的图形纹理很好地利用为前续已渲染的地图图片所保留的内存,另一方面也较大程度地克服了频繁分配内存、频繁释放内存的繁琐。0061可选地,请参考图4,图4示出了根据本发明又一个实施例的根据所组织的矢量数据,渲染成对应的地图图片步骤的示意图。根据本发明的一个实施例,各地图图片的渲染存在时间上的先后顺序,对于后续待渲染的地图图片,所述根据所组织的矢量数据,渲染成对应的地图图片的步骤S102包括0062步骤S401,根据所组织的矢量数据,创建图像纹理。如上文所述,不。
21、再赘述。0063步骤S402,比较所述图像纹理待需的存储空间和已保留的为前续已渲染的地图图片分配的内存的空间。0064如上文所述,每张图片对应的图像纹理所需的存储空间可能不同,例如,一张512512像素的图片所需分配的内存的空间通常大于一张256256像素的图片所需分配的内存空间。则为了给后续待渲染的地图图片的图像纹理提供合适的存储空间,对该待渲染的地图图片的图像纹理所需的存储空间和为前续已渲染的地图图片所保留的内存的空间进行比较,以确定是否利用所保留的内存。0065如果所述图像纹理待需的存储空间大于或等于已保留的为前续已渲染的地图图片分配的内存的空间,则进入步骤S403,初始化已保留的为前续。
22、已渲染的地图图片分配的内存并将其分配给所述图像纹理,否则,进入步骤S404,释放已保留的为前续已渲染的地图图片分配的内存,为所述图像纹理重新分配合理的内存。0066可选地,在确定是否利用所保留的内存上,将队列机制引入其中,也即0067如果所述图像纹理待需的存储空间大于或等于已保留的为前续已渲染的地图图片分配的内存的空间,则初始化已保留的为前续已渲染的地图图片分配的内存并将其分配给所述图像纹理,例如,前一张已渲染的地图图片所保留的内存的空间为512512单位可以以位、字节、字、兆等表示,后续待渲染的地图图片的图像纹理所需要的存储空间为256256单位,也即所保留的内存的空间对于后续待渲染的地图图。
23、片的图像纹理而言,已经说明书CN104252713A119/10页12足够,则对已保留的为前续已渲染的地图图片分配的内存进行初始化,即可将其分配给后续待渲染的地图图片的图像纹理;0068如果反过来,所述图像纹理待需的存储空间小于已保留的为前续已渲染的地图图片分配的内存的空间,则动态更新已保留的为前续已渲染的地图图片分配的内存,以满足后续待渲染的地图图片的图像纹理的存储。例如,前一张已渲染的地图图片所保留的内存的空间为256256单位,而后续待渲染的地图图片的图像纹理所需要的存储空间为512512单位,也即所保留的内存的空间远远不足以满足后续待渲染的地图图片的图像纹理的存储,因而动态更新已保留的。
24、为前续已渲染的地图图片分配的内存。在此,对动态更新的方式不作限定,可以删除已保留的为前续已渲染的地图图片分配的内存,为后续待渲染的地图图片的图像纹理分配新的内存,也可以在可能地情况下在已保留的为前续已渲染的地图图片分配的内存上进行扩容等。0069步骤S405,从内存中调用图像纹理,渲染成对应的地图图片;其中,从内存中调用图像纹理后,保留所述内存。同上,对于后续待渲染的地图图片,当其从内存中调用图像纹理后,仍保留所述内存,为接下来的待渲染的地图图片的图像纹理提供存储空间。0070图5示出了根据本发明一个优选实施例的地图渲染装置的示意性框图。根据图5,所述地图渲染装置包括0071用于基于OPENG。
25、L组织矢量数据的单元501;0072用于根据所组织的矢量数据,渲染成对应的地图图片的单元502;0073其中,用于基于OPENGL组织矢量数据的单元501包括0074用于在组织矢量数据的过程中进行曲线拟合的模块5011。0075应当理解,图5所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些单元或/和模块。0076可选地,所述用于在组织矢量数据的过程中进行曲线拟合的模块5011用于0077将曲线分段,对每一段曲线使用对应的多项式进行曲线拟合。0078可选地,所述用于在组织矢量数据的过程中进行曲线拟合的模块5011用于0079根据每一段曲线。
26、的曲率和次级,使用对应阶数的多项式进行曲线拟合。0080可选地,所述用于根据所组织的矢量数据,渲染成对应的地图图片的单元502包括0081用于根据所组织的矢量数据,创建图像纹理并将为其分配合理的内存的模块未示出;0082用于从内存中调用图像纹理,渲染成对应的地图图片的模块未示出;0083用于保留已分配的内存的模块未示出。0084在一个实施例中,各地图图片的渲染存在时间上的先后顺序,对于后续待渲染的地图图片,所述用于根据所组织的矢量数据,渲染成对应的地图图片的单元502包括0085用于根据所组织的矢量数据,创建图像纹理的模块未示出;0086用于初始化已保留的为前续已渲染的地图图片分配的内存并将其。
27、分配给所述图像纹理的模块未示出;0087用于从内存中调用图像纹理,渲染成对应的地图图片的模块未示出;0088用于保留已分配的内存的模块未示出。说明书CN104252713A1210/10页130089在一个实施例中,各地图图片的渲染存在时间上的先后顺序,对于后续待渲染的地图图片,所述用于根据所组织的矢量数据,渲染成对应的地图图片的单元包括0090用于根据所组织的矢量数据,创建图像纹理的模块未示出;0091用于比较所述图像纹理待需的存储空间和已保留的为前续已渲染的地图图片分配的内存的空间的模块未示出;0092用于初始化已保留的为前续已渲染的地图图片分配的内存并将其分配给所述图像纹理的模块未示出;。
28、0093用于释放已保留的为前续已渲染的地图图片分配的内存,为所述图像纹理重新分配合理的内存的模块未示出;0094用于从内存中调用图像纹理,渲染成对应的地图图片的模块未示出;0095用于保留已分配的内存的模块未示出。0096所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即可以是完全的硬件,也可以是完全的软件,还可以是硬件和软件结合的形式。0097附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块。
29、、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。0098对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。说明书CN104252713A131/3页14图1图2说明书附图CN104252713A142/3页15图3图4说明书附图CN104252713A153/3页16图5说明书附图CN104252713A16。