03.07 GIS的数据是怎么存储的?

杯酒难醉


大数据GIS是在大数据浪潮下,GIS从传统迈向大数据时代的一次变革。大数据GIS能为空间大数据的存储、分析和可视化提供更先进的理论方法和软件平台,促进了传统GIS的产业升级,为地理信息产业发展提供新的渠道和原动力,服务于我国“十三五”期间的大数据产业发展和部署。

大数据GIS

大数据领域已经出现了许多实用的IT技术,例如分布式文件系统、分布式数据库、分布式计算框架、流处理框架等。这些技术使我们能够使用普通机器对大数据进行处理和挖掘,但多聚焦于通用的非空间数据领域,对空间数据的专业分析能力不足。而传统GIS由于受其IT技术框架的限制,并不能很好地应对大数据对分布式存储与计算、流数据处理等的技术要求。

大数据GIS就是把大数据技术与GIS技术进行深度融合,把GIS的核心能力嵌入到大数据基础框架之内,并打造出完整的大数据GIS技术体系。大数据GIS的核心技术如下图所示:

分布式空间数据库(Distributed Spatial DataBase,DSDB)是使用计算机网络把面向物理上分散,而管理和控制又需要不同程度集中的空间数据库连接起来,共同组成一个统一的数据库的空间数据管理系统。

分布式空间数据库可看成是空间数据库+计算机网络。但是它绝对不是二者的简单结合,它是把物理上分散的空间数据库组织成为一个逻辑上单一的空间数据库系统;同时,又保持了单个物理空间数据库的自治性。

分布式空间数据库系统是由若干个站点(或节点)集合而成,它们通过网络连接在一起,每个站点都是一个独立的空间数据库系统,它们都拥有各自的数据库和相应的管理系统及其分析工具。整个数据库在物理上存储于不同的设备上,而在逻辑上是一个统一的空间数据库。

分布式空间数据库系统的特点

  • 可靠性:在DDB中,单一部件的失效,不一定使整个系统失效,这比集中式数据库的一个部件的损坏而导致整个系统的崩溃好得多,也就是可靠性提高了很多。而且,在DDB中,因为在不同的节点上可能有数据的副本,因此可以通过多个版本的副本恢复失效的数据。
  • 自治性:DDB允许每个场所有各自的自主权,允许机构的各个组织对其自身的数据实施局部控制,有局部的责任制,使它们较少地依赖某些远程数据处理中心。
  • 模块性:DDB是一个类似于模块化的系统,因为增加一个新的节点,远比用一个更大的系统代替一个已有的集中式系统要容易得多。这使得整个系统的结构十分灵活,增加或减少处理能力比较容易,而且这种增减对系统的其他部分影响较小。模块性决定了DDB具有很强的升级能力和较低的投资费用。
  • 高效率、高可用性:在DDB中,通过合理的分布数据,使得数据存储在其常用的节点,这样既缩短了响应的时间,减少了通信费用,又提高了数据的可用性。并且,对常用数据的重复存储,也可以提高系统的响应速度和数据的可用性。

Hbase 分布式数据库

概述:Hbase 是一个基于 HDFS 的面向列的分布式数据库,源于 Google 的 BigTable 基于 GFS 进行分布式数据存储一样,前文提到,Hbase 是基于流式数据访问,对于第时间延迟的数据 访问并不适合在 HDFS 上运行,所以需要实时性的随机访问超大规模的数据集,使用 Hbase 则是更好的选择;

作用:Hbase 作为典型的非关系型数据库,Nosql 数据库主要分为以下几类:

Ø 基于键值对存储的类型;

Ø 基于文档存储的类型;

Ø 基于列存储的类型;

Ø 基于图形数据存储的类型;

