CN116561081A - 数据处理方法、装置、电子设备、存储介质及程序产品 - Google Patents
数据处理方法、装置、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN116561081A CN116561081A CN202310830960.XA CN202310830960A CN116561081A CN 116561081 A CN116561081 A CN 116561081A CN 202310830960 A CN202310830960 A CN 202310830960A CN 116561081 A CN116561081 A CN 116561081A
- Authority
- CN
- China
- Prior art keywords
- style
- data
- image
- vector
- cache image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 29
- 238000009877 rendering Methods 0.000 claims abstract description 89
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 24
- 238000004590 computer program Methods 0.000 claims description 22
- 238000013507 mapping Methods 0.000 claims description 22
- 230000000694 effects Effects 0.000 abstract description 22
- 230000008878 coupling Effects 0.000 abstract description 4
- 238000010168 coupling process Methods 0.000 abstract description 4
- 238000005859 coupling reaction Methods 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 abstract description 4
- 239000000872 buffer Substances 0.000 description 35
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 6
- 239000003086 colorant Substances 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000004040 coloring Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/116—Details of conversion of file system types or formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Remote Sensing (AREA)
- Image Generation (AREA)
Abstract
本申请实施例提供了一种数据处理方法、装置、电子设备、存储介质及程序产品,涉及地图、云技术等领域。该方法包括:获取矢量地图对应的第一样式数据和第一矢量数据;将第一样式数据中包含的样式种类存储为第一样式缓存图像;针对每条第一矢量数据,确定第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值,并将UV坐标值携带在第一矢量数据中,得到第二矢量数据;将第二矢量数据和第一样式缓存图像提交渲染,即本申请实施例通过第一样式缓存图像,将样式种类与矢量数据完全解耦,解决了现有技术中因样式种类和数据耦合在一起造成的性能和效果瓶颈问题,有效达到优化渲染性能的目的。
Description
技术领域
本申请涉及电子地图技术领域,具体而言,本申请涉及一种数据处理方法、装置、电子设备、存储介质及程序产品。
背景技术
随着GIS(Geographic Information System,地理信息系统)的不断发展,电子地图的使用日益普及。其中,矢量地图是一种常见的电子地图,所有的数据以矢量的方式存放管理。矢量地图最大的优点是进行放大、缩小或旋转等操作都不会失真。
对于矢量地图的显示,需要调用图像编程接口来提交渲染。现有技术中,可以将矢量地图的所有矢量数据按类型整合成多个或整体整合成一个进行提交渲染,因此需要进行矢量数据的三角化流程,即将下发的矢量数据生成顶点数据和其三角形索引,在这个过程中将将当前样式信息都携带在顶点数据中,统一提交渲染。
但是,这种渲染方式会影响矢量地图的渲染性能,例如当多样式的矢量地图的样式发生切换时,由于矢量数据的整合,需要重新进行一次矢量数据的三角化流程,再次提交渲染从而完成样式切换。因此,大量的CPU(Central Processing Unit,中央处理器)计算流程会在样式切换时发生,造成切换过程整个系统的卡顿。
发明内容
本申请实施例的目的旨在能解决如何提升矢量地图的渲染性能问题。
根据本申请实施例的一个方面,提供了一种数据处理方法,该方法包括:
获取矢量地图对应的第一样式数据和第一矢量数据;
将第一样式数据中包含的样式种类存储为第一样式缓存图像;
确定第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值,并将UV坐标值携带在所第一矢量数据中,得到第二矢量数据;
将第二矢量数据和第一样式缓存图像提交渲染。
根据本申请实施例的另一个方面,提供了一种数据处理装置,该装置包括:
获取模块,用于获取矢量地图对应的第一样式数据和第一矢量数据;
存储模块,用于将第一样式数据中包含的样式种类存储为第一样式缓存图像;
处理模块,用于确定第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值,并将UV坐标值携带在所第一矢量数据中,得到第二矢量数据;
提交模块,用于将第二矢量数据和第一样式缓存图像提交渲染。
根据本申请实施例的又一个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现本申请实施例提供的数据处理方法。
根据本申请实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本申请实施例提供的数据处理方法。
根据本申请实施例的还一个方面,提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本申请实施例提供的数据处理方法。
本申请实施例提供的数据处理方法、装置、电子设备、存储介质及程序产品,将矢量地图对应的第一样式数据中包含的样式种类存储为第一样式缓存图像,针对矢量地图对应的每条第一矢量数据,确定第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值,并将UV坐标值携带在所第一矢量数据中,得到第二矢量数据,将第二矢量数据和第一样式缓存图像提交渲染,即本申请实施例通过第一样式缓存图像,将样式种类与矢量数据完全解耦,解决了现有技术中因样式种类和数据耦合在一起造成的性能和效果瓶颈问题,有效达到优化渲染性能的目的。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的实现数据处理的系统架构示意图;
图2为本申请实施例提供的一种数据处理方法的流程示意图;
图3为本申请实施例提供的另一种数据处理方法的流程示意图;
图4为本申请实施例提供的一种渲染效果的示意图;
图5为本申请实施例提供的另一种渲染效果的示意图;
图6为本申请实施例提供的一种样式缓存图像的示意图;
图7为本申请实施例提供的一种矢量地图瓦片的示意图;
图8为本申请实施例提供的矢量地图的一张瓦片的示意图;
图9为本申请实施例提供的一种场景三角化的构示意图;
图10为本申请实施例提供的一种数据处理完整流程的示意图;
图11为本申请实施例提供的一种数据处理装置的结构示意图;
图12为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式 “一”、“一个”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或 “耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”可以实现为“A”,或者实现为“B”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
(1)像素:是图像显示的基本单位,每个像素可以由颜色空间的红、绿、蓝三种颜色分量和透明度进行描述。
(2)UV坐标:是U,V纹理贴图坐标的简称(它和空间模型的X, Y, Z轴是类似的),可以理解为图像的百分比坐标。把图像看作二维的一个平面,水平方向是U,垂直方向是V,UV坐标的水平方向和垂直方向的坐标取值范围均是[0,1],通过这个平面的二维的UV坐标系,可以定位图像上的任意一个象素的位置信息。
(3)顶点数据:是矢量地图渲染的基础数据结构,由三个顶点构成一个三角形作为矢量地图渲染的最小单位。每个顶点数据可以携带位置、法线、颜色、UV坐标等信息。
(4)GPU(graphics processing unit,图形处理器):对于图像的渲染,可以使用GPU代替CPU渲染。GPU可以加速图像的渲染和填充,提升图像加载速度,降低CPU的负担。
(5)Draw Call(绘制调用):是CPU对GPU的一种命令,CPU通过调用图像编程接口,命令GPU进行图像的渲染操作。其中,可以由着色器在GPU上执行该命令,一个Draw Call对应的一组顶点数据可以使用相同的着色器进行渲染,不同的着色器渲染图像数据时需要分别消耗Draw Call。
现有技术中,基于Draw Call的渲染方案主要包括以下两种:
第一种现有方案:不合并Draw Call的方案。对于待渲染的矢量数据,可以不进行Draw Call合并,或仅将样式种类相同的数据进行Draw Call合并,将对应的样式数据作为变量传入着色器渲染使用。在每个Draw Call的渲染中,着色器存储的样式种类变量值都不同。
这种方案的优势是:当样式发生切换时,可以快速的查询到和指定新样式相关联的样式数据和着色器,继而使用新样式下的样式数据更新相应着色器的变量值,就可以更新对应数据的渲染效果,无需重新生成顶点数据向GPU的提交,即不会引入顶点数据的重新计算,不会带来CPU计算卡顿问题,渲染的灵活性较高。
这种方案的缺陷是:Draw Call过多带来的性能限制。当样式发生切换时,不合并Draw Call会使得整个系统的Draw Call数量激增,使得渲染帧率过低带来GPU卡顿。因此使用该方案时通常需要降低当前屏幕内矢量数据的数量以及矢量地图的样式种类,对于大面积展示矢量地图的场景和注重展示效果的场景,该方案无法使用。
第二种现有方案:合并Draw Call方案。可以将矢量地图的所有矢量数据按类型整合成多个或整体整合成一个Draw Call进行渲染,因此需要将当前样式下的样式数据携带在顶点数据中,统一提交到GPU中,在GPU中使用同一着色器借助于该提交数据进行渲染呈现。
这种方案的优势是:可以显著减少Draw Call数量,进而减少GPU的渲染卡顿现象。
这种方案的缺陷是:当样式发生切换时,需要使用新样式下的样式数据更新顶点数据,重新生成顶点数据向GPU的提交,造成CPU计算卡顿和大量数据向GPU提交带来的渲染卡顿。当样式发生切换时,当前屏幕内展示的所有矢量数据需要根据新样式查询到指定的样式数据进行顶点数据的更新,而当Draw Call合并后,无法直接快速地从原有的顶点集合中反查出属于指定样式种类的所有顶点,以达到直接更新顶点样式种类的目的。因此需要重新进行一次矢量数据的三角化流程,即将下发的地图数据重新生成顶点数据和其三角形索引,在这个过程中将新的样式数据携带在对应顶点数据中,再次提交至GPU渲染,从而完成样式切换。因此,大量的CPU计算流程会在样式切换时发生,造成切换过程整个系统的卡顿。若将待提交的数据均匀的分布在多帧内提交可以降低系统整体的卡顿感,但也会带来屏幕内矢量数据样式不统一的现象,影响效果和体验。
针对相关技术(上述现有不合并Draw Call的方案和现有合并Draw Call方案)中所存在的上述至少一个技术问题或需要改善的地方,本申请提出一种矢量地图的数据处理方法、装置、电子设备、存储介质及程序产品,该方案通过针对矢量地图渲染需要支持多样式呈现的场景,对矢量地图渲染的性能进行优化,避免了大场景呈现下Draw Call过多带来的性能卡顿,以及样式切换时的闪烁和卡顿现象。
本申请实施例提供的矢量地图的数据处理方法可以具体应用在终端设备中,也可应用在服务器中,或者也可以由多个具有计算能力的计算机设备或器件协作完成,不同的计算机设备或器件各自完成本申请实施提供的各方法的一部分步骤。例如一个计算机设备或器件可负责生成样式缓存图像并提交渲染,一个计算机设备或器件可负责对矢量数据进行渲染等,但不限于此。
可选地,终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能穿戴设备(例如手表、眼镜等)、智能电视、智能音箱、车载终端、个人数字助理、便携式多媒体播放器、导航装置等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,云计算是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing )、分布式计算(DistributedComputing)、并行计算(ParallelComputing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
一个示例中,图1为实现本申请实施例提供的矢量地图的数据处理方法的一种系统架构示意图。如图1所示,该系统架构10中可以包括:终端设备101以及为本申请实施例提供的数据处理方法提供技术支持的服务器102,终端设备101和服务器102之间可以通过有线通信方式或无线通信方式进行直接或间接地通信连接。
在本申请实施例中,服务器102用于储存矢量地图相关的信息,例如矢量数据、样式数据等,并对当前待显示的地图区域和样式进行处理。
终端设备101用于接收和显示信息。终端设备101中可以安装有至少一个基于客户端/服务器机制的应用程序或小程序(Application,APP),终端设备101可以通过该APP向服务器102发送地图显示请求。或者,该终端设备101也可以通过web应用向服务器102发送地图显示请求,但不限于此。
相应地,服务器102响应于终端设备101发送的地图显示请求,向终端设备101中的APP返回矢量地图的矢量数据和/或样式数据,以便于终端设备101对接收到的矢量数据对应的矢量地图进行渲染,便可对地图进行显示。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
本申请实施例中提供了一种数据处理方法,如图2所示,该方法包括:
步骤S201:获取矢量地图对应的第一样式数据和第一矢量数据;
本申请实施例中,矢量数据区别于被渲染后所显示的地图,是指以矢量格式存储,未进行渲染的矢量地图的数据,也可称为矢量地图数据或者地图矢量数据。矢量数据通常由服务端下发,由客户端接收后处理成三角形进行渲染呈现。
在直角坐标中,矢量数据通常用x、y坐标表示地图图形或地理实体的位置和形状的数据。其类型主要包含线数据和面数据,例如,线数据可以表示道路,面数据可以表示区域面,携带高度值的面数据可以表示建筑。
本申请实施例中,样式数据是指包含矢量数据渲染时需要与之对应的样式信息的数据。为了达到不同的地图展示效果,可以配置多套样式数据供矢量地图的渲染呈现。例如,用户可以对终端设备上显示的地图进行缩放,使地图显示的比例尺发生变化。由于是矢量地图,不论终端设备上地图显示的比例尺如何变化,地图都不会存在失真的问题。可以针对地图显示的不同比例尺,提供不同的样式数据,使得地图显示不同的比例尺时,可以提供更多样化的显示效果。可选地,多套样式数据除了可以对应地图显示的不同比例尺外,也可以对应不同地理位置、不同时间(不同季节、白天/夜间等)、不同天气等,本领域技术人员可已根据实际情况进行设置,本申请实施例在此对多套样式数据的配置方式不做具体限定。
实际应用中,样式数据可以通过多种格式下发,本申请实施例在此对样式数据的下发格式也不做具体限定。例如,当客户端启动渲染后,可以向服务端拉取样式数据。服务器可以下发默认的样式表和/或各套用于多样式展示的样式配置表。其中,默认样式表作为全量样式信息的存储表,存储了和矢量地图相关联的所有样式种类的信息。在本地没有样式表存在时,可以使用默认样式表进行样式种类查询及渲染。各套用于多样式展示的样式配置表中,可以仅包含展示需要的部分样式种类的信息。当需要增加新的样式种类时,需要在默认样式表中添加新的样式种类及其相关信息,保证默认样式表中存储有全量样式种类。
本申请实施例中,对样式种类的内容不做具体限定。例如,线数据的样式种类可以包括但不限于线宽、颜色、有无描边等,面数据的样式种类可以包括但不限于填充色、描边色等。
可选地,每一个样式种类分别和一个样式ID(Identity document,身份标识号)相关联。即样式种类可以通过相应的样式ID进行表示。覆盖矢量地图的所有矢量数据的样式ID信息称为一套样式数据。
步骤S202:将第一样式数据中包含的样式种类存储为第一样式缓存图像;
本申请实施例中,第一样式数据是指默认的全量样式种类,例如默认样式表,可以直接将默认样式表中包含的所有样式种类存储为第一样式缓存图像。
本申请实施例中,样式缓存图像可以理解为一个buffer(缓冲器),用于缓存待渲染的样式种类信息,并用于和矢量数据建立关联,起到解耦样式数据和矢量数据的作用,样式缓存图像也可称为图像buffer或样式buffer等。其中,样式缓存图像和矢量数据建立关联的过程可以参见步骤S203。
步骤S203:确定第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值,并将UV坐标值携带在所第一矢量数据中,得到第二矢量数据;
由于第一样式缓存图像中存储有第一样式数据中包含的各样式种类,那么针对每条第一矢量数据,均可以在第一样式缓存图像中找到对应的样式种类存储的位置,本申请实施例中,该位置用UV坐标值来表示。
通常提交渲染的矢量数据可以携带8组UV坐标值,但不限于此,也可以设置为携带其他数量的UV坐标值。其中,矢量数据携带的UV坐标值除了可以用于完成纹理映射外,也可以携带其他信息在GPU计算时使用。本申请实施例中,将确定出的各条第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值,作为一组UV坐标值,将其携带在所第一矢量数据中,用于GPU在渲染时读取所需的样式种类。
步骤S204:将第二矢量数据和第一样式缓存图像提交渲染。
本申请实施例中,由于第二矢量数据携带有UV坐标值,将第二矢量数据和第一样式缓存图像提交渲染后,和现有技术中直接使用每个矢量数据携带的样式种类进行渲染不同,GPU在渲染时可以使用携带的UV坐标值,从提交的当前第一样式缓存图像中的相应位置读取所需的样式种类进行渲染。
即本申请实施例中,针对第一样式缓存图像,将样式缓存图像提交渲染之后,渲染侧执行的步骤还可以包括:基于UV坐标值,从提交的样式缓存图像中读取第二矢量数据对应的像素信息;基于像素信息,对第二矢量数据进行渲染。
对于本申请实施例,可以理解为是一种合并Draw Call的方案,同样能够减少DrawCall数量,减少GPU的渲染卡顿现象。
本申请实施例提供的数据处理方法,通过第一样式缓存图像,将样式种类与矢量数据完全解耦,解决了现有技术中因样式种类和数据耦合在一起造成的性能和效果瓶颈问题,有效达到优化渲染性能的目的。
进一步地,在如图2所示的本申请实施例提供的数据处理方法的基础上,如图3所示,该方法还可以包括:
步骤S205:响应于对矢量地图的样式切换指令,确定根据样式切换指令对应的第二样式数据更新后的第二样式缓存图像;
本申请实施例中,可以通过用户触发或自动触发的相关操作,例如放大、搜小、拖动地图等操作或者时间节点触发等操作,触发地图样式的切换,并发起对矢量地图的样式切换指令。客户端响应于该样式切换指令,读取根据样式切换指令对应的新的第二样式数据,重新制作的第二样式缓存图像。
可选地,该第二样式缓存图像可以是预先制作好的,例如以第一样式数据是默认样式表,第二样式数据是样式配置表为例,客户端可以一次性从服务器拉取默认样式表及多套用于多样式展示的样式配置表,并分别制作对应的第一样式缓存图像和各套第二样式缓存图像,在该步骤中直接获取即可。
或者可选地,该第二样式缓存图像可以是实时制作的。例如以第一样式数据是默认样式表,第二样式数据是样式配置表为例,客户端可以在接收到对矢量地图的样式切换指令后,从服务器拉取样式切换指令对应的样式配置表,并在该步骤中即时制作对应的第二样式缓存图像。
其中,对于各套第二样式缓存图像的制作,可以基于各套用于多样式展示的样式配置表,并结合默认样式表,将样式配置表包含的样式种类和默认样式表包含的部分(如样式配置表中未配置的部分)样式种类存储为第二样式缓存图像。
步骤S206:将第二样式缓存图像提交渲染。
本申请实施例中,当获得新的第二样式缓存图像后,对于已经提交过的第二矢量数据,只需要将第二样式缓存图像提交渲染即可,能够这样做的原因在于,第一样式数据的全量样式在系统开始运行时已构建,因此所有矢量数据的携带的UV坐标值已经确定,不同的只是样式缓存图像,即基于UV坐标值从样式缓存图像中采样获取的颜色不同。
可以理解,对于未提交过的矢量数据,可以按照步骤S203的方法确定矢量数据对应的样式种类在第二样式缓存图像中的UV坐标值,并将UV坐标值携带在矢量数据中,连同新的第二样式缓存图像一起提交渲染即可。
本申请实施例中,由于提交后的矢量数据携带有UV坐标值,将第二样式缓存图像提交渲染后,GPU在渲染时可使用携带的UV坐标值,从提交的当前第二样式缓存图像中的相应位置读取所需的样式种类进行渲染。
即本申请实施例中,针对第二样式缓存图像,将样式缓存图像提交渲染之后,客户端的渲染侧执行的步骤还可以包括:基于UV坐标值,从提交的样式缓存图像中读取第二矢量数据对应的像素信息;基于像素信息,对第二矢量数据进行渲染。
可选地,渲染侧渲染过程中可以执行并行运算逻辑,但不限于此。
本申请实施例提供的数据处理方法,吸取了以上两种现有方案(上述现有不合并Draw Call的方案和现有合并Draw Call方案)的优势,在合并Draw Call降低GPU渲染卡顿的基础上,通过样式缓存图像,将样式种类与矢量数据完全解耦,避免了样式切换发生时需要重新进行数据三角化操作带来的CPU计算卡顿和效果问题,渲染的灵活性较高,能够在展示矢量地图所有样式的前提下保证渲染性能。
本申请实施例中,为步骤S202提供了一种可行的实施方式,具体地,可以包括:
步骤S2021:确定每种样式种类在第一样式缓存图像中的占用像素数;
实际应用中,该占用像素数可以是预定义的,本领域技术人员可以根据实际情况对占用像素数的值进行设置,本申请实施例在此不做限定。
可选地,该占用像素数的值应大于或等于样式种类对应的样式数量。
可选地,不同样式种类对应的占用像素数可以相同或不同。
步骤S2022:按照预定排布方式,将各个样式种类基于对应的占用像素数依次排布到第一样式缓存图像中。
本申请实施例中,本领域技术人员可以根据实际情况对样式缓存图像的形状进行设置,例如可以是一维图像或二维图像等,但不限于此;又例如,若样式缓存图像是二维图像,那么样式缓存图像可以是长方形图像或正方形图像,本申请实施例在此不做限定。
本申请实施例中,对于不同形状的样式缓存图像,本领域技术人员可以根据实际情况对预定排布方式进行设置,例如若样式缓存图像是一维图像,假设占用像素数为4,可以从左到右或从上到下等方式将第1个样式种类占用的4个像素数,第2个样式种类占用的4个像素数,第3个样式种类占用的4个像素数依次进行排布,但不限于此。若样式缓存图像是二维图像,还可以设置行优先还是列优先进行排布,以及每一行或每一列是否需要排满等,本申请实施例在此不做限定。
本申请实施例中,样式缓存图像存储的样式种类信息具体可以是指颜色信息。参见图4和图5,分别是由相同的矢量数据搭配不同的样式数据渲染生成的效果。可以看到,两幅图中的道路、区域面以及建筑的几何形态完全相同,而样式不同(主要体现在颜色不同),对应的渲染效果不同,从而能够呈现出不同的效果。例如,图4可以用于表现白天状态下地图的效果,图5可以用于表现夜间状态下地图的效果,也可以结合季节、地理位置等分别设置不同的样式。因此,实时切换地图的各种样式(颜色)是可视化地图引擎重要的功能点。
对于本申请实施例,样式缓存图像的每个像素即可表示对应颜色信息。
则对于客户端的渲染侧,渲染时可以使用每个第二矢量数据携带的二维UV坐标值,从提交的当前样式的样式缓存图像中,读取对应的颜色值,并使用该颜色值进行地图的着色。
本申请实施例中,为步骤S2021和步骤S2022提供了一种可选的实施方式,具体地,步骤S2021可以包括:获取矢量地图对应的数据级别数量:将数据级别数量与预定数量的和,确定为每种样式种类在第一样式缓存图像中的占用像素数;
对于本申请实施例,所有样式种类均按照矢量地图对应的数据级别分为不同的样式(各样式种类对应的样式数量和数量级别数量相同)。其中,数据级别可以基于矢量地图的配置获得。
一个示例中,矢量地图的多级数据可以细分为3-24共22个数据级别(0-2的数据级别无样式种类),不同数据级别对应地图显示的不同比例尺,则每个样式种类对应的样式最多会有22个不同的颜色。
本申请实施例中,对预定数量的值不做具体限定。例如,预定数量可以为2,则接上例,每种样式种类在第一样式缓存图像中的占用像素数可以为22+2=24。其中,预定数量的设置可以用于分隔不同的样式种类,便于进行问题定位排查。
进一步地,步骤S2022具体可以包括:针对每种样式种类,将预定数量的像素绘制为预定样式,将数据级别数量的样式种类基于预定数量的像素进行依次排布;将占用像素数的各个样式种类依次排布到第一样式缓存图像中。
实际应用中,本领域技术人员可以根据实际情况设置预定数量的像素在占用像素数的像素中位置,以及预定样式的具体样式。如接上例中每个样式种类需要使用24个占用像素数,预定数量的2个像素可以是指24个连续的像素中的首两个,或最后两个,或首个加最后一个,或者其他位置。可选地,预定数量的像素绘制的预定样式可以相同或不同,例如24个连续的像素中,可以将首个像素绘制成红色,最后一个像素绘制成蓝色,但不限于此。
进一步地,每个样式种类的每一个数据级别的颜色值,可以根据当前样式种类进行读取并填入对应像素位置。例如第1(可计为0)个样式种类,占据样式缓存图像中第0个到第23个共24个像素,第2(可计为1)个样式种类,占据样式缓存图像中第24个到第47个共24个像素,第n+1(可计为n)个样式种类,占据图像中第n*24个到第(n+1)*24-1个共24个像素。
进一步地,以样式缓存图像是二维图像为例,可以以行优先方式从左到右进行排布,排满一行后从下一行的最左侧开始继续排布。图6是一个根据样式读取制作的样式缓存图像的一部分,其中每两个预定样式(一个点状填充的像素和一个斜线填充的像素)区间代表一个样式种类的信息,该示例中,样式缓存图像底色为白色,当对应像素无信息时即为白色。
本申请实施例中,在步骤S202之前,还可以包括:
步骤SA1:确定第一样式数据中包含的样式种类的总种类数,以及每种样式种类在第一样式缓存图像中的占用像素数;
本申请实施例中,第一样式数据中包含的样式种类的总种类数,可以是指全量样式种类的数量。每种样式种类在第一样式缓存图像中的占用像素数可以参见对步骤S2021和步骤S2022的介绍,在此不再赘述。
步骤SA2:基于总种类数和占用像素数,确定所需总像素数;
可选地,若不同样式种类对应的占用像素数不同,可以将总种类数的占用像素数全部相加,例如,假设总种类数为3,第一个样式种类对应的占用像素数为2,第二个样式种类对应的占用像素数为3,第三个样式种类对应的占用像素数为4,则所需总像素数为2+3+4=9。
可选地,若不同样式种类对应的占用像素数相同,也可以直接将总种类数和占用像素数相乘。假设定义每个样式种类需要占用24个像素值,则总种类数*24就是所需的总像素值。例如,若总种类数为101(从0开始计数到100),则所需总像素数为(100+1)*24=2424。
步骤SA3:基于所需总像素数,确定第一样式缓存图像的尺寸。
可选地,基于第一样式缓存图像的尺寸确定的第一样式缓存图像包含的像素数大于或等于所需总像素数。
本申请实施例中,根据第一样式数据中包含的样式种类的总种类数的规模,估算第一样式缓存图像的大小,可以动态地进行第一样式缓存图像的扩缩容,节省空间。
一种可选的实施方式中,第一样式缓存图像为二维正方形图像,步骤SA3具体可以包括:
步骤SA31:将所需总像素数开平方后,向上取距开平方结果最近的2的幂次方值;
步骤SA32:将距开平方结果最近的2的幂次方值确定为第一样式缓存图像的边长。
由于第一样式缓存图像为二维正方形图像,其长宽值相同,即为计算出的第一样式缓存图像的边长。
作为示例地,以所需总像素数为2424为例,开平方后大于等于该值的最小的2的幂次方是64,则可以确定第一样式缓存图像的边长为64,第一样式缓存图像的大小为64*64。
本申请实施例中,由于UV坐标值的水平方向和垂直方向的坐标取值范围均是[0,1]之间,将2的幂次方作为样式缓存图像的边长,可以提升计算的精度。将最小的2的幂次方作为样式缓存图像的边长,能够最大程度的节省空间。
本申请实施例中,为步骤S203提供了一种可选的实施方式,具体地,可以包括:根据总种类数、第一样式缓存图像的边长和占用像素数,计算第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值。
例如,当第一样式缓存图像的大小确认后,根据总种类数n,正方形二维第一样式缓存图像的边长w、占用像素数、以及当前待显示的矢量地图的数据级别m,就可以确定每个样式种类中代表对应数据级别的像素在图像第一样式缓存图像中的二维UV坐标值。
具体而言,该步骤具体可以包括:
步骤S2031:根据总种类数、和占用像素数,计算第一矢量数据对应的样式种类在第一样式缓存图像中的像素排布值;
第一样式缓存图像可以这样定义:左上角为二维坐标原点,向右为u正方向,向下为v正方向,u和v的值都在区间[0,1]之间,即第一样式缓存图像右上方点坐标为(1,0),左下方点坐标为(0,1),右下方点坐标为(1,1)。
具体地,以图6所示的样式缓存图像为例,像素排布值的计算可以表达为如下公式:
c=n*24+m-3+1= n*24+m-2
其中,c表示像素排布值,n表示总种类数(从0开始计数到n,共n+1个),24表示占用像素数,m表示待显示的矢量地图的数据级别(假设包括3-24)。
可选地,c也是从0开始计数的。c=0表示图6左上角第1个像素,c=1表示第1个样式种类(n=0)的对应第1个数据级别(m=3)的像素,其他像素以此类推,在此不再赘述。
可以理解的是,由于数据级别是从3开始的,因此m-3对应相应的数据级别,若数据级别采用其他配置,可以对公式中的(m-3)进行修改。
步骤S2032:基于第一样式缓存图像的边长,对像素排布值执行取余运算,并将取余运算结果和第一样式缓存图像的边长的商,确定为第一矢量数据对应的样式种类在第一样式缓存图像中的U坐标值;
具体地,接上例,该步骤的计算可以表达为如下公式:
u=(c%w)/w
其中,u表示像素的U坐标值,c表示像素排布值,w表示第一样式缓存图像的边长,%表示取余运算,c%w表示基于第一样式缓存图像的边长,对像素排布值执行取余运算得到的取余运算结果,(c%w)/w表示取余运算结果和第一样式缓存图像的边长的商,即表示像素在第一样式缓存图像中的水平方向的位置。
步骤S2033:对像素排布值和第一样式缓存图像的边长的商进行向下取整,并将向下取整结果和第一样式缓存图像的边长的商,确定为第一矢量数据对应的样式种类在第一样式缓存图像中的V坐标值。
具体地,接上例,该步骤的计算可以表达为如下公式:
v=t/w
t=⌊c/w⌋
其中,v表示像素的V坐标值,c表示像素排布值,w表示第一样式缓存图像的边长,⌊⌋表示向下取整,即t为c/w向下取整的整数值(向下取整结果),t/w表示将向下取整结果和第一样式缓存图像的边长的商,即表示像素在第一样式缓存图像中的垂直方向的位置。
本申请实施例中,还为步骤S202提供了一种可选的实施方式,具体地,可以包括:
步骤SB1:依次读取第一样式数据中包含的样式种类,并且每读取到一个样式种类,进行一次计数;
可选地,当客户端接收到该下发的第一样式数据后,顺序读取第一样式数据中的每个样式种类。
作为示例地,假设第一样式数据中包括以下信息:
……
"65694*" ;[//样式ID为65694的样式种类的样式信息
{
"icon offset": "-1",
"labelid": 262144,
"density": 0.0,
"maxScaleVal": 12,
"minScaleVal": 0,
"stylename": "subwaystation_dg_tran"
}
……
{
"icon offset": "135",
"labelid": 262287,
"density": 2.0,
"maxScaleVal": 20,
"minScaleVal": 16,
"stylename": "subwaystation_dg_tran"
}
]
"65696*" ; [//样式ID为65696的样式种类的样式信息
{
"icon offset": "-1",
"labelid": 262144,
"density": 0.0,
"maxScaleVal": 12,
"minScaleVal": 0,
"stylename": "subwaystation nn tran"
}
……
]
"196609*"
"196610*"
"196611*"
"196612*"
"196613*"
"196614*"
"196615*"
"196616*":[//样式ID为196616的样式种类的样式信息
{
"minScaleVal": 8,
"sidewidth": 1.0,
"color fill": -9722235,
"maxScaleVal": 20,
"color side": -4066616,
"stylename": "greenbelt3"
}
]
"196617*":[//样式ID为196617的样式种类的样式信息
{
"minScaleVal": 3,
"sidewidth": 0.0,
"color fill": -3752259,
"maxScaleVal": 20,
"color side": -1183246,
"stylename": "island"
}
]
可以顺序遍历该第一样式数据(例如可以是默认样式表),读取样式信息,并对样式种类进行计数。
可选地,从0开始计数,每读取到一个样式种类,计数+1。实际应用中,计数方式不限于此,也可以为其他方式。
步骤SB2:将计数结果作为索引值,并建立索引值和第一样式数据中包含的样式种类的关联关系,生成样式种类映射表;
接上例,对第一样式数据的样式种类进行计数可能得到以下样式种类映射表:
"65694" ->0
"65696" ->1
……
"196616" ->300
"196617" ->301
……
通过以上计数逻辑,能够保证每个样式种类(样式ID),都分配了一个固定的索引值。
可选地,最终计数值可以表示上述总种类数。
步骤SB3:基于样式种类映射表,将各个样式种类存储为第一样式缓存图像。
计数完成后,基于样式种类映射表,制作第一样式缓存图像,根据当前需要展示的样式,将所需的信息存储在第一样式缓存图像中,等待后续使用。具体的存储方式可以参见步骤S2021~步骤S2022、步骤SA1~步骤SA3等步骤的介绍,基于样式种类映射表的存储方式类似,在此不再赘述。
基于此,本申请实施例中为步骤S205提供了一种可选的实施方式,具体地,可以包括:
步骤S2051:确定样式切换指令对应的第二样式数据在样式种类映射表中对应的目标索引值;
由于每个样式种类(样式ID),在样式种类映射表中都分配了一个固定的索引值,因此样式切换指令对应的第二样式数据可以在样式种类映射表中读取到对应的索引值。
可选地,可以结合第一样式数据(例如可以是默认样式表)和第二样式数据(例如可以是样式配置表),确定样式切换指令对应的第二样式数据在样式种类映射表中对应的目标索引值。
步骤S2052:在第一样式缓存图像中,将目标索引值对应的像素更新为第二样式数据,得到更新后的第二样式缓存图像。
由于第一样式缓存图像中,样式种类是按照预定排布方式的,因此每个索引值对应的像素是固定的。因此,在确定出目标索引值后,可以直接将第一样式缓存图像中目标索引值对应的像素更新为第二样式数据,便可得到样式切换后待显示的样式信息对应的第二样式缓存图像。
本申请实施例中,为步骤S201中的“获取矢量地图对应的第一矢量数据”步骤提供了一种可行的实施方式,具体地,可以包括:获取矢量地图对应的至少一个瓦片的第一矢量数据。
本申请实施例中,矢量地图的矢量数据可以以切片瓦片的形式进行存储,每张瓦片存储一定区域内的数据。一张瓦片中的所有矢量数据,携带的样式种类可以不同。
在进行一张矢量地图瓦片数据的渲染时,瓦片数据通常会以加密二进制形式下发到客户端。客户端的逻辑侧需要根据数据协议对下发的数据进行解析,得到可被识别的各种形式的矢量数据。其中的每一条数据,都会有其关联的样式种类信息。本申请实施例中,在处理每一条矢量数据时,样式缓存图像的尺寸、样式种类、数据级别等都是已知量,通过查询样式种类映射表,就能够确定计数值,从而换算得到UV值。在所有矢量数据的构造过程中,都将该UV值携带在对应矢量数据中即可。所有矢量数据都处理完成后,连同当前样式的样式缓存图像一同提交渲染。
作为示例地,在大面积展示地图的场景(也可理解为眺望场景)下,如图7所示,当前屏幕内矢量地图的瓦片数量在300张左右。每个黑色方框中的内容就是一张地图瓦片,地图呈现的整个场景是由多级的瓦片数据组合而成的。
由图8可以看到,矢量地图的一张瓦片中包含了各种类型的矢量元素:各种类型的道路会以不同的线宽和颜色进行呈现;各种形态的面根据其功能配以不同的颜色;各种建筑也可以使用相同或不同的颜色进行绘制。虽然各种元素呈现的效果不同,但都是由三角形进行描述和绘制的,图9是图8的场景三角化后的效果。本申请实施例中,针对上述需要将UV坐标值携带在矢量数据中的各步骤,UV坐标值可以是携带在矢量数据的三角形顶点数据中。
如图9所示,在地图瓦片的渲染中,相同样式的一组三角形可以使用1个Draw Call进行绘制,每张瓦片包含40个左右不同样式的矢量数据,因此渲染Draw Call总计在1万个以上,直接渲染(即上述现有不合并Draw Call的方案)会造成GPU渲染瓶颈,性能无法达标。而使用上述现有合并Draw Call的方案,按照矢量数据的元素分类信息的不同,可以将DrawCall优化到300-1200个,但无法避免切换样式时的卡顿和效果降级。
而本申请实施例中,对于步骤S204中的“将第二矢量数据提交渲染”步骤,具体可以包括:针对每个瓦片,确定第二矢量数据的分类信息,并按照分类信息,分别将每种分类信息对应的第二矢量数据合并提交渲染。
即本申请实施例可以理解为一种新的合并Draw Call方案。作为示例地,假设分类信息指示第二矢量数据分为3种类型,则使用本申请实施例提供的方案后,每张瓦片可以降低Draw Call至3个左右,300张左右的瓦片可以降低Draw Call至1000个左右,同时通过样式缓存图像,避免了切换样式时的卡顿和效果降级问题,保证系统整体性能达标。
实际应用中,本领域技术人员可以根据实际情况对第二矢量数据的分类信息进行配置,本申请实施例在此不做限定。
本申请实施例提供的矢量地图的数据处理方法,能够用于解决多样式矢量地图渲染性能问题,可以应用于所有渲染引擎,通过将样式与矢量数据本身完全解耦,解决了现有方案中样式数据和矢量数据耦合在一起造成的性能和效果瓶颈问题。
基于上述至少一个实施例,本申请实施例中提供了一个矢量地图的数据处理方的完整流程示例,如图10所示,主要包括:
1、S10.1-S10.3进行多样式渲染的准备工作。
在S10.1中,当系统(客户端逻辑侧)启动渲染后,首先向服务端拉取样式配置信息(例如发起地图显示请求)。服务端会(同时或分别)下发默认样式表(第一样式数据)以及各套用于多样式展示的样式配置表(第二样式数据)。其中,默认样式表作为全量样式信息的存储表,存储了和矢量数据(元素)相关联的所有样式种类的信息,其中的每一种样式信息会和一个样式ID相关联。在本地没有其他样式配置表存在时,可以使用默认样式表进行颜色查询和渲染。各套用于多样式展示的样式配置表中,可以仅包含需要展示的部分样式ID的信息。
在S10.2中,当客户端接收到下发的信息后,根据默认样式表制作样式ID映射表(样式种类映射表),即顺序读取默认样式表中的每个样式ID,并从0开始计数。计数完成后,能够保证每个样式ID均分配了一个固定的索引值,即可得到样式ID映射表。
在S10.3中,基于样式ID映射表,制作当前待展示的样式对应的二维图像buffer(或称为样式buffer,即样式缓存图像),即将所需的样式种类信息存储在图像buffer中等待后续使用,具体流程如下:
S10.31、根据S10.2计数的规模,估算二维图像buffer的大小。定义每个样式ID,需要占用24个像素值,假设从0开始的计数值为100,则总像素数为(100+1)*24=2424,开平方后大于等于该值的最小的2的幂次方是64,则图像buffer大小为64*64。
S10.32、地图的多级数据瓦片通常会细分为3-24共22个数据级别,定义每个样式ID需要占用的24个连续的像素中,首个像素绘制红色,最后一个像素绘制蓝色,用于分隔不同样式ID信息进行问题定位排查。每个样式ID的每一个数据级别的颜色值,可以根据当前样式进行读取并填入对应像素位置。图像buffer以行优先方式从左到右进行排布,排满一行后从下一行的最左侧开始继续排布,排布完成便可得到图像buffer。
2、S10.4进行矢量地图的瓦片数据的准备工作。
在S10.41中,在请求一张矢量地图的瓦片数据进行渲染时,瓦片数据通常会以加密二进制形式下发到客户端。
在S10.42中,客户端的逻辑侧需要根据数据协议对下发的数据进行解析,得到可被识别的各种形式的矢量数据。其中的每一条数据,都会有其关联的样式ID信息。
在S10.43中,根据S10.3的推导,在处理每一条矢量数据时,图像buffer大小、样式ID、数据级别m都是已知量,通过查询样式ID映射表,就能够确定计数值n,从而换算得到UV值。在所有矢量数据的构造过程中,都额外将该UV值携带在对应矢量数据的每个顶点中后即可。
在S10.44中,所有矢量数据都处理完成后,连同当前样式的图像buffer一同提交渲染。
3、S10.5进行客户端渲染侧的并行运算逻辑。
在S10.51中,和原有的直接使用每个顶点携带的顶点颜色进行着色不同,这一步使用每个顶点携带的二维UV值,从S10.4提交的当前样式的图像buffer中,读取对应的颜色。
在S10.52中,使用该颜色值进行矢量地图的着色(数据渲染)。
4、S10.6执行客户端触发地图样式切换后的流程。
当样式切换发生后,需要根据新的样式重新读取所有样式ID的内容制作新的样式二维图像buffer,该步骤同S10.3一致。或者,直接读取预线根据新的样式内容制作好的新的样式二维图像buffer。
当新的图像buffer生成后,对于已经提交过的矢量数据,只需要更新图像buffer到渲染侧。即若待渲染的矢量数据均已提交,S10.41和在S10.42并非一定要执行的。对于未提交过的矢量数据,同S10.4一致,连同新的图像buffer一起提交至渲染侧即可。
本申请实施例提供的矢量地图的数据处理方法,可以将样式变化与矢量数据完全解耦,在矢量地图渲染需要支持多样式呈现的场景下,优化矢量地图的渲染性能。
本申请实施例提供的矢量地图的数据处理方法,能够用于避免多样式矢量地图数据渲染带来的卡顿现象。可以应用于数字孪生的UE4可视化地图引擎中。UE4可视化地图引擎采用矢量数据构建地球底座,其上可以融合叠加展示其他数据,并提供了API(Application Programming Interface,应用程序接口)供用户二次开发使用。
本申请的发明人再在大面积展示地图的场景中对本申请实施例的方案进行了验证,本申请实施例能够在展示矢量地图数据所有样式的前提下保证渲染性能。
本申请实施例提供了一种数据处理装置,如图11所示,该数据处理装置110可以包括:获取模块1101、存储模块1102、处理模块1103以及提交模块1104,其中,
获取模块1101用于获取矢量地图对应的第一样式数据和第一矢量数据;
存储模块1102用于将第一样式数据中包含的样式种类存储为第一样式缓存图像;
处理模块1103用于确定第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值,并将UV坐标值携带在所第一矢量数据中,得到第二矢量数据;
提交模块1104用于将第二矢量数据和第一样式缓存图像提交渲染。
在一种可选的实施方式中,该数据处理装置110可以包括:
切换模块1105,用于响应于对矢量地图的样式切换指令,确定根据样式切换指令对应的第二样式数据更新后的第二样式缓存图像;
提交模块1104还用于将第二样式缓存图像提交渲染。
在一种可选的实施方式中,存储模块1102在用于将第一样式数据中包含的样式种类存储为第一样式缓存图像时,具体用于:
确定每种样式种类在第一样式缓存图像中的占用像素数;
按照预定排布方式,将各个样式种类基于对应的占用像素数依次排布到第一样式缓存图像中。
在一种可选的实施方式中,存储模块1102在用于确定每种样式种类在第一样式缓存图像中的占用像素数时,具体用于:
获取矢量地图对应的数据级别数量:
将数据级别数量与预定数量的和,确定为每种样式种类在第一样式缓存图像中的占用像素数;
存储模块1102在用于将各个样式种类基于对应的占用像素数依次排布到第一样式缓存图像中时,具体用于:
针对每种样式种类,将预定数量的像素绘制为预定样式,将数据级别数量的样式种类基于预定数量的像素进行依次排布;
将占用像素数的各个样式种类依次排布到第一样式缓存图像中。
在一种可选的实施方式中,存储模块1102在用于将第一样式数据中包含的样式种类存储为第一样式缓存图像之前,还用于:
确定第一样式数据中包含的样式种类的总种类数,以及每种样式种类在第一样式缓存图像中的占用像素数;
基于总种类数和占用像素数,确定所需总像素数;
基于所需总像素数,确定第一样式缓存图像的尺寸。
在一种可选的实施方式中,第一样式缓存图像为二维正方形图像;
存储模块1102在用于基于所需总像素数,确定第一样式缓存图像的尺寸时,具体用于:
将所需总像素数开平方后,向上取距开平方结果最近的2的幂次方值;
将距开平方结果最近的2的幂次方值确定为第一样式缓存图像的边长。
在一种可选的实施方式中,处理模块1103在用于确定第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值时,具体用于:
根据总种类数、第一样式缓存图像的边长和占用像素数,计算第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值。
在一种可选的实施方式中,处理模块1103在用于根据总种类数、第一样式缓存图像的边长和占用像素数,计算第一矢量数据对应的样式种类在第一样式缓存图像中的UV坐标值时,具体用于:
根据总种类数、和占用像素数,计算第一矢量数据对应的样式种类在第一样式缓存图像中的像素排布值;
基于第一样式缓存图像的边长,对像素排布值执行取余运算,并将取余运算结果和第一样式缓存图像的边长的商,确定为第一矢量数据对应的样式种类在第一样式缓存图像中的U坐标值;
对像素排布值和第一样式缓存图像的边长的商进行向下取整,并将向下取整结果和第一样式缓存图像的边长的商,确定为第一矢量数据对应的样式种类在第一样式缓存图像中的V坐标值。
在一种可选的实施方式中,存储模块1102在用于将第一样式数据中包含的样式种类存储为第一样式缓存图像时,具体用于:
依次读取第一样式数据中包含的样式种类,并且每读取到一个样式种类,进行一次计数;
将计数结果作为索引值,并建立索引值和第一样式数据中包含的样式种类的关联关系,生成样式种类映射表;
基于样式种类映射表,将各个样式种类存储为第一样式缓存图像。
在一种可选的实施方式中,切换模块1105在用于确定根据样式切换指令对应的第二样式数据更新后的第二样式缓存图像时,具体用于:
确定样式切换指令对应的第二样式数据在样式种类映射表中对应的目标索引值;
在第一样式缓存图像中,将目标索引值对应的像素更新为第二样式数据,得到更新后的第二样式缓存图像。
在一种可选的实施方式中,获取模块1101在用于获取矢量地图对应的第一矢量数据时,具体用于:
获取矢量地图对应的至少一个瓦片的第一矢量数据;
提交模块1104在用于将第二矢量数据提交渲染时,具体用于:
针对每个瓦片,确定第二矢量数据的分类信息,并按照分类信息,分别将每种分类信息对应的第二矢量数据合并提交渲染。
在一种可选的实施方式中,数据处理装置110还包括:渲染模块1106;
针对第一样式缓存图像和第二样式缓存图像中的每种样式缓存图像,提交模块1104在用于将样式缓存图像提交渲染之后,渲染模块1106用于:
基于UV坐标值,从提交的样式缓存图像中读取第二矢量数据对应的像素信息;
基于像素信息,对第二矢量数据进行渲染。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现前述各方法实施例的步骤。
在一个可选实施例中提供了一种电子设备,如图12所示,图12所示的电子设备1200包括:处理器1201和存储器1203。其中,处理器1201和存储器1203相连,如通过总线1202相连。可选地,电子设备1200还可以包括收发器1204,收发器1204可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器1204不限于一个,该电子设备1200的结构并不构成对本申请实施例的限定。
处理器1201可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1201也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线1202可包括一通路,在上述组件之间传送信息。总线1202可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线1202可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1203可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器1203用于存储执行本申请实施例的计算机程序,并由处理器1201来控制执行。处理器1201用于执行存储器1203中存储的计算机程序,以实现前述方法实施例所示的步骤。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“1”、“2”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除图示或文字描述以外的顺序实施。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (15)
1.一种数据处理方法,其特征在于,包括:
获取矢量地图对应的第一样式数据和第一矢量数据;
将所述第一样式数据中包含的样式种类存储为第一样式缓存图像;
确定所述第一矢量数据对应的样式种类在所述第一样式缓存图像中的UV坐标值,并将所述UV坐标值携带在所第一矢量数据中,得到第二矢量数据;
将所述第二矢量数据和所述第一样式缓存图像提交渲染。
2.根据权利要求1所述的数据处理方法,其特征在于,还包括:
响应于对所述矢量地图的样式切换指令,确定根据所述样式切换指令对应的第二样式数据更新后的第二样式缓存图像;
将所述第二样式缓存图像提交渲染。
3.根据权利要求1所述的数据处理方法,其特征在于,所述将所述第一样式数据中包含的样式种类存储为第一样式缓存图像,包括:
确定每种所述样式种类在所述第一样式缓存图像中的占用像素数;
按照预定排布方式,将各个所述样式种类基于对应的占用像素数依次排布到所述第一样式缓存图像中。
4.根据权利要求3所述的数据处理方法,其特征在于,所述确定每种所述样式种类在所述第一样式缓存图像中的占用像素数,包括:
获取所述矢量地图对应的数据级别数量:
将所述数据级别数量与预定数量的和,确定为每种所述样式种类在所述第一样式缓存图像中的占用像素数;
所述将各个所述样式种类基于对应的占用像素数依次排布到所述第一样式缓存图像中,包括:
针对每种所述样式种类,将所述预定数量的像素绘制为预定样式,将所述数据级别数量的所述样式种类基于所述预定数量的像素进行依次排布;
将所述占用像素数的各个所述样式种类依次排布到所述第一样式缓存图像中。
5.根据权利要求1所述的数据处理方法,其特征在于,所述将所述第一样式数据中包含的样式种类存储为第一样式缓存图像之前,还包括:
确定所述第一样式数据中包含的样式种类的总种类数,以及每种所述样式种类在所述第一样式缓存图像中的占用像素数;
基于所述总种类数和所述占用像素数,确定所需总像素数;
基于所述所需总像素数,确定所述第一样式缓存图像的尺寸。
6.根据权利要求5所述的数据处理方法,其特征在于,所述第一样式缓存图像为二维正方形图像;
所述基于所述所需总像素数,确定所述第一样式缓存图像的尺寸,包括:
将所述所需总像素数开平方后,向上取距开平方结果最近的2的幂次方值;
将所述距开平方结果最近的2的幂次方值确定为所述第一样式缓存图像的边长。
7.根据权利要求6所述的数据处理方法,其特征在于,所述确定所述第一矢量数据对应的样式种类在所述第一样式缓存图像中的UV坐标值,包括:
根据所述总种类数、和所述占用像素数,计算所述第一矢量数据对应的样式种类在所述第一样式缓存图像中的像素排布值;
基于所述第一样式缓存图像的边长,对所述像素排布值执行取余运算,并将取余运算结果和所述第一样式缓存图像的边长的商,确定为所述第一矢量数据对应的样式种类在所述第一样式缓存图像中的U坐标值;
对像素排布值和所述第一样式缓存图像的边长的商进行向下取整,并将向下取整结果和所述第一样式缓存图像的边长的商,确定为所述第一矢量数据对应的样式种类在所述第一样式缓存图像中的V坐标值。
8.根据权利要求2-7任一项所述的数据处理方法,其特征在于,将所述第一样式数据中包含的样式种类存储为第一样式缓存图像,包括:
依次读取所述第一样式数据中包含的所述样式种类,并且每读取到一个所述样式种类,进行一次计数;
将所述计数结果作为索引值,并建立所述索引值和所述第一样式数据中包含的所述样式种类的关联关系,生成样式种类映射表;
基于所述样式种类映射表,将各个所述样式种类存储为第一样式缓存图像。
9.根据权利要求8所述的数据处理方法,其特征在于,所述确定根据所述样式切换指令对应的第二样式数据更新后的第二样式缓存图像,包括:
确定所述样式切换指令对应的第二样式数据在所述样式种类映射表中对应的目标索引值;
在所述第一样式缓存图像中,将所述目标索引值对应的像素更新为所述第二样式数据,得到更新后的第二样式缓存图像。
10.根据权利要求1-7任一项所述的数据处理方法,其特征在于,获取矢量地图对应的第一矢量数据,包括:
获取矢量地图对应的至少一个瓦片的第一矢量数据;
将所述第二矢量数据提交渲染,包括:
针对每个瓦片,确定第二矢量数据的分类信息,并按照所述分类信息,分别将每种分类信息对应的所述第二矢量数据合并提交渲染。
11.根据权利要求1-7任一项所述的数据处理方法,其特征在于,针对第一样式缓存图像和所述第二样式缓存图像中的每种样式缓存图像,将样式缓存图像提交渲染之后,还包括:
基于所述UV坐标值,从提交的样式缓存图像中读取所述第二矢量数据对应的像素信息;
基于所述像素信息,对所述第二矢量数据进行渲染。
12.一种数据处理装置,其特征在于,包括:
获取模块,用于获取矢量地图对应的第一样式数据和第一矢量数据;
存储模块,用于将所述第一样式数据中包含的样式种类存储为第一样式缓存图像;
处理模块,用于确定所述第一矢量数据对应的样式种类在所述第一样式缓存图像中的UV坐标值,并将所述UV坐标值携带在所第一矢量数据中,得到第二矢量数据;
提交模块,用于将所述第二矢量数据和所述第一样式缓存图像提交渲染。
13.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-11任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-11任一项所述的方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310830960.XA CN116561081B (zh) | 2023-07-07 | 2023-07-07 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310830960.XA CN116561081B (zh) | 2023-07-07 | 2023-07-07 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116561081A true CN116561081A (zh) | 2023-08-08 |
CN116561081B CN116561081B (zh) | 2023-12-12 |
Family
ID=87486515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310830960.XA Active CN116561081B (zh) | 2023-07-07 | 2023-07-07 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116561081B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020060685A1 (en) * | 2000-04-28 | 2002-05-23 | Malcolm Handley | Method, system, and computer program product for managing terrain rendering information |
US20200026516A1 (en) * | 2018-07-20 | 2020-01-23 | Cesium GS, Inc. | Systems and Methods For Rendering Vector Data On Static And Dynamic-Surfaces Using Screen Space Decals And A Depth Texture |
CN112884875A (zh) * | 2021-03-19 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
CN112927339A (zh) * | 2021-04-01 | 2021-06-08 | 腾讯科技(深圳)有限公司 | 图形渲染方法和装置、存储介质及电子设备 |
CN113947657A (zh) * | 2021-10-18 | 2022-01-18 | 网易(杭州)网络有限公司 | 目标模型的渲染方法、装置、设备及存储介质 |
CN114419241A (zh) * | 2022-01-18 | 2022-04-29 | 北京世纪高通科技有限公司 | 一种三维模型构建方法、装置及存储介质 |
CN115546331A (zh) * | 2022-09-02 | 2022-12-30 | 京东城市(北京)数字科技有限公司 | 一种数据渲染方法、装置、电子设备及计算机可读介质 |
-
2023
- 2023-07-07 CN CN202310830960.XA patent/CN116561081B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020060685A1 (en) * | 2000-04-28 | 2002-05-23 | Malcolm Handley | Method, system, and computer program product for managing terrain rendering information |
US20200026516A1 (en) * | 2018-07-20 | 2020-01-23 | Cesium GS, Inc. | Systems and Methods For Rendering Vector Data On Static And Dynamic-Surfaces Using Screen Space Decals And A Depth Texture |
CN112884875A (zh) * | 2021-03-19 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
CN112927339A (zh) * | 2021-04-01 | 2021-06-08 | 腾讯科技(深圳)有限公司 | 图形渲染方法和装置、存储介质及电子设备 |
CN113947657A (zh) * | 2021-10-18 | 2022-01-18 | 网易(杭州)网络有限公司 | 目标模型的渲染方法、装置、设备及存储介质 |
CN114419241A (zh) * | 2022-01-18 | 2022-04-29 | 北京世纪高通科技有限公司 | 一种三维模型构建方法、装置及存储介质 |
CN115546331A (zh) * | 2022-09-02 | 2022-12-30 | 京东城市(北京)数字科技有限公司 | 一种数据渲染方法、装置、电子设备及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116561081B (zh) | 2023-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230053462A1 (en) | Image rendering method and apparatus, device, medium, and computer program product | |
CN110675728B (zh) | 热力图的生成方法、装置、设备及计算机可读存储介质 | |
CN107423445A (zh) | 一种地图数据处理方法、装置及存储介质 | |
CN102368259A (zh) | 电子地图数据存储和查询方法、装置及系统 | |
CN102117497A (zh) | 一种三维地形建模方法及系统 | |
US20130332476A1 (en) | Vector road network simplification | |
CN106934058A (zh) | 矢量数据读取方法及系统、矢量数据可视化方法及系统 | |
CN110070616A (zh) | 存储器、基于gis平台的统计数据呈现方法、装置和设备 | |
CN114239508A (zh) | 表格还原方法和装置、存储介质及电子设备 | |
CN111127603B (zh) | 动画生成方法、装置、电子设备及计算机可读存储介质 | |
CN113505185A (zh) | 一种城市信息模型三维场景渲染与展示方法 | |
US20240125613A1 (en) | Map generation method and map generation apparatus | |
CN108961406A (zh) | 地理信息可视化方法、装置及用户终端 | |
CN113495933A (zh) | 一种矢量瓦片显示方法及系统 | |
CN116561081B (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN112487129A (zh) | 一种海量遥感矢量数据的可视化方法及装置 | |
CN104317972B (zh) | 一种动态图层感应方法及系统 | |
CN110580397A (zh) | 一种用于工程项目集中展示平台的显示系统 | |
CN109241207B (zh) | 一种在地图上显示数据的方法及装置 | |
CN113419806B (zh) | 图像处理方法、装置、计算机设备和存储介质 | |
CN115810086A (zh) | 一种三维场景重建方法、装置、计算机设备及存储介质 | |
CN115482152A (zh) | 栅格地图导入设计软件方法、装置及计算机设备 | |
CN108986034A (zh) | 一种栅格数据坐标转换方法、系统、终端设备及存储介质 | |
CN113888673A (zh) | 地图编辑方法、系统、装置、计算设备和存储介质 | |
She et al. | A building label placement method for 3D visualizations based on candidate label evaluation and selection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40092599 Country of ref document: HK |