赖 云,祁 琼,樊楚颖
(1.湖北省国土资源研究院,湖北 武汉 430061;2.武汉大学 资源与环境科学学院,湖北 武汉 430079)
国务院于2017-10-16发布《国务院关于开展第三次全国土地调查的通知》(以下简称为《通知》),《通知》明确自2017年起开展第三次全国土地调查,以全面查清当前全国土地利用状况,掌握真实准确的土地基础数据,从而满足经济社会发展和国土资源管理工作需要[1]。随着自然资源部的成立,2018-08-29国务院将第三次全国土地调查调整为第三次全国国土调查(以下简称为“三调”)[2]。
截至2020年底,第三次全国国土调查已基本完成,数据经汇总已建立起了多级空间数据库。三调数据是自然资源管理部门开展国土空间规划、耕地保护、卫片执法、土地征收等工作的基础,但由于三调数据内容丰富、数据量庞大,而移动设备内存小,无法存储全省甚至一个市(州)的数据量,往往导致工作人员为了调用三调数据不得不在完成一个区域工作后,返回工作站进行下一区域数据的拷贝与存储,且在进行外业时工作人员常遇到地图渲染慢、数据查询效率低、数据量大导致程序崩溃等问题,极大影响了外业工作效率。解决移动环境下大规模国土调查数据的调度和渲染问题,是三调数据充分服务于自然资源管理工作的关键之一。
GIS数据把空间对象转化为点、线、面三种,要求数据具有完整性和连续性,各类要素都要有明确的分类和信息[3]。GIS数据是为了满足空间分析的需要,强调实体独立的地理意义,要求保证地理要素的完整性。
制图数据的信息主要是依靠地图符号、注记等地图语言体现,数据呈现一种不连续的状态,各要素之间没有联系,也不能形成拓扑关系,对数据的分层要求也不是非常严格,故而不能很好地实现空间分析[4]。一般可通过对GIS数据的压缩化简综合等方式来生成制图数据。
矢量切片包(vtpk)是以建立金字塔的方式将矢量数据切割成一个一个矢量要素描述性文件,每个描述性文件存储的是投影区域的几何信息和属性信息,包含了多个数据集,每个数据集都包含了多个要素,包括点、线、面和注记要素[5]。此外,矢量切片包还存储有地图的配置样式文件及图标、标注字体等信息,配图样式文件中包含有图层的渲染风格属性信息,如图标大小、主机样式、线的颜色等信息[6]。移动端软件根据地图可视范围以及比例尺从矢量切片包中获取矢量切片和配图样式文件等数据源信息,然后按照配图样式文件中定义的渲染风格信息将矢量切片数据渲染输出地图[7]。
地理数据库(geodatabase)是采用标准关系数据库技术来表现地理信息的数据模型。它能够有效定义和表达空间实体,系统化空间实体之间各种行为特征的约束关系,支持多种格式地理数据的统一管理[8]。GeoDatabase也是ESRI公司定义的一个为ArcGIS所用的数据框架,该框架定义了ArcGIS中用到的所有的数据类型。GeoDatabase空间数据模型在同一模型框架下对GIS通常需要处理和表达的地理空间要素,如矢量、栅格、三维表面、网络、地址等进行统一的描述[9]。
移动地理数据库(.geodatabase)又称为运行时地理数据库,是ESRI公司为用户提供的广泛适用且简单的地理数据库解决方案。移动地理数据库可以将属于一个移动地理数据库的所有数据集都包含在单个文件所存储的SQLite数据库中,支持创建、显示、查询及编辑GIS数据,且该数据库使用优化过的高效数据结构,可以提高性能、降低成本简化复杂性[10]。移动地理数据库单个文件的大小限制为2TB,易于移植,是可跨操作系统使用的便携式地理数据库。
近年来移动设备在性能上有较大提升,但与大型服务器和桌面设备相比,其存在CPU处理能力弱、内存容量小、读写速度慢等问题,这也导致移动设备对大数据量矢量空间数据的存取和渲染速度慢。所以移动环境下需要对数据进行重新组织,并设计数据加载与用户交互的方式,来提高数据的渲染及使用效率。
1.1.1 数据组织
本文采用GIS数据与制图数据分离的方式来进行数据组织,其中制图数据采用.vtpk格式,GIS数据采用.geodatabase格式。且考虑到数据量较大的问题及实际使用需求,对数据按行政区域进行划分,通过配置文件进行整体的调度与存储。具体的数据组织方式如下:
1)首先对数据进行按区域分块,将湖北省三调数据按市域和区/县域进行数据划分,这样可以缩小检索和渲染范围,提高检索和渲染效率。
2)对于一个区/县的数据,为其单独构建.vtpk(用于渲染)及.geodatabase(用于查询)。所有数据文件在移动设备上以市为文件夹进行组织,所有市名及县名均存储在配置文件中。并在配置文件中添加app初始加载数据的市名及县名,在切换展示数据时修改配置文件中的初始加载数据的市县名,以保证每次app重新打开时显示数据为上次退出时的数据(如图1所示)。
图1 配置文件结构示意图
1.1.2 数据加载
用户首次打开软件时,通过读取配置文件中的城市列表进行数据列表的显示,通过读取配置文件中的初始城市名及文件存储路径进行界面初始化,即通过读取对应路径下的.vtpk数据进行地图渲染,然后异步加载对应的.geodatabase文件来进行制图数据与GIS数据的关联,确保展示数据与查询数据的一致性。
当用户进行数据展示区域切换时,首先切换地图渲染的数据源(即切换进行展示的.vtpk),并进行配置文件中的初始加载数据更新,再进行对应.geodatabase文件的异步加载,其中.geodatabase文件的异步加载通过AecGIS Runtime接口中Geodatabase类的loadAsync()方法来实现。
1.1.3 用户交互
在用户与展示数据进行交互时(也即用户与移动设备屏幕进行交互时),软件从.geodatabase内部进行查询,并将查询结果作为图层要素加载至展示区域内,保证查询结果为GIS数据而非经过处理的制图数据。
通过ArcGIS Runtime SDK for Android框架可直接对.vtpk格式数据进行渲染,主要渲染原理为:客户端将当前地图可视范围和比例尺发送给数据端,数据端将矢量切片和配图样式数据等信息返回给客户端,客户端按照配图样式中定义的渲染风格信息将矢量切片数据渲染输出为地图。
本实验使用湖北省第三次国土调查数据,共包括103个县级行政单位。原始数据以县级为单位,每个县级数据存储在一个.gdb数据库中。每个.gdb数据库中包括DLTB(地类图斑)、XZQ(行政区)、DGX(等高线)等多个图层,本实验中仅使用地类图斑图层。
1)数据组织与存储。从桌面端软件ArcGIS Pro 2.7中将原始存储在.gdb文件中的矢量数据生成.geodatabase,然后对矢量数据根据三调标准样式或用户自定义样式进行配图,得到符号化的三调数据。将符号化的三调数据导出生成为.vtpk,其中在生成矢量切片包的过程中,ArcGIS Pro软件会自动对较小比例尺下的数据进行综合,确保在小比例尺显示的时候地图幅面不会过于拥挤。
以市为单位构建文件夹,以区/县为单位构建文件,其中一个区/县包括一个.vtpk文件和一个.geodatabase文件,数据组织方式如图2所示。
图2 数据组织方式示意图
2)数据渲染。数据渲染通过ArcGIS Runtime SDK for Android实现对vtpk文件的读取和渲染,主要步骤为:①获取.vtpk文件路径;②通过路径创建ArcGISVectorTiledLayer矢量切片图层对象;③将ArcGISVectorTiledLayer矢量切片图层加入Basemap底图;④将Basemap底图加入ArcGISMap地图中;⑤获取ArcGISMap的Basemap的所有BaseLayers,添加其他ArcGISVectorTiledLayer矢量切片图层对象;⑥将ArcGISMap地图在MapView控件中显示。渲染效果如图3所示。
图3 湖北省襄阳市樊城区国土数据渲染效果图
3)数据调度。用户可通过选择不同的区域,进行展示和查询区域的切换,从而实现数据的分区域调度。本实验通过文件名将对应的.vtpk和.geodatabase进行关联,如用户将展示区域切换为樊城区时,首先将地图展示加载的数据源切换为樊城区.vtpk,同时进行樊城区.geodatabase的异步加载,以此来保证用户在与樊城区的地图进行交互时,查询的数据源也是樊城区(如图4所示)。
图4 数据分区域调度示意图
数据调度方面,用户进行所选择区域的切换,制图数据与GIS数据通过文件名的关联,实现了地图展示区域和检索范围联动切换。
数据渲染方面,每个区/县数据(要素数从50 000到500 000万不等,vtpk大小从20 MB到80 MB不等)的渲染时间均小于1 s。
本文针对制图数据与GIS数据之间的区别与关联,首先阐述了大规模国土调查数据调度和渲染的原理与方法,然后通过将湖北省国土调查数据按照“以市建立文件夹、以区/县组织文件”的原则进行数据调度和渲染的实验,使大规模国土数据不仅达到快速渲染,分区域调度的效果,而且可以实现快速检索与分析。该方案已应用于湖北省国土调查移动数据管理系统软件中,取得了较好的应用效果。