一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种云优化的静态地理信息矢量数据在线服务方法与流程

2022-11-28 11:51:08 来源:中国专利 TAG:


1.本发明涉及地理信息技术领域,尤其是一种云优化的静态地理信息矢量数据在线服务方法。


背景技术:

2.已有技术中经常遇到地理信息系统(gis)数据的存储数据量较大,地图加载高精度矢量数据缓慢另外,地理信息矢量数据和带有空间特征的数据来源广泛,格式繁杂,大多都同时包含空间图形数据和属性数据,一般采用空间数据库管理,占用大量表空间,如果在线发布,需要搭建高性能服务器集群,成本很高。此外,这些数据大部分不需要进行编辑修改,即静态数据,现有的技术也能解决部分问题,比如flatgeobuf也使用希尔伯特r树作为数据结构,使用flatbuffers格式序列化数据,对于数据量大小没有限制,并且适合流式和随机访问。flatgeobuf设计仅支持simple features,非simple features,比如带有交叉旋转等复杂的不规范拓扑的矢量数据不能导入;数据访问速度依赖数据集大小,在中小数据集中可快速加载,在大数据集情况下,则加载缓慢,虽流式接口可在一定程度上改善体验,但仅此是不够的。mbtiles和geopackage都是基于sqlite数据库文件,优点在于数据量小,方便迁移,方便使用于移动端使用,使用php或者node.js开发简单的服务就可以发布数据。但是mbtiles和geopackage不适合云对象存储服务,且mbtiles是数据有损的,占用空间大。geojson适合小型数据集,自身没有索引。shapefile文件几何类型,大小,属性等都有限制,文件数量多,占用空间大。geojson是基于json的格式,适合数据量较小的文件,不支持随机访问,数据量大的的情况下效率较低。shapefile是一种比较原始的多文件格式矢量数据存储方式,而且文件大小和字段长度都有限制。综上,地理信息系统(gis)数据由于空间索引效率低,序列化数据的算法效率不够高,缺乏分层策略,没有针对高精度数据进行简化抽稀等优化,存在传输的数据较大,不适合随机访问等问题。


技术实现要素:

