高密度数据场景下的矢量瓦片压缩和展现方法及存储介质技术

技术编号:36078166 阅读:17 留言:0更新日期:2022-12-24 10:50
本发明专利技术公开了一种高密度数据场景下的矢量瓦片压缩和展现方法及存储介质,包括计算瓦片左上角和右下角的地理坐标和瓦片坐标、将瓦片范围内的要素由地理坐标转为瓦片坐标、重叠要素缩编及瓦片生成、瓦片生成及前端处理等步骤,该方法针对高密度数据重叠率极高的特点,对重叠部分进行缩编,从而大幅减少了瓦片体积,降低了网络传输、前端解析等步骤的资源消耗,并且被覆盖部分在视觉上本身不可见,故压缩后的瓦片不会影响用户的浏览和交互体验。缩后的瓦片不会影响用户的浏览和交互体验。缩后的瓦片不会影响用户的浏览和交互体验。

【技术实现步骤摘要】
高密度数据场景下的矢量瓦片压缩和展现方法及存储介质


[0001]本专利技术涉及一种高密度数据场景下的矢量瓦片压缩和展现方法及存储介质,尤其是一种通过缩减重叠空间数据来减少瓦片体积并在前端重新展现的方法。

技术介绍

[0002]在GIS领域,通常把空间数据建模为空间要素对象(要素包含编号、形状、属性),并采用地图瓦片的方式实现要素的展现,从空间要素的承载机制上看,地图瓦片可分为栅格瓦片和矢量瓦片。栅格瓦片使用png、jpg等栅格图片来承载空间要素,而矢量瓦片则按规范(https://github.com/mapbox/vector

tile

spec)组织和承载空间要素并在客户端实时解析数据完成绘制,因此相比于栅格瓦片,矢量瓦片具有生成效率高、允许前端动态修改样式、可交互性强等优势。
[0003]然而,在数据密度很高的数据场景(例如人员分布图、配电设备分布图等)下,大量的空间要素会叠加在一个瓦片范围内,导致矢量瓦片规范组织后的瓦片体积非常庞大,严重影响了网络传输、前端解析渲染等步骤的性能。
[0004]观察高密度场景下的矢量瓦片,不难发现其中大部分空间要素是重叠在一起的,而地图的展现机制使得叠在下层的空间数据无法被人眼查看,即叠在下层的数据变成了无用数据,因此,减少和压缩重叠数据的体积占用,是提高高密度数据场景下矢量瓦片性能的一种可行方法。

技术实现思路

