CN107590226A - 一种基于瓦片的矢量地图渲染方法 - Google Patents
一种基于瓦片的矢量地图渲染方法 Download PDFInfo
- Publication number
- CN107590226A CN107590226A CN201710791249.2A CN201710791249A CN107590226A CN 107590226 A CN107590226 A CN 107590226A CN 201710791249 A CN201710791249 A CN 201710791249A CN 107590226 A CN107590226 A CN 107590226A
- Authority
- CN
- China
- Prior art keywords
- tile
- map
- caching
- data
- timestamp
- 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.)
- Pending
Links
Abstract
本发明公开了一种基于瓦片的矢量地图渲染方法,包括如下步骤:1、根据当前视图计算所需的地图瓦片,检查缓存中是否有所需瓦片,如没有,则根据矢量数据渲染该瓦片,瓦片数据时间戳记录为所述矢量数据的时间戳,形成瓦片后放入缓存中,并将该瓦片绘制到地图上;2、如果缓存中有所需瓦片,且缓存中的瓦片数据时间戳与该瓦片对应的矢量数据的时间戳一致,则将该瓦片绘制到地图上;如果缓存中的瓦片数据时间戳与该瓦片对应的矢量数据的时间戳不一致,则根据矢量数据渲染该瓦片,瓦片数据时间戳更新为所述矢量数据的时间戳,形成瓦片后放入缓存中,并将该瓦片绘制到地图上。该方法可以实时渲染地图瓦片,动态缓存瓦片数据。
Description
技术领域
本发明属于地理信息系统领域,具体涉及一种瓦片地图的渲染方法。
背景技术
随着卫星遥感、移动互联网、无人机等一系列新技术的发展,地理信息系统(以下简称GIS)应用范围越来越广,数字地图的显示是地理信息系统最基本,也是最重要的功能,空间数据的不断膨胀,使地图信息量更加丰富的同时,也对地图的显示速度、精度和准确度提出更高的要求。
瓦片地图技术是目前常用的互联网地图技术,它通过多尺度分级切割,将大尺寸的地图分割为数量众多的小尺寸图片,构建金字塔模型。如图1所示,瓦片金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变。图1中,每一层的地图瓦片构成一个瓦片矩阵,通过瓦片的层号和行列号可以唯一确定一个瓦片。
Google地图采用的瓦片地图策略是将矢量地图提前渲染,按一定规则进行切片后进行显示。采用这种技术,客户端仅需根据当前场景向服务器请求瓦片数据后拼接显示即可,瓦片数据也便于缓存,因此大大提高了地图的显示效率。由于瓦片地图是提前渲染好的,当地图数据发生更新时,瓦片往往需要重新制作。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供了一种基于瓦片的矢量地图渲染方法,该方法可以实时渲染地图瓦片,动态缓存瓦片数据。
技术方案:本发明采用如下技术方案:一种基于瓦片的矢量地图渲染方法,包括如下步骤:
(1)根据当前视图计算所需的地图瓦片,遍历每一块所需瓦片,检查缓存中是否有对应瓦片,如果缓存中没有对应瓦片,则根据矢量数据渲染该瓦片,瓦片数据时间戳记录为所述矢量数据的时间戳,形成瓦片后放入缓存中,并将该瓦片绘制到地图上;
(2)如果缓存中有对应瓦片,且缓存中的瓦片数据时间戳与该瓦片对应的矢量数据的时间戳一致,则将该瓦片绘制到地图上;如果缓存中的瓦片数据时间戳与该瓦片对应的矢量数据的时间戳不一致,则根据矢量数据渲染该瓦片,瓦片数据时间戳更新为所述矢量数据的时间戳,形成瓦片后放入缓存中,并将该瓦片绘制到地图上。
为了提高缓存效率,本发明采用二级缓存,所述缓存包括内存缓存和本地缓存;步骤(1)中首先检查内存缓存中是否有对应瓦片,如没有,再检查本地缓存中是否有对应瓦片;新生成的瓦片放入内存缓存;
步骤(2)中如果所需瓦片存放于本地缓存,且所述瓦片数据时间戳与该瓦片对应的矢量数据的时间戳一致,则将该瓦片从本地缓存移至内存缓存;新生成的瓦片放入内存缓存。
所述本地缓存为本地数据库缓存或本地文件缓存。
为了加快地图绘制,便于并行处理,还包括建立瓦片请求队列,地图场景改变时,所述瓦片请求队列清空;如果内存缓存中没有所需地图瓦片,生成一个瓦片请求插入到瓦片请求队列的队尾;工作线程从所述瓦片请求队列的队头出队瓦片请求来检查本地缓存中是否有对应瓦片。
进一步地,为了提高多个工作线程并行处理瓦片请求队列,所述瓦片请求队列为无锁队列。
为了充分利用内存缓存,还包括如下步骤:计算内存缓存的占用量或占用率,当占用量或占用率达到占用阈值时,将内存缓存中使用可能性较小的瓦片缓存移至本地缓存,并释放对应内存。
内存缓存中瓦片的使用可能性计算步骤为:
(1)记录内存缓存中每个瓦片的最近使用时间,如果是新生成的瓦片,其最近使用时间为瓦片生成的时间;
(2)按瓦片的最近使用时间对瓦片进行排序;最近使用时间距当前时间近的瓦片使用可能性大,距当前时间远的瓦片使用可能性小。
内存缓存中瓦片的使用可能性的另一种计算步骤为:
(1)计算内存缓存中每个瓦片所表示区域的中心点与屏幕中当前视图的中心点之间的距离;
(2)按瓦片所表示区域的中心点与屏幕中当前视图的中心点之间的距离对瓦片进行排序;所述距离小的瓦片使用可能性大,所述距离大的瓦片使用可能性小。
缓存中的瓦片根据层、行、列号生成唯一标识号。
有益效果:与现有技术相比,本发明公开的基于瓦片的矢量地图渲染方法具有如下优点:1、在绘制地图过程中实时渲染地图瓦片,避免了地图原始数据发生更新导致的地图显示不准确;2、瓦片采用动态生成和管理,通过二级缓存技术提高了地图的绘制效率。
附图说明
图1是瓦片金字塔模型的示意图;
图2是本发明公开的基于瓦片的矢量地图渲染方法的流程图;
图3是实施例中瓦片请求模块的流程图;
图4是实施例中缓存管理模块的流程图;
图5是实施例中渲染工作模块的流程图。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明。
图2是本发明公开的基于瓦片的矢量地图渲染方法的流程图,本实施例中构建瓦片请求模块、缓存管理模块和渲染工作模块来实现本发明公开的方法。
瓦片请求模块用于维护一个高效、线程安全的地图待绘制瓦片队列,即瓦片请求队列;缓存管理模块用于维护缓存的高效利用;渲染工作模块包括地图绘制主线程和若干工作线程,负责从瓦片请求队列中提取瓦片绘制任务,根据瓦片范围完成绘制,并在绘制完成后,将该瓦片更新到地图上。本实施例中本地缓存为本地数据库缓存,即瓦片缓存于数据库中,可以实现快速的瓦片查找、插入和删除等操作。本地缓存也可以采用缓存为本地文件的方式来实现。
缓存中的每一个瓦片都有矢量数据与之对应,瓦片的数据结构包括:瓦片的层号和行列号、绘制瓦片的矢量数据链接、瓦片数据的时间戳。图3是瓦片请求模块的流程图;图4是缓存管理模块的流程图;图5是渲染工作模块的流程图。通过这三个模块的配合,实现了实时渲染地图瓦片,动态缓存瓦片数据,并绘制地图的功能。具体步骤如下:
(A.1)当地图场景改变时,渲染工作模块中的地图绘制主线程给瓦片请求模块发送地图范围改变事件;
(A.2)瓦片请求模块根据当前视图计算所需的地图瓦片,清空瓦片请求队列,遍历每一块所需瓦片,首先检查内存缓存中是否有对应瓦片,如果内存缓存中有对应瓦片,且内存缓存中的瓦片数据时间戳与该瓦片对应的矢量数据的时间戳一致,则由渲染工作模块的地图绘制主线程将该瓦片绘制到地图上,并更新瓦片数据的时间戳为当前时间;
如果内存缓存中没有对应瓦片,再检查当前瓦片请求队列中是否有该瓦片请求,如没有,将瓦片插入到队列的队尾;
(A.3)渲染工作模块中的每个工作线程从瓦片请求队列中出队一个瓦片请求;工作线程根据瓦片层、行、列号生成的唯一标识号,在本地数据库缓存中检索是否存在该瓦片,如存在,从本地数据库读取并删除该瓦片,放入内存缓存中,如不存在,逐图层绘制瓦片,形成瓦片缓存放入内存缓存中;
(A.4)渲染工作模块的工作线程更新内存缓存后,地图主线程将内存缓存中新增加的瓦片缓存更新到地图上,包括从本地数据库缓存中移入内存缓存中的瓦片和新绘制的瓦片,并更新瓦片数据的时间戳为当前时间,。
本实施例中的二级缓存包括内存缓存和本地数据库缓存,内存缓存效率高,存储量有限,本地缓存效率较低,空间较大。缓存管理模块通过维护一个内存缓存列表来管理内存缓存和本地缓存,具体步骤如下:
(B.1)建立内存缓存列表,将内存缓存中新增加的瓦片放入该列表;
(B.2)计算内存缓存列表中瓦片的使用可能性;
(B.3)维护一个定时器,定时检查内存占用量或占用率,当内存缓存的占用量或占用率达到占用阈值时执行步骤(B.4);
(B.4)查找使用可能性最低的瓦片,检查该瓦片是否已在本地数据库缓存,如在,将内存缓存中的瓦片删除;如不在,将该瓦片移至本地数据库缓存中,将内存缓存中的瓦片删除,由此达到释放内存的目的。
本实施例中内存占用率阈值为90%,当检测到内存占用达到90%时重复执行步骤(B.4),知道内存占用率不超过50%。
上述步骤中,内存缓存中瓦片的使用可能性可以根据时间度量来计算,步骤为:
(C.1)记录内存缓存中每个瓦片的最近使用时间,如果是新生成的瓦片,其最近使用时间为瓦片生成的时间;
(C.2)按瓦片的最近使用时间对瓦片进行排序;最近使用时间距当前时间近的瓦片使用可能性大,距当前时间远的瓦片使用可能性小。
也可以按照距离度量来计算,步骤为:
(D.1)计算内存缓存中每个瓦片所表示区域的中心点与屏幕中当前视图的中心点之间的距离;
(D.2)按瓦片所表示区域的中心点与屏幕中当前视图的中心点之间的距离对瓦片进行排序;所述距离小的瓦片使用可能性大,所述距离大的瓦片使用可能性小。
Claims (9)
1.一种基于瓦片的矢量地图渲染方法,其特征在于,包括如下步骤:
(1)根据当前视图计算所需的地图瓦片,遍历每一块所需瓦片,检查缓存中是否有对应瓦片,如果缓存中没有对应瓦片,则根据矢量数据渲染该瓦片,瓦片数据时间戳记录为所述矢量数据的时间戳,形成瓦片后放入缓存中,并将该瓦片绘制到地图上;
(2)如果缓存中有对应瓦片,且缓存中的瓦片数据时间戳与该瓦片对应的矢量数据的时间戳一致,则将该瓦片绘制到地图上;如果缓存中的瓦片数据时间戳与该瓦片对应的矢量数据的时间戳不一致,则根据矢量数据渲染该瓦片,瓦片数据时间戳更新为所述矢量数据的时间戳,形成瓦片后放入缓存中,并将该瓦片绘制到地图上。
2.根据权利要求1所述的基于瓦片的矢量地图渲染方法,其特征在于,所述缓存包括内存缓存和本地缓存;步骤(1)中首先检查内存缓存中是否有对应瓦片,如没有,再检查本地缓存中是否有对应瓦片;新生成的瓦片放入内存缓存;
步骤(2)中如果所需瓦片存放于本地缓存,且所述瓦片数据时间戳与该瓦片对应的矢量数据的时间戳一致,则将该瓦片从本地缓存移至内存缓存;新生成的瓦片放入内存缓存。
3.根据权利要求2所述的基于瓦片的矢量地图渲染方法,其特征在于,所述本地缓存为本地数据库缓存或本地文件缓存。
4.根据权利要求2所述的基于瓦片的矢量地图渲染方法,其特征在于,还包括建立瓦片请求队列,地图场景改变时,所述瓦片请求队列清空;如果内存缓存中没有所需地图瓦片,生成一个瓦片请求插入到瓦片请求队列的队尾;工作线程从所述瓦片请求队列的队头出队瓦片请求来检查本地缓存中是否有对应瓦片。
5.根据权利要求4所述的基于瓦片的矢量地图渲染方法,其特征在于,所述瓦片请求队列为无锁队列。
6.根据权利要求2所述的基于瓦片的矢量地图渲染方法,其特征在于,还包括如下步骤:计算内存缓存的占用量或占用率,当占用量或占用率达到占用阈值时,将内存缓存中使用可能性较小的瓦片缓存移至本地缓存,并释放对应内存。
7.根据权利要求6所述的基于瓦片的矢量地图渲染方法,其特征在于,内存缓存中瓦片的使用可能性计算步骤为:
(C.1)记录内存缓存中每个瓦片的最近使用时间,如果是新生成的瓦片,其最近使用时间为瓦片生成的时间;
(C.2)按瓦片的最近使用时间对瓦片进行排序;最近使用时间距当前时间近的瓦片使用可能性大,距当前时间远的瓦片使用可能性小。
8.根据权利要求6所述的基于瓦片的矢量地图渲染方法,其特征在于,内存缓存中瓦片的使用可能性计算步骤为:
(D.1)计算内存缓存中每个瓦片所表示区域的中心点与屏幕中当前视图的中心点之间的距离;
(D.2)按瓦片所表示区域的中心点与屏幕中当前视图的中心点之间的距离对瓦片进行排序;所述距离小的瓦片使用可能性大,所述距离大的瓦片使用可能性小。
9.根据权利要求1所述的基于瓦片的矢量地图渲染方法,其特征在于,缓存中的瓦片根据层、行、列号生成唯一标识号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710791249.2A CN107590226A (zh) | 2017-09-05 | 2017-09-05 | 一种基于瓦片的矢量地图渲染方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710791249.2A CN107590226A (zh) | 2017-09-05 | 2017-09-05 | 一种基于瓦片的矢量地图渲染方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107590226A true CN107590226A (zh) | 2018-01-16 |
Family
ID=61050768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710791249.2A Pending CN107590226A (zh) | 2017-09-05 | 2017-09-05 | 一种基于瓦片的矢量地图渲染方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107590226A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334581A (zh) * | 2018-01-26 | 2018-07-27 | 重庆市地理信息中心 | 面向智能终端地图渲染的空间数据在离线管理和调用方法 |
CN109388409A (zh) * | 2018-09-03 | 2019-02-26 | 中新网络信息安全股份有限公司 | 一种内网部署地图瓦片服务以及路径规划的方法 |
CN110209856A (zh) * | 2019-06-17 | 2019-09-06 | 广东电网有限责任公司清远供电局 | 一种输电运维的地图渲染方法及装置 |
CN110209756A (zh) * | 2019-06-17 | 2019-09-06 | 广东电网有限责任公司清远供电局 | 一种输电运维的地图交互方法及系统 |
CN111090657A (zh) * | 2019-10-28 | 2020-05-01 | 武大吉奥信息技术有限公司 | 一种矢量瓦片自动更新与即时服务系统 |
CN111930767A (zh) * | 2020-08-19 | 2020-11-13 | 重庆市地理信息和遥感应用中心 | 一种基于多层缓存的矢量瓦片实时切片和更新方法 |
CN112287064A (zh) * | 2020-12-25 | 2021-01-29 | 智道网联科技(北京)有限公司 | 地图引擎锚点的渲染方法及装置 |
CN112905830A (zh) * | 2021-03-31 | 2021-06-04 | 自然资源部国土卫星遥感应用中心 | 卫星遥感影像的获取方法及相关装置 |
CN115203594A (zh) * | 2022-09-16 | 2022-10-18 | 成都国星宇航科技股份有限公司 | 多时相遥感数据显示方法、装置、设备和介质 |
CN115952244A (zh) * | 2022-08-08 | 2023-04-11 | 中国城市规划设计研究院 | 绘图软件中矢量切片服务的在线加载方法、装置及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750180A (zh) * | 2012-05-28 | 2012-10-24 | 中国科学院遥感应用研究所 | 一种二维地图瓦片的多线程显示机制 |
CN104156482A (zh) * | 2014-08-26 | 2014-11-19 | 天津市普迅电力信息技术有限公司 | 一种地图瓦片数据的发布方法 |
CN105022732A (zh) * | 2014-04-16 | 2015-11-04 | 北京极海纵横信息技术有限公司 | 一种在线配置地图并生成瓦片缓存的方法和系统 |
CN105046734A (zh) * | 2015-08-31 | 2015-11-11 | 中国科学院遥感与数字地球研究所 | 一种栅格瓦片金字塔动态生成和更新方法、系统 |
-
2017
- 2017-09-05 CN CN201710791249.2A patent/CN107590226A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750180A (zh) * | 2012-05-28 | 2012-10-24 | 中国科学院遥感应用研究所 | 一种二维地图瓦片的多线程显示机制 |
CN105022732A (zh) * | 2014-04-16 | 2015-11-04 | 北京极海纵横信息技术有限公司 | 一种在线配置地图并生成瓦片缓存的方法和系统 |
CN104156482A (zh) * | 2014-08-26 | 2014-11-19 | 天津市普迅电力信息技术有限公司 | 一种地图瓦片数据的发布方法 |
CN105046734A (zh) * | 2015-08-31 | 2015-11-11 | 中国科学院遥感与数字地球研究所 | 一种栅格瓦片金字塔动态生成和更新方法、系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334581B (zh) * | 2018-01-26 | 2019-02-12 | 重庆市地理信息中心 | 面向智能终端地图渲染的空间数据在离线管理和调用方法 |
CN108334581A (zh) * | 2018-01-26 | 2018-07-27 | 重庆市地理信息中心 | 面向智能终端地图渲染的空间数据在离线管理和调用方法 |
CN109388409A (zh) * | 2018-09-03 | 2019-02-26 | 中新网络信息安全股份有限公司 | 一种内网部署地图瓦片服务以及路径规划的方法 |
CN110209856A (zh) * | 2019-06-17 | 2019-09-06 | 广东电网有限责任公司清远供电局 | 一种输电运维的地图渲染方法及装置 |
CN110209756A (zh) * | 2019-06-17 | 2019-09-06 | 广东电网有限责任公司清远供电局 | 一种输电运维的地图交互方法及系统 |
CN111090657B (zh) * | 2019-10-28 | 2024-04-12 | 吉奥时空信息技术股份有限公司 | 一种矢量瓦片自动更新与即时服务系统 |
CN111090657A (zh) * | 2019-10-28 | 2020-05-01 | 武大吉奥信息技术有限公司 | 一种矢量瓦片自动更新与即时服务系统 |
CN111930767A (zh) * | 2020-08-19 | 2020-11-13 | 重庆市地理信息和遥感应用中心 | 一种基于多层缓存的矢量瓦片实时切片和更新方法 |
CN112287064A (zh) * | 2020-12-25 | 2021-01-29 | 智道网联科技(北京)有限公司 | 地图引擎锚点的渲染方法及装置 |
CN112905830A (zh) * | 2021-03-31 | 2021-06-04 | 自然资源部国土卫星遥感应用中心 | 卫星遥感影像的获取方法及相关装置 |
CN115952244A (zh) * | 2022-08-08 | 2023-04-11 | 中国城市规划设计研究院 | 绘图软件中矢量切片服务的在线加载方法、装置及介质 |
CN115952244B (zh) * | 2022-08-08 | 2023-12-01 | 中国城市规划设计研究院 | 绘图软件中矢量切片服务的在线加载方法、装置及介质 |
CN115203594A (zh) * | 2022-09-16 | 2022-10-18 | 成都国星宇航科技股份有限公司 | 多时相遥感数据显示方法、装置、设备和介质 |
CN115203594B (zh) * | 2022-09-16 | 2022-11-29 | 成都国星宇航科技股份有限公司 | 多时相遥感数据显示方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590226A (zh) | 一种基于瓦片的矢量地图渲染方法 | |
CN103412863B (zh) | 面向嵌入式设备的大容量矢量地图快速可视化实现方法 | |
CN110442444A (zh) | 一种面向海量遥感影像的并行数据访问方法与系统 | |
CN105760529B (zh) | 一种移动端矢量数据的空间索引和缓存构建方法 | |
CN106600523B (zh) | 一种三维模型数据的瓦片式快速加载方法 | |
CN101692229B (zh) | 基于数据内容的三维空间数据自适应多级缓存系统 | |
CN103995861B (zh) | 一种基于空间关联的分布式数据装置、方法及系统 | |
CN106407454A (zh) | 一种基于五层十五级的遥感影像瓦片式加载方法 | |
CN101459901B (zh) | 基于多级切片方式的矢量地图数据传输方法 | |
CN105261066B (zh) | 一种三维地理信息系统实时绘制多线程分配与控制方法 | |
CN101261743B (zh) | 一种基于规则网格的大规模地形漫游模拟方法 | |
CN102419752B (zh) | 一种工业数据库报文存储方法 | |
CN105046734A (zh) | 一种栅格瓦片金字塔动态生成和更新方法、系统 | |
CN101702245B (zh) | 一种可扩展通用三维地景仿真系统 | |
CN105956165B (zh) | 一种三维模型数据的瓦片式大文件存储组织方法 | |
CN102289466A (zh) | 一种基于区域覆盖的k近邻查询方法 | |
CN103390061B (zh) | 以用户为中心且基于多级缓存的海洋时空数据访问方法 | |
CN104376050B (zh) | 一种在三维场景动态调度并显示海量矢量数据的方法 | |
CN112380302B (zh) | 基于轨迹数据的热力图生成方法、装置、电子设备以及存储介质 | |
CN114387375B (zh) | 一种海量点云数据多视图渲染方法 | |
CN107533511A (zh) | 使用假想高速缓存的实时高速缓存行为预报 | |
CN102117494A (zh) | 一种三维建模中的数据分层分块方法及装置 | |
CN103294912B (zh) | 一种面向移动设备基于预测的缓存优化方法 | |
CN102012932B (zh) | 可量测街景影像存储与检索的方法及装置 | |
CN106156205A (zh) | 一种超大规模数据的三维可视化方法 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: No.1 Lingshan South Road, Qixia District, Nanjing City, Jiangsu Province 210046 Applicant after: THE 28TH RESEARCH INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp. Address before: 210003 No. 1 East Garden Street, Qinhuai District, Jiangsu, Nanjing Applicant before: THE 28TH RESEARCH INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180116 |