| 一种适用于移动端国土调查应用的瓦片地图存储方法 |
如今,国土调查工作常采用移动端应用进行外业调查,需在移动端设备上装载调查数据和影像数据。在这些数据中,栅格影像数据文件较大,而移动端设备的存储空间和性能皆有限,直接将原始栅格影像数据存储于移动端设备中是不可行的。在目前的解决方案中,常需将原始栅格影像数据制作成影像切片地图,在减小文件大小的同时提升数据读取效率。在各类切片地图数据存储模式中,采用较多的有图像文件存储、二进制文件存储、数据库存储,同时也有方案采用分布式文件存储[1]、云存储[2]等存储模式。
图像文件存储方式是最简单的存储方式,即将每个瓦片以单个文件的形式存储。但随着瓦片数量的增加,瓦片文件浪费的存储空间增加,数据拷贝效率降低[3],如图 1所示。
![]() |
| 图 1 图像文件存储模式 Fig.1 Image File Storage Mode |
二进制文件存储模式将瓦片地图按规则划分为多个单位,每个单位中的瓦片数据写入一个二进制文件,并附带一个二进制文件的索引文件,如图 2所示。该模式相对图像文件存储模式,能有效提升存储性能与数据拷贝效率。但二进制文件内数据是连续存放的,当某瓦片数据发生损坏,修复过程较为复杂且有风险。
![]() |
| 图 2 二进制文件存储模式 Fig.2 Binary File Storage Mode |
数据库存储模式是将所有的瓦片地图信息及瓦片数据存储于数据库中,该模式能进一步提高数据迁移、备份的效率,同时可通过数据库可视化软件对单个瓦片进行浏览,也可对单独瓦片进行维护,如图 3所示。
![]() |
| 图 3 数据库存储模式 Fig.3 Database Storage Mode |
在3种瓦片数据存储模式中,数据库存储模式在存储、查询、维护等方面均优于其他两种模式。本文通过对比多种数据库存储策略,总结出一种适用于移动端国土调查应用的瓦片地图存储方法。
1 瓦片数据存储方法对比分析 1.1 瓦片数据标识方法使用消息摘要算法第五版的数据库存储瓦片数据方案,这是一种进行瓦片相似性验证的存储方案[4]。具体是使用瓦片标识表、瓦片数据表两个表存储瓦片数据。其中,瓦片标识表用于记录每个瓦片的层级、行号、列号、瓦片数据标识。瓦片数据标识是瓦片数据进行消息散列的结果;瓦片数据表用于存储瓦片的二进制数据以及瓦片数据标识。每插入一瓦片数据,就会计算瓦片数据的标识。如该标识不存在于瓦片数据表中,则在两表中插入新的记录;如该标识已在瓦片数据表中存在,则仅在瓦片标识表中插入新的记录。
采用瓦片数据标识方法,当一个瓦片地图内存在海面等纹理变化较小的区域时,可减小数据库的文件大小;同时,使用两张表存储瓦片数据,易于维护与扩展。但当该方法应用于精度要求较高的工作中时,可能存在抹除关键信息的情况。
1.2 设置主键方法在数据表中对一列或多列使用主键,可唯一地标识表中的每一行,同时加快数据库的操作速度。因瓦片地图中每个瓦片的层级、行号、列号组合都是唯一的,本文认为可对瓦片数据表中的层级、行号、列号字段设置主键,在避免错误数据写入的同时,提高瓦片读取效率。
1.3 对比分析为验证此瓦片地图存储方法的合理性,本文编写了瓦片地图展示工具,根据指定图幅范围读取区域内涉及的瓦片图像,将其展示在窗口中,并根据数据库读取瓦片数据所需的时间,对瓦片地图存储方法进行评估,瓦片地图展示工具如图 4所示。
![]() |
| 图 4 瓦片地图展示效果 Fig.4 Effect of Showing Tile Data |
因使用瓦片相似性验证的存储方案对存储效率的提升与具体数据相关,同时可能导致关键信息的丢失,本文不对存储效率进行评价,仅从数据结构角度针对查询效率进行实验。本文使用一个包含21个层级、5 262 683个瓦片的数据,地图范围约5 739 km2,存储于SQLite3数据库,分别按是否使用瓦片数据标识、是否设置主键进行配置,查询效率详见表 1。
| 表 1 地图瓦片查询效率 Tab.1 Query Efficiency of Querying Tile Data |
![]() |
从实验结果可以看出,设置主键能够明显提升瓦片数据的查询效率,但瓦片数据标识对查询效率的影响不大;不设置主键的情况下,因使用瓦片数据标识查询瓦片数据时需跨多张表格联合查询,同时可能受瓦片数据在表格中的位置影响,查询效率大大降低。实验证明,不使用瓦片数据标识但设置主键、使用瓦片数据标识且设置主键的存储结构查询效率相近,且在本文实验的几种结构中是查询效率最高的。同时,对比不使用瓦片数据标识但设置主键、使用瓦片数据标识且设置主键两种数据结构,使用瓦片数据标识且设置主键的数据结构有易于维护、扩展的优点。
2 瓦片数据存储规则设计 2.1 数据库选择目前的主流数据库中,Oracle等属于大型关系型数据库,稳定性、安全性、数据处理能力均较强,但安装、配置复杂,维护成本高;SQLite属于嵌入式的小型关系型数据库,体积较小,易于迁移,更适合在移动端使用[5-9]。由于SQLite3数据库具有开源、免费、可移植性强等优点,本文采用SQLite3数据库存储瓦片数据。
2.2 存储结构设计本文设计的移动端瓦片数据存储结构,综合了瓦片数据标识和主键设置两种方法,在保证瓦片数据查询效率的同时,提高了后期维护、扩展的效率。数据结构详见表 2、表 3。
| 表 2 瓦片标识表 Tab.2 Table of Tile Index |
![]() |
| 表 3 瓦片数据表 Tab.3 Table of Tile Data |
![]() |
3 结束语
本文从解决移动端国土调查应用难以存储大量瓦片地图的问题出发,对比各种存储设计的优劣,最终设计了移动端地图瓦片存储方法。通过实验证明,该地图瓦片存储方法对于百万级别的数据量也是高效的。但在未来的工作中,以下几点内容仍需进一步研究。
1) 在对瓦片数据存储结构进行研究时,使用的实验数据最大数据量仅达到百万级别,当数据量继续增大时,瓦片数据的查询效率的受影响程度需进一步进行实验。
2) 此次研究未对瓦片数据在表中的位置进行测试,目标瓦片在表中的行数对查询效率的影响需进一步进行实验。
| [1] |
马卫春, 任家锋, 朱清. MongoDB存储地图瓦片技术在国情普查建库中的应用[J]. 测绘地理信息, 2018, 43(3): 66-69. |
| [2] |
喻凯, 熊祥瑞, 高涛. 基于Hadoop的地图瓦片云存储系统的设计与实现[J]. 测绘地理信息, 2017, 42(3): 74-77. |
| [3] |
陈苗.轻量级地理空间栅格数据管理系统[D].西安: 西安电子科技大学, 2018 http://cdmd.cnki.com.cn/Article/CDMD-10701-1019011200.htm
|
| [4] |
杜波.基于MapReduce的栅格地图切片系统[D].西安: 西安电子科技大学, 2014 http://cdmd.cnki.com.cn/Article/CDMD-10701-1015440861.htm
|
| [5] |
杨任农, 白娟, 黄震宇, 等. 基于SQLite的LoD模式海量影像数据管理系统的设计与实现[J]. 计算机工程与科学, 2011, 33(10): 140-144. |
| [6] |
谭忠厚, 史玉龙, 马旭东, 等. 基于SQLite的地图瓦片数据库的设计与实现[J]. 测绘与空间地理信息, 2018, 41(3): 109-111. |
| [7] |
谢志伟.基于SQLite的遥感影像数据库设计[D].阜新: 辽宁工程技术大学, 2012 http://cdmd.cnki.com.cn/Article/CDMD-10147-1013138773.htm
|
| [8] |
徐静波, 许捍卫, 孙咸磊, 等. 土地变更数据在移动端的组织与管理[J]. 地理空间信息, 2016, 14(9): 85-87. |
| [9] |
胡杏花.地质勘查项目管理系统的数据组织与管理[D].长沙: 中南大学, 2011 http://d.wanfangdata.com.cn/thesis/Y1917250
|
2020, Vol. 45