[0005]本文针对矢量瓦片在高密度数据场景下体积庞大的问题,提供一种通过缩减重叠空间数据来减少瓦片体积,并在前端重新展现的方法。
[0006]本专利技术的技术方案为:
[0007]一种高密度数据场景下的矢量瓦片压缩和展现方法,包括以下步骤:
[0008]步骤(1),计算瓦片左上角和右下角的地理坐标和瓦片坐标
[0009]根据瓦片的像素精度要求,得到瓦片左上角和右下角的瓦片坐标,根据谷歌瓦片层级标准和瓦片z、x、y的值,计算瓦片左上角和右下角的地理坐标。
[0010]步骤(2),将瓦片范围内的要素由地理坐标转为瓦片坐标
[0011]获取瓦片地理坐标范围内包含的空间要素,遍历各要素的每个坐标,利用瓦片左上角和右下角进行插值,将每个坐标转为瓦片坐标。
[0012]步骤(3),重叠要素缩编及瓦片生成
[0013]遍历各要素,计算出重叠部分,将重叠部分做成新要素,新要素的形状为重叠部分形状,新要素属性为所有被重叠要素的编号数组pids,并将新要素存入共有要素集合P;遍历各要素,若要素与集合P中的要素形状没有重叠,则将要素加入到独立要素Q中,若有重叠,则裁剪掉此要素重叠部分的形状,若裁剪后形状非空,则将此要素存入叠加要素集合R。
[0014]步骤(4),瓦片生成
[0015]取出步骤(3)中的集合P、Q、R中的要素,将要素属于哪个集合标记到要素的属性中,按矢量瓦片规范生成矢量瓦片,返回给前端。
[0016]步骤(5),前端处理
[0017]前端获取到矢量瓦片后,进行要素渲染(即绘制成图像展现)和要素用户交互(即鼠标点击、划过要素等操作):
[0018]进行渲染时,若要素属于集合Q或集合R,直接按标准矢量瓦片渲染逻辑执行渲染即可;若要素属于集合P,则取出要素属性pids中的首个编号pid,取出集合R中编号等于pid的要素r,按照要素r的属性执行标准矢量瓦片的渲染逻辑。
[0019]进行用户交互时,若交互选中要素f属于集合Q,直接用f执行交互逻辑;若交互选中要素f属于集合R,则从集合P中取出属性pids中包含f的编号的要素pfs,将pfs的形状与f的形状合并,得到完整的形状,随后用f执行交互逻辑;若交互选中要素f属于集合P,即实际上选中了多个要素,则取出f的属性pids给用户进一步选中具体需要与哪个要素,再执行要素属于集合R时的逻辑。
[0020]进一步地,所述步骤(1)中的瓦片坐标计算,左上角瓦片坐标始终为[0,0],右下角坐标根据像素精度要求变化,若像素精度要求为pix,则右下角瓦片坐标为[pix,pix]。
[0021]进一步地,所述步骤(2)中的插值方式为线性插值,旨在坐标转换不失真的前提下尽量减少坐标转换计算量,若瓦片左上角地理坐标为[lng1,lat1]、瓦片坐标为[0,0],瓦片右下角地理坐标为[lng2,lat2]、瓦片坐标为[pix,pix],待转换地理坐标为[lng,lat],转换后的像素坐标为[x,y],则转换公式为:
[0022][0023][0024]进一步地,所述步骤(3)中的被重叠要素的编号数组pids可以按用户指的定要素属性作为权重进行排序,从而在步骤(5)中进行渲染时,取出的首个编号pid总是用户最关心的。
[0025]本专利技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序能够被处理器执行以实现本专利技术的方法的步骤。
[0026]与现有技术相比,本专利技术具有以下有益效果:
[0027]本专利技术所述的高密度数据场景下矢量瓦片体积缩减方法,针对高密度数据重叠率极高的特点,对重叠部分进行缩编,从而大幅减少了瓦片体积,降低了网络传输、前端解析等步骤的资源消耗,并且被覆盖部分在视觉上本身不可见,故压缩后的瓦片不会影响用户的浏览和交互体验。
附图说明
[0028]图1:本专利技术的流程示意图。
[0029]图2:重叠要素缩编示意图。
具体实施方式
[0030]下面结合实施例对本专利技术的技术方案作进一步详细说明,但本专利技术并不局限于以下技术方案。
[0031]实施例1:本专利技术的方法用于支撑配电设备分布图的展示和交互
[0032]电网配电设备的数据量极大(一般每个省份数据量在千万级至亿级),且往往在人口约密集的地方设备越多,表现出明显的高密度分布特征,若直接以现有的矢量瓦片生成方式在全省级别进行地图展现和交互,则每个瓦片体积达到数十MB甚至数百MB,导致地图卡顿甚至浏览器崩溃。使用本专利技术所述方法缩减后,瓦片体积降到2MB以内,地图浏览及交互可以较为流畅地进行。
[0033]本方法按如下步骤,实现了瓦片的压缩和展现:
[0034]步骤(1)计算瓦片左上角和右下角的地理坐标和瓦片坐标
[0035]根据瓦片的像素精度要求,得到瓦片左上角和右下角的瓦片坐标,根据谷歌瓦片层级标准和瓦片z、x、y的值,计算瓦片左上角和右下角的地理坐标。本实施例中,瓦片像素精度值为矢量瓦片标准推荐地4096,故瓦片左上角、右下角的瓦片坐标分别为[0,0]、[4096,4096]。gistcat框架(https://github.com/codingmiao/giscat)对瓦片地理坐标的计算已有较成熟的组件支持,因此本实施例中基于此框架完成瓦片地理坐标计算工作。
[0036]步骤(2)将瓦片范围内的要素由地理坐标转为瓦片坐标
[0037]将瓦片左上角和右下角的地理坐标构造为sql语句,向存有电网数据的pos本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高密度数据场景下的矢量瓦片压缩和展现方法,其特征在于,包括以下步骤:步骤(1),计算瓦片左上角和右下角的地理坐标和瓦片坐标;步骤(2),将瓦片范围内的要素由地理坐标转为瓦片坐标;步骤(3),重叠要素缩编及瓦片生成,包括:(1)遍历各要素,计算出重叠部分,将重叠部分做成新要素,新要素的形状为重叠部分形状,新要素属性为所有被重叠要素的编号数组pids,并将新要素存入共有要素集合P;(2)遍历各要素,若要素与共有要素集合P中的要素形状没有重叠,则将要素加入到独立要素Q中;若有重叠,则裁剪掉此要素重叠部分的形状,若裁剪后形状非空,则将此要素存入叠加要素集合R;步骤(4),瓦片生成取出步骤(3)中的集合P、Q、R中的要素,将要素属于哪个集合标记到要素的属性中,按矢量瓦片规范生成矢量瓦片,返回给前端;步骤(5),前端处理前端获取到矢量瓦片后,进行要素渲染和要素用户交互,包括:进行渲染时,若要素属于集合Q或集合R,直接按标准矢量瓦片的渲染逻辑执行渲染;若要素属于集合P,则取出要素属性pids中的首个编号pid,取出集合R中编号等于pid的要素r,按照要素r的属性执行标准矢量瓦片的渲染逻辑;进行用户交互时,若交互选中要素f属于集合Q,直接用f执行交互逻辑;若交互选中要素f属于集合R,则从集合P中取出属性pids中包含f的编号的要素pfs,将pfs的形状与f的形状合并,得到完整的形状,随后用f执行交互逻辑;若交互选中要素f属于集合P,即实际上选中了多个要素,则取出f的属性pids给用户进一步选中具体需要与哪个要素,再执行要素属于集合R时...

【专利技术属性】
技术研发人员:刘雨
申请(专利权)人:昆明能讯科技有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1