在 Nosql 领域中,Hbase 本身不是最优秀的,但得益于与 hadoop 的整合,为其带来了强大 的扩展空间。Hbase 本质只有插入操作,更新删除等操作都是通过插入操作来完成,这是由 于底层 HDFS 流式访问(一次写入,多次读取)决定的,每次插入数据时,数据会带有“时 间戳”的标记,形成多个版本,Hbase 对于一个数据会保留其固定的版本数量,如果在查询 时,也是显示出距离当前时间最近的一个新版本;

传统的GIS数据存储大多是关系型数据库,但关系型数据库在海量数据的管理中面临许多问题,包括高并发读写、难扩展等,已经成为制约GIS发展的瓶颈。同时,GIS数据中的图片、影像数据等都是非结构化的,关系型数据库不能合理地处理非结构化数据。而HBase以其高可靠性、高扩展性、高容错性、高效性以及适用于海量非结构化数据存储处理分析的优势在处理GIS数据方面提供了另一种思路,即解决HBase应对GIS中的两大挑战:大规模数据处理的时延和空间位置建模.

格栅数据获取

栅格数据的索引

层级编码、X坐标与Y坐标表示的不仅是一个瓦片数据的索引,同时还是瓦片数据的地理位置标志,通过数学公式在查询和检索时,行列编码和经纬度之间可以实现相互转换。本文中栅格数据存于HBase,rowkey的表示方式为zoom_level、x_coordinate、y_coordinate,列簇(column family)为i,列(column)为png_info。栅格数据在系统中的展示形式如图所示。

在栅格数据切片及写HBase上主要是略去了磁盘写步骤,默认的栅格数据获取是以文件形式存储在本地磁盘,再通过读磁盘文件写入HBase。对北京市分别切片至16层、18层,并将栅格数据写入HBase测试结果

从表可以看出,改进后略去磁盘写操作,在栅格数据量较少时性能反而下降。但在处理数据规模较大(如对中国地图或世界地图进行切片)时,会因持续写磁盘操作,生成文件夹及切片文件数太多导致inode(索引节点)耗尽。经过约24 h的持续切片,生成海量切片小文件,导致服务器inode用尽,即使硬盘空间仍有空余,也无法在硬盘上创建新文件,进而切片工作无法正常完成。

若将切片直接写入传统数据库(如MySQL、Oracle、PostgreSQL等),写入速度不断降低,导致写入时间不可接受,后期的检索时间也较慢。另外,海量切片小文件写入传统数据库会对数据库造成较高的负载,系统的稳定性和扩展性难以控制。

经过改进测试,对世界地图连续切片一个月,形成83 GB的栅格数据,未经过磁盘写操作直接写入HBase,未出现任何异常情况。

本文对栅格数据的检索也进行了验证,在124 217 416条记录的HBase表上检索指定切片的响应时间为毫秒级(0.004 s)。同时,HBase也支持指定范围检索,一次返回万级别切片的响应时间为秒级(5.077 s)。

为了对海量矢量空间数据进行高效存储、管理与检索,本文设计了矢量空间数据的rowkey,并将数据存储于HBase。实验结果显示,对中国地图的矢量空间数据在24 201 991条记录的Hbase表上检索指定空间矢量点的响应时间为毫秒级(0.021 s)。检索线或面的响应时间为秒级,若返回一个面上的千级别的坐标点时间约为3.551 s。

针对智慧城市建设中的数据管理问题,利用HBase分布式数据库的列存储模型特点,设计了一种基于HBase的GIS数据管理系统,实现了对矢量空间数据与栅格数据的高效存储、索引与检索。GIS矢量空间数据在HBase中存储,首先确定rowkey的设计,使得在检索空间位置时返回尽可能少的数据请求,即在检索时既考虑经度与纬度,又考虑空间数据类型和图层属性。设计了基于表名、空间数据类型、经纬度Geohash编码、网格ID的rowkey方法。为了加快切片效率和减少存储成本,本文在生成栅格数据时在mapnik切片的基础上做了优化,使栅格数据不经过磁盘写操作,直接写入HBase。

参考文献

《基于HBase的海量GIS数据分布式处理实践》


分享到:


相關文章: