CN102663119B - 一种渲染海量矢量数据的方法 - Google Patents
一种渲染海量矢量数据的方法 Download PDFInfo
- Publication number
- CN102663119B CN102663119B CN201210116978.5A CN201210116978A CN102663119B CN 102663119 B CN102663119 B CN 102663119B CN 201210116978 A CN201210116978 A CN 201210116978A CN 102663119 B CN102663119 B CN 102663119B
- Authority
- CN
- China
- Prior art keywords
- data
- vector
- tile
- information
- vector data
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种渲染海量矢量数据的方法,包括步骤:根据矢量数据的密集程度,对矢量数据按照第一数据结构的形式进行切割,同时生成第一数据结构形式的用于保存矢量数据的范围信息的数据,将所生成的数据保存为索引文件;将切割得到的矢量数据,按照第二数据结构的形式组织数据结构,生成瓦片数据;生成记录渲染样式的属性文件;从所述索引文件中搜索出待渲染的区域的范围内的瓦片数据,生成调度信息;根据所述调度信息和所述属性文件,对待加载的瓦片数据进行加载,并渲染,对待卸载的瓦片数据进行卸载。采用本发明的方法来渲染海量矢量数据,能够达到准确、快捷、高效和视觉效果佳地显示地图。
Description
技术领域
本发明涉及一种渲染海量矢量数据的方法。
背景技术
矢量数据渲染是指矢量数据的三维空间显示,使得矢量数据能在三维空间保留其特性,即空间信息和属性信息,并适用于大范围的漫游、缩放和保持数据的真实性。
目前矢量数据渲染的方法有以下几种:
一、整体矢量数据渲染
该方法是将矢量数据整体读入,不做预处理,这样虽然也能够得到真实的渲染结果,但是当矢量数据很大时,会造成严重的效率问题。并且不适合网络传输,难以开发依附网络的渲染系统。
二、矢量数据栅格化渲染
该方法是指先对矢量数据做预处理,预处理过程中配置各种矢量信息,譬如颜色,标注等。然后将其根据地理范围栅格化,生成一幅或者多幅图片,在渲染的时候将这些图片当作纹理来贴到渲染体表面,这样来达到矢量数据渲染的效果。这种方法的缺点主要有:1.放大缩小时会造成严重的失真;2.生成的图片数据过大,不利于网络传输;3.无法再次更改渲染的样式(比如颜色),若要修改只能重新对矢量数据做预处理;4.无法得到矢量的空间和属性信息。
三、矢量数据金字塔渲染
该方法是先对矢量数据做预处理,建立矢量数据的金字塔结构,然后根据范围和视点位置等搜索该金子塔,取得数据然后渲染。该方法的主要缺点有:1.金字塔结构中对矢量数据的抽稀方法没有一个标准;2.生成的渲染数据可能很大,不利于网络传输;3.调度过程较为复杂,会严重影响渲染效率。
发明内容
本发明的目的是提供一种能够快速搜索到待渲染区域的范围内的矢量数据,使得用户关心区域的矢量数据能够快速显示,达到一种空间和时间上的平衡的渲染海量矢量数据的方法。
本发明提供了一种渲染海量矢量数据的方法,包括步骤:根据矢量数据的密集程度,对矢量数据按照第一数据结构的形式进行切割,同时生成第一数据结构形式的用于保存矢量数据的范围信息的数据,将所生成的数据保存为索引文件;将切割得到的矢量数据,按照第二数据结构的形式组织数据结构,生成瓦片数据;生成记录渲染样式的属性文件;从所述索引文件中搜索出待渲染的区域的范围内的瓦片数据,生成调度信息;根据所述调度信息和所述属性文件,对待加载的瓦片数据进行加载,并渲染,对待卸载的瓦片数据进行卸载。
本发明的渲染海量矢量数据的方法,所述第一数据结构为四叉树,其建立依据是所述矢量数据的地理范围和所设置的最大包含矢量数;所述四叉树的叶子节点记录范围值,所述矢量数据根据所述叶子节点的范围值进行裁剪,其中,所述范围值是经纬度值。
本发明的渲染海量矢量数据的方法,所述瓦片数据包括所述矢量数据的空间信息和属性信息。
本发明的渲染海量矢量数据的方法,所述瓦片数据是线类型,所述第二数据结构记录有线的起点、终点和标注信息。
本发明的渲染海量矢量数据的方法,序列化所述四叉树形式的数据,并将序列化的结果保存为索引文件;将所述瓦片数据序列化。
本发明的渲染海量矢量数据的方法,将所述索引文件所记录的数据进行反序列化,搜索出待渲染的区域的范围内的瓦片数据,生成调度信息;对待加载的瓦片数据进行反序列化,并渲染。
本发明的渲染海量矢量数据的方法,所述密集程度是最后切割出来的瓦片数据所含有的最大矢量数,所述最大矢量数是预置的。
本发明的渲染海量矢量数据的方法,所述属性文件与矢量图层的属性表示方式一致,所述属性文件记录的信息包括矢量类型和颜色。
本发明的渲染海量矢量数据的方法,根据视口范围确定待渲染区域,从所述索引文件中搜索出待渲染的区域的范围内的瓦片数据,生成调度信息。
本发明的渲染海量矢量数据的方法,所述调度信息包括瓦片数据的文件路径信息、属性信息和调度内容信息。
本发明的技术效果在于,将矢量数据进行预处理,生成瓦片数据和索引文件,根据索引文件能够快速搜索到范围内的瓦片数据,对渲染端进行调度,控制数据量,做到用户关心区域的矢量能快速显示,并且卸载掉不在区域内的数据,达到一种空间和时间上的平衡,快速渲染出矢量数据。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明的一个具体实施例的流程图;
图2为本发明的一个具体实施例中所使用的四叉树生成算法的流程图;
图3为本发明的一个具体实施例中将矢量数据生成瓦片数据的类图;
图4为本发明的一个具体实施例中数据调度功能类图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
以下将结合说明书附图,详细描述本发明。
一种渲染海量矢量数据的方法,包括步骤:根据矢量数据的密集程度,对矢量数据按照第一数据结构的形式进行切割,同时生成第一数据结构形式的用于保存矢量数据的范围信息的数据,将所生成的数据保存为索引文件;将切割得到的矢量数据,按照第二数据结构的形式组织数据结构,生成瓦片数据;生成记录渲染样式的属性文件;从所述索引文件中搜索出待渲染的区域的范围内的瓦片数据,生成调度信息;根据所述调度信息和所述属性文件,对待加载的瓦片数据进行加载,并渲染,对待卸载的瓦片数据进行卸载。
作为本发明的一个具体实施例,如图1所示,具体包括以下步骤:
将矢量数据根据密集程度按照四叉树数据结构进行切割,并序列化此四叉树数据结构,保存为索引文件;
将切割得到的矢量数据重新组织数据结构,序列化所生成的瓦片数据,该瓦片数据将作为渲染矢量的原始数据;
将生成的瓦片数据和所述索引文件放到指定文件夹,并配置一份属性文件,该属性文件记录矢量类型,颜色等基本信息;
根据视口范围,及其他可能的判断信息,利用所述索引文件,快速搜索出范围内的瓦片数据,生成调度信息;
解析所生成的调度信息,对要加载的瓦片数据进行反序列化,组织渲染数据,开始渲染;对要卸载的瓦片数据进行渲染的卸载操作。
对于所述密集程度是指最后切割出来的瓦片数据所含有的最大矢量数,这个阈值由用户指定,目的在于控制瓦片数据的大小。所述按照四叉树数据结构进行切割,指的是只根据其叶子节点的范围进行切割。所述的索引文件是指创建的四叉树,该四叉树中保存了矢量的范围信息。矢量数据的读取利用开源项目GDAL(Geospatial Data Abstraction Library,空间数据转换库)包含的OGR库的功能可以方便的读取,并且支持现有的多种流行的矢量数据格式。
四叉树的创建采用堆栈的方式实现,实现流程如图2所示:
步骤1,将树顶点压入栈;
步骤2,判断栈是否为空,如果是,则结束流程,否则,进入步骤3;
步骤3,取出栈顶点,进入步骤4;
步骤4,判断节点矢量数是否小于设置的最大矢量数,如果是,进入步骤2,否则,进入步骤5;
步骤5,根据节点范围分割四块,进入步骤6;
步骤6,创建分割后的四个节点,压入栈中,进入步骤7;
步骤7,分别对这四个节点加入切割的矢量ID,进入步骤2。
对于矢量数据切割,及生成瓦片数据的功能,涉及类的类图如图3,各个类功能和关系简介如下:
矢量瓦片数据生成模块外部调用类是ClipShaps,该类负责将导入的矢量数据切割成给定设置的瓦片数据。
FourTree为一个模板类,定义了四叉树数据结构,它包含多个FouTreeNode,即四叉树节点数据结构。
ClipShapes拥有树成员FourTree<ClipShapeNode>,该树成员定义了要切割的瓦片的数据结构。
VectorBase作为原始瓦片数据的基类,包含了原始瓦片数据的数据结构,它的子类分别是VectorLines,VectorPoints,VectorPolygons。
VectorSerialize为序列化类,ClipShapes类在将切割好的矢量数据生成瓦片数据是调用VectorSerialize中的序列化方法来实现。
结合以上各类,实现了海量矢量数据按四叉树数据结构切割成瓦片数据的功能。
对于所述属性文件是一份xml文件,该文件可以手工创建也可以通过开发的程序界面来完成。
下面是一个属性文件内容片段示例:
其中,VectorStyle:矢量数据类型,点,线,面,文本标注等;Name:矢量图层名;BoundaryColor:多边形边界颜色;FillColor:多边形填充颜色;IsOutLine:是否显示多边形边界;IsOnlyOutLine:是否只显示多边形边界;IsGround:是否贴地显示;Altitude:离地高度,只在IsGround为0时启用。
对于读取四叉树索引文件、根据范围搜索瓦片和组织调度信息的一种具体实现,具体涉及到的类关系如图4。各个类的说明和关系如下:
VectorStyle矢量样式信息,每个图层VectorLayer对应一个VectorStyle。其中多边形样式PolygonStyle,点样式PointStyle,线样式LineStyle,文本样式TextStyle,IconStyle样式继承于VectorStyle。
VectorLayer中Updata函数通过视口范围搜索合适的瓦片,搜索算法调用FindShapes模块中的方法,搜索到后创建VectorTile发到搜索列表中。
VectorLayer将搜索出的瓦片送给VectorLayerExecute对象,该类负责筛选,向渲染端发送卸载的瓦片和加载的瓦片。
根据生成的调度信息,对要加载的瓦片进行反序列化,组织渲染数据,开始渲染,以及对要卸载的瓦片进行渲染的卸载操作,所主要实现的功能有:加载,卸载,更新瓦片;解析接收来的瓦片信息,得到矢量资源信息;将瓦片资源生成渲染数据资源;矢量原始数据的管理;渲染矢量渲染数据;管理渲染资源;各种矢量数据的渲染功能;设置材质,贴地效果,显示文本等。各个类的说明及关系如下:
VectorRenderEngineImpl负责从调度端得到瓦片的调度信息,并负责创建各种管理单件组,其中包括VectorRenderEngineIm,VectorRenderGroup,VectorRenderLayerManager,VectorRenderManager。
VectorRenderGroup负责后台加载线程,和渲染线程,将由VectorTileParse解析后的批矢量资源传到后台加载线程中生成渲染数据。
在NeoVectorRescoure中加载数据时会调用VectorRenderDataBuild中的方法来创建渲染数据。
VectorRenderDataBuild创建渲染数据的过程中,会将原始的矢量数据放到VectorRenderLayerManager中管理。
VectorRenderGroup中的渲染线程,在有准备好的渲染数据情况下,会调用VectorRenderManager来渲染。
由于采用了上述技术方案,使得本发明具备如下技术效果:
(1)本发明能够支持海量矢量数据的渲染;
(2)本发明能够支持不同矢量数据类型的渲染;
(3)本发明所生成的瓦片数据很小,可以方便的在网络上进行传输,可以将数据发布在服务器上,多个客户端实现快速矢量数据渲染;
(4)本发明支持修改矢量数据的渲染样式,比如颜色,线宽等;
(5)本发明保留矢量的空间和基本的属性信息,最大程度上保留了矢量的特性。在渲染时不仅仅是简单显示出来,每个显示的矢量元素都有基本的属性信息,方便查询;
(6)本发明得到的矢量渲染结果,视觉效果真实,效率高,精度高,可以有效的与其他图层叠加,方便其他分析。
总之,通过本发明方法来渲染海量矢量,能够达到准确,快捷,高效,视觉效果佳的特点。
Claims (8)
1.一种渲染海量矢量数据的方法,其特征在于,包括步骤:
根据矢量数据的密集程度,对矢量数据按照第一数据结构的形式进行切割,同时生成第一数据结构形式的用于保存矢量数据的范围信息的数据,将所生成的数据保存为索引文件;
将切割得到的矢量数据,按照第二数据结构的形式组织数据结构,生成瓦片数据;
生成记录渲染样式的属性文件;
从所述索引文件中搜索出待渲染的区域的范围内的瓦片数据,生成调度信息;
根据所述调度信息和所述属性文件,对待加载的瓦片数据进行加载,并渲染,对待卸载的瓦片数据进行卸载,
其中,所述第一数据结构为四叉树,其建立依据是所述矢量数据的地理范围和所设置的最大包含矢量数;所述四叉树的叶子节点记录范围值,所述矢量数据根据所述叶子节点的范围值进行裁剪,其中,所述范围值是经纬度值;
所述瓦片数据是线类型,所述第二数据结构记录有线的起点、终点和标注信息。
2.如权利要求1所述的方法,其特征在于,所述瓦片数据包括所述矢量数据的空间信息和属性信息。
3.如权利要求1所述的方法,其特征在于,序列化所述四叉树形式的数据,并将序列化的结果保存为索引文件;将所述瓦片数据序列化。
4.如权利要求3所述的方法,其特征在于,将所述索引文件所记录的数据进行反序列化,搜索出待渲染的区域的范围内的瓦片数据,生成调度信息;对待加载的瓦片数据进行反序列化,并渲染。
5.如权利要求1所述的方法,其特征在于,所述密集程度是最后切割出来的瓦片数据所含有的最大矢量数,所述最大矢量数是预置的。
6.如权利要求1所述的方法,其特征在于,所述属性文件与矢量图层的属性表示方式一致,所述属性文件记录的信息包括矢量类型和颜色。
7.如权利要求1所述的方法,其特征在于,根据视口范围确定待渲染区域,从所述索引文件中搜索出待渲染的区域的范围内的瓦片数据,生成调度信息。
8.如权利要求7所述的方法,其特征在于,所述调度信息包括瓦片数据的文件路径信息、属性信息和调度内容信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210116978.5A CN102663119B (zh) | 2012-04-19 | 2012-04-19 | 一种渲染海量矢量数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210116978.5A CN102663119B (zh) | 2012-04-19 | 2012-04-19 | 一种渲染海量矢量数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102663119A CN102663119A (zh) | 2012-09-12 |
CN102663119B true CN102663119B (zh) | 2014-06-11 |
Family
ID=46772610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210116978.5A Active CN102663119B (zh) | 2012-04-19 | 2012-04-19 | 一种渲染海量矢量数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102663119B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402928A (zh) * | 2016-05-20 | 2017-11-28 | 上海画擎信息科技有限公司 | 一种文档渲染方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902633B (zh) * | 2012-12-29 | 2017-12-08 | 北京图盟科技有限公司 | 一种生成poi的热区数据的方法及其装置、系统 |
CN103336772B (zh) * | 2013-04-25 | 2017-04-12 | 中国科学院遥感与数字地球研究所 | 一种单景影像瓦片数据组织方法 |
CN104240273B (zh) * | 2014-09-18 | 2017-12-12 | 百度在线网络技术(北京)有限公司 | 栅格图片的处理方法及装置 |
CN104616354B (zh) * | 2015-01-23 | 2018-08-03 | 克拉玛依红有软件有限责任公司 | 一种三维gis快速加载空间数据的方法 |
CN106599025B (zh) * | 2016-10-25 | 2022-03-04 | 中国电力科学研究院 | 一种基于数据交换格式的矢量数据切片方法及系统 |
CN108572951B (zh) * | 2017-03-08 | 2021-08-17 | 星际空间(天津)科技发展有限公司 | 一种基于地理信息的制图数据三维显示系统 |
CN109683978B (zh) * | 2017-10-17 | 2022-06-14 | 阿里巴巴集团控股有限公司 | 一种流式布局界面渲染的方法、装置以及电子设备 |
CN108280194B (zh) * | 2018-01-26 | 2019-05-21 | 重庆市地理信息中心 | 一种面向复杂空间数据的搜索与展示方法 |
CN109493410B (zh) * | 2018-09-25 | 2023-05-16 | 叠境数字科技(上海)有限公司 | 一种千兆级像素图像的实时渲染方法 |
CN109872402B (zh) * | 2019-01-24 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 3d模型处理方法、装置、计算机设备和存储介质 |
CN112419498B (zh) * | 2020-11-14 | 2023-09-26 | 中国科学院电子学研究所苏州研究院 | 一种海量倾斜摄影数据的调度渲染方法 |
CN112965826A (zh) * | 2021-04-07 | 2021-06-15 | 中国科学院空天信息创新研究院 | 大尺寸卫星遥感图像显示调度方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763422A (zh) * | 2010-01-12 | 2010-06-30 | 北京国信慧通科技有限责任公司 | 一种矢量数据的存储及空间索引方法 |
CN101887595A (zh) * | 2009-05-14 | 2010-11-17 | 武汉如临其境科技创意有限公司 | 基于四叉树索引的三维数字地球空间数据组织渲染方法 |
CN101923542A (zh) * | 2009-06-12 | 2010-12-22 | 如临其境创意(上海)有限公司 | 一种用于网络多维空间数据表达的MDDRQ-Tree索引结构 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734412B2 (en) * | 2006-11-02 | 2010-06-08 | Yahoo! Inc. | Method of client side map rendering with tiled vector data |
US8576225B2 (en) * | 2010-06-30 | 2013-11-05 | Dreamworks Animation Llc | Seamless fracture in a production pipeline |
-
2012
- 2012-04-19 CN CN201210116978.5A patent/CN102663119B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887595A (zh) * | 2009-05-14 | 2010-11-17 | 武汉如临其境科技创意有限公司 | 基于四叉树索引的三维数字地球空间数据组织渲染方法 |
CN101923542A (zh) * | 2009-06-12 | 2010-12-22 | 如临其境创意(上海)有限公司 | 一种用于网络多维空间数据表达的MDDRQ-Tree索引结构 |
CN101763422A (zh) * | 2010-01-12 | 2010-06-30 | 北京国信慧通科技有限责任公司 | 一种矢量数据的存储及空间索引方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402928A (zh) * | 2016-05-20 | 2017-11-28 | 上海画擎信息科技有限公司 | 一种文档渲染方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102663119A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102663119B (zh) | 一种渲染海量矢量数据的方法 | |
CN106407408B (zh) | 一种海量点云数据的空间索引构建方法及装置 | |
US8375302B2 (en) | Example based video editing | |
CN111899155B (zh) | 视频处理方法、装置、计算机设备及存储介质 | |
CN106796734A (zh) | 针对数据可视化的性能优化 | |
KR101414195B1 (ko) | 복수의 아이템들을 공간 내에 자동으로 배치하는 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 | |
US10880595B2 (en) | Method and apparatus for adjusting virtual reality scene, and storage medium | |
CN104917666A (zh) | 一种制作个性化动态表情的方法和装置 | |
CN105096363A (zh) | 一种编辑图片的方法及图片编辑装置 | |
CN102930523A (zh) | 图片处理系统和图片拼接实现方法 | |
US8669998B1 (en) | Selection of colors | |
CN107180443A (zh) | 一种手绘动画生成方法及其装置 | |
CN103440304A (zh) | 一种图片存储方法及存储装置 | |
CN104883514B (zh) | 一种视频处理方法及装置 | |
CN105843618A (zh) | 一种自定义编辑主题的桌面系统 | |
CN105991696A (zh) | 对非点读资源实现分享与互动的通信方法及系统 | |
CN108153572A (zh) | Gis显示方法、装置和系统 | |
CN108399038A (zh) | 一种图片合成方法及移动终端 | |
CN106845766A (zh) | 信息采集方法 | |
CN106998489B (zh) | 一种焦点越界搜索方法及装置 | |
CN104391947A (zh) | 海量gis数据实时处理方法及系统 | |
CN101814064A (zh) | 报表模板的创建方法、报表生成方法及报表系统 | |
CN107544963A (zh) | 多媒体文件存储方法及装置 | |
CN114491113B (zh) | 根据层级动态调整场景效果的方法、装置、介质和设备 | |
CN105550301B (zh) | 一种高清图片切割及展示方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right |
Effective date of registration: 20211115 Granted publication date: 20140611 |
|
PP01 | Preservation of patent right |