3.为了解决上述技术问题,本发明通过云优化的静态地理信息矢量数据cloud optimized geobuf来加快地图数据访问的速度,高效的提供数据服务。这些优化方式包括按不同比例尺对数据提前分层处理,增加overview,优先返回简化抽稀的数据;可导入非simple features数据格式,底层采用flatbuffers来进行序列化,支持随机访问;使用希尔伯特r树算法为静态空间数据创建索引,来支持空间查询;并将已序列化的数据存储数据到云对象存储服务器上,直接对外发布。
4.本发明的技术方案为:一种基于云优化的静态地理信息矢量数据在线服务方法,包括:
5.步骤s1、通过浏览器向云端服务器在线发起http请求,请求获取地理信息数量数据;
6.步骤s2、确定当前窗口地图比例尺;
7.步骤s3、通过cogeobuf库根据当前窗口地图比例尺,自动计算层级范围;
8.步骤s4、判断是否有空间范围约束,如果有则使用空间索引,根据空间索引去计算字节范围;如果没有则根据请求参数计算出字节范围;将字节范围转换为http range请求;
9.步骤s5、从cogeobuf文件中提取二进制空间数据;
10.步骤s6、将二进制空间数据返回浏览器;
11.步骤s7、前端解析转换为geojson格式进行显示。
12.有益效果:
13.本发明的一种基于云优化的静态地理信息矢量数据在线服务方法,具有如下优点:
14.1)增加overview,对数据分层抽稀简化,可按比例尺返回最适合的层级数据;
15.2)使用flatbuffers格式支持随机访问;
16.3)支持http range,可以通过http协议实现按字节范围读取文件;
17.4)放宽了对非simple features数据的支持;
18.5)采用希尔伯特r树存储空间数据,空间相邻要素存储在一起,通过空间索引,支持快速空间查询;
19.6)支持云存储,不需要开发专用的服务端程序,可直接访问数据。
附图说明
20.图1:本发明的一种基于云优化的静态地理信息矢量数据在线服务方法流程图;
21.图2:overview数据层;
22.图3:cogeobuf数据格式。
具体实施方式
23.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅为本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域的普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。
24.根据本发明的实施例,提出一种基于云优化的静态地理信息矢量数据在线服务方法,如图1所示,包括:
25.步骤s1、通过浏览器向云端服务器在线发起http请求,请求获取地理信息数量数据;
26.步骤s2、确定当前窗口地图比例尺;
27.根据本发明的一个实施例,本发明的预先通过第三方工具对原始数据简化抽稀,作为overview数据层。overview:也即概视图,它的第一个级别在全分辨率下创建,后续各个级别均在上一次生成的概视图级别基础上进行抽稀创建。采用金字塔模型进行存储,针对不同分辨率的地图范围,提供不同分辨率的数据。金字塔模型是一种多分辨率层次模型,在统一的空间参照下,根据用户需要以不同分辨率进行存储与显示,形成分辨率由粗到细、数据量由小到大的金字塔结构。金字塔最底层的分辨率最高、比例尺最大、数据量最大、地图信息最详细,随着层数的增加,其分辨率逐渐降低,数据量逐渐减少、地图信息逐渐简化。
比如0级仅显示洲名及简化后的全球地貌和洲边界线,8级显示市名及简化后的市边界线、道路、兴趣点,16级显示街道名及原始未简化的道路、等高线、兴趣点等全量要素。overview一般用于栅格数据,本发明继续扩展性的沿用这个概念。
28.根据本发明的实施例,以1千米分辨率的矢量数据为例,首先解析原始gis数据,确定分层简化级别和各级简化参数,通过第三方工具对原始数据简化抽稀,作为overview数据层。以北京地图为例,简化抽稀成1层,2层,如图2所示。0层有4662个点,1层抽稀后有333个点,2层进一步抽稀后有77个点,形成金字塔结构数据。
29.根据本发明的实施例,通过如下方式确定窗口地图比例尺:http请求中可以获取瓦片号z/x/y,其中z是显示级别,不同显示级别对应不同比例尺,参考openstreetmap地图层级与比例尺对应关系(见表1);
30.根据本发明的实施例,通过如下方式提供最适合的层级:经过overview抽稀过的数据内部会记录层次相关信息,根据比例尺和层级对应关系,可以取出相应层级的数据)
31.[0032][0033]
表1
[0034]
步骤s3、通过cogeobuf库根据当前窗口地图比例尺,自动计算层级范围;
[0035]
根据本发明的实施例,本发明采用定制的cogeobuf(cloud optimized geobuf)库,其是使用flatbuffers编码的,存储在云对象存储桶的,自定义的二进制地理空间数据,文件扩展名为cgf。
[0036]
r树,即r-tree,是用来处理高维空间数据存储的树状数据结构。例如给地理位置,矩形和多边形这类多维数据创建索引。希尔伯特r树:hilbert r-tree,它是一种r树的变体,是一种对多维对象比如线、区域、三维物体或者高维特征对象的索引。用于实现快速边界框(bounding box)空间过滤,且数据存储有空间相邻的特征,查询效率更高。
[0037]
本发明将原始gis数据通过本发明定制开发的库cogeobuf,使用希尔伯特r树和flatbuffers将0层数据及以上各层overview数据序列化存储到cogeobuf二进制文件,并上传到云对象存储桶中。这三层数据的存储格式如下图3所示。
[0038]
cogeobuf数据格式如下:cogeobuf文件由3部分构成:文件头、索引区、数据区(也称要素集)。索引区记录各数据区起始位置及长度,数据区记录各级要素,索引区和数据区一一对应。本例由3层组成:0层:无损全量要素;1层:简化后的要素;2层:在1级基础上进一步简化后的要素。
[0039]
同时,本发明由于使用flatbuffers格式,因此能够支持随机访问;
[0040]
本发明采用希尔伯特r树创建空间索引,希尔伯特曲线是一种空间填充曲线,特点是空间上相邻的对象会邻近存储在一块,可以减少io的时间,提高内存中数据处理效率。采用flatbuffers格式来序列化数据支持随机访问,flatgeobuf:简称fgb,是一种为地理图形数据进行二进制编码的格式,基于flatbuffers。它能容纳开放地理空间协会(ogc)发布的simple features(简单要素)规范下的数据。主要用于提供无损静态矢量数据,其中,simple features:也称简单图形,是矢量数据的一种子集。它通常由两部分组成:geometry和attributes,前者用于描述对象在自然界的所处的位置(主要由空间地理信息坐标构成),后者用于描述它自身的属性。本发明放宽了对非simple features数据的支持,flatbuffers提供前向/后向兼容性和optional字段,以支持大多数格式的演变。
[0041]
但仅有这些是不够的,还需要对数据分层优化,比如增加overview(也称分层简化抽稀),还需要考虑数据的存储和访问,可以借助云对象存储服务,支持http range请求,快速实现静态gis数据的请求响应。
[0042]
步骤s4、判断是否有空间范围约束,具体指的是:http请求中包含的空间范围参数,例如矩形范围bounds=[-180,-90,180,90],如果有则使用空间索引,所述的空间索引是指依据空间对象的位置和形状或空间对象之间的某种空间关系按一定的顺序排列的一种数据结构,其中包含空间对象的概要信息,如对象的标识、外接矩形及指向空间对象实体的指针,根据空间索引去计算字节范围,例如,flatbuffers把数据保存在一个一维的数组中,每个对象在数组中被分为两部分。元数据部分:负责存放索引。真实数据部分:存放实际的值。flatbuffers使用严格的对齐规则和字节顺序。根据空间索引可以找到元数据中的字节范围值);如果没有则根据请求参数计算出字节范围,例如,根据http请求中的瓦片号计算出该瓦片的空间范围,从而计算出相应的字节范围;将字节范围转换为http range请求,根据字节范围提取出相应的数据,并返回给客户端;
[0043]
所述http range,也即范围请求,http协议范围请求允许服务器只发送http消息的一部分到客户端。范围请求在传送大的媒体文件,或者与文件下载的断点续传功能搭配使用时非常有用。大多数的云服务提供商的对象存储服务,亚马逊aws s3、阿里云oss等,都默认支持这个选项。因此托管在这些地方的文件都可以通过http协议按需读取数据。
[0044]
步骤s5、从cogeobuf文件中提取二进制空间数据;
[0045]
步骤s6、将二进制空间数据返回浏览器;
[0046]
步骤s7、前端解析转换为geojson格式进行显示。
[0047]
所述的geojson:是一种基于json的地理空间数据交换格式,它定义了几种类型json对象以及它们组合在一起的方法,以表示有关地理要素、属性和它们的空间范围的数据。互联网工程任务组(ietf)制作了的geojson数据格式标准规范(rfc7946)。
[0048]
根据本发明的另一个实施例,当有不同比例尺和不同精度数据的时候,不能简单套用这些步骤,而应综合考虑效果与效率,来权衡overview分层层级和抽稀简化的程度。
[0049]
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,且应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献