| 面向政务地图无纸化应用的地图数据组织与渲染技术 |
地图作为一种直观的信息载体,是一种反映客观存在的物质模型,使用者不需要实地调查与测量就可以获取相关地理要素(例如水文、地形、交通网、居民点等)的信息,此外,地图还可以表达各种专题现象的分布规律、时空差异和变化特征。政府部门在日常工作中,将地图作为行动指导和信息补充,充分发挥了地图在分析规律、综合评价、预测预报、决策对策、规划设计、指挥管理中的作用[1]。
政府工作中使用的政务地图多为纸质地图。纸质政务地图存在以下不足:①不方便携带,尤其是雨雪天气;②数据更新后需要重新印刷,成本高、周期长;③纸质地图非常不利于省、市、县各级部门间的数据共享。随着当前计算机技术的快速发展,手机、平板等移动设备的不断普及,移动办公成为当前政府部门工作的常态和迫切需求[2]。针对纸质政务地图存在的上述不足以及政府部门工作的实际需求,本文将探讨如何实现政务地图无纸化。
1 政务地图无纸化的设计思路当前,制图人员通常使用计算机制作政务地图,制图成果除了印刷出来的纸质地图外还会保留一份数字版本的地图文件,这份文件除了用于存档及下次重印外不作其他用途,其作用没有得到充分发挥。如果将这些政务地图的数字文件保存在具备存储器的移动设备上,用户就可以借助手机、平板等智能设备便捷的浏览查看数字版本的政务地图,这是本文开展政务地图无纸化应用研究的出发点。
近年来,浙江省省、市县已经积累了一定规模的政务地图资源,在对已有的地图数据进行分类整理后,建立政务地图数据库。围绕这些数据发布服务,用户可以通过互联网访问数据库将政务地图文件下载到个人的移动设备上,进而浏览查看与纸质图内容一样的电子版地图数据。
显示在移动设备上的政务地图应该和纸质地图一样清晰[3]。政务地图的原始数字文件虽然是图片格式,但是其所要表现的内容比一般的图片要丰富的多,同时图片的分辨率也更大,因此数据量常常超过10 MB,其中以影像地图作为底图的政务地图,其数据量大小更是可以到达数百兆。由于浏览器缺乏强有力的缓存机制,如果用户通过网页查看政务地图,每次都必须重新下载一次地图文件,需要花费相当长的时间和流量,此外,浏览器很有可能无法加载大数据量的政务地图[4]。因此,本文设计的系统选择原生应用开发的形式在移动设备上显示政务地图,下载完成的政务地图被存储到设备内存里,可以供用户下次查看而不需要重复下载,本文研究的重点是在应用中如何解决移动设备上加载大数据量政务地图的问题。
2 政务地图无纸化的难点 2.1 分类归档目前面向浙江省各市县政府部门制作的政务地图,根据地域划分,可以分成省、市、县三个级别的政务地图;根据专题性划分,数量最多的是不同地区的行政区划图,此外,有与自然环境相关的水系图,地形地貌图,与产业经济相关的经济建设图、产业布局图,与人文相关的旅游图、文化图,与政策导向相关的“三改一拆”图、“最多跑一次”图;根据表现形式划分,大部分的政务地图是单张的具有专题性质的地图,但也存在部分针对某一地区或某一产业的系列地图图集,比如说《图说舟山图集》《核电基地图集》。如何合理地对政务地图进行分类归档是一项复杂的工作,而明确的分类归档有利于建立高效的数据库索引,也有助于提高用户搜索政务地图的准确率。
2.2 数据下载用户要浏览查看政务地图需要先把地图文件下载到本地设备上,下载一幅政务地图的数据量一般在十多兆到数百兆之间,同一时间可能会有多个用户的下载请求。因此对于存放数据的服务器而言,就必须有很大的带宽。以往的一些地理信息系统项目,对外发布的公共地理信息资源通常是频率高但体量极小的字符串流数据,大小一般在数千字节左右,无法与一幅政务地图的数据量相比。
2.3 地图加载虽然政务地图是图片格式的数据,但是由于数据量过大,如果直接将整个文件的内容加载到设备内存当中去,很可能会直接引发应用崩溃。而采用目前通用的一些图片加载工具库来加载政务地图,工具库为了避免应用崩溃会对政务地图进行强制的压缩处理,导致显示在屏幕上的政务地图的细节被大量省略,达不到与纸质图一样的清晰度。解决这一问题可以从两个方向去考虑:一方面,针对数据量大这一问题,专门开发一个用于加载政务地图的工具库;另一方面,日常生活中使用的电子地图覆盖的范围要比单张的政务地图要大得多,但是它可以在移动设备上正常加载,政务地图也可以借鉴这种加载机制[5]。
3 关键技术 3.1 分级索引建库技术针对§2难点中提到的目前政务地图数据缺乏系统分类归档的现状,同时,为了满足不同政务用户对政务地图的任意组合需要[6],本文针对不同种类的政务地图数据采用“分级+多关键字”索引技术进行建库。在政务地图分级方面,通过总结归纳当前系统汇聚的300多张政务地图的专题属性,将政务地图的检索目录分为两级,如表 1所示。在关键字设置方面,结合政务地图的属性及用户使用需求,为每张政务地图设置行政区域、生产时间、政务主题、访问权限、文件类型等多个关键字。通过上述措施为政务地图数据库建立了高效的检索机制,一方面提高了用户搜索政务地图的精准性; 另一方面,可以为不同的政务用户灵活定制政务地图组合。
| 表 1 政务地图分类表 Tab.1 Classification of Government Maps |
![]() |
3.2 对象存储OSS技术
对象存储服务(object storage service,OSS),是云服务器技术提供的高效、安全、低成本的云存储服务[7]。如图 1所示,相较于传统的自建服务器存储,OSS不受限于硬件可靠性,不会出现不可逆转的数据丢失问题,多种鉴权和授权机制使得开发者不必单独实现安全机制,并且OSS具有无带宽限制,上行流量免费的优点。
![]() |
| 图 1 云服务器架构 Fig.1 Cloud Server Architecture of Government Map |
政务地图单个文件数据量比较大,且随着时间变化,政务地图的数量会越来越多,自建服务器存储政务地图就会面临硬盘容量限制,峰值下载速度慢等问题,通过将政务地图文件转移到OSS上去,可以大量节省应用服务器上的硬盘空间,用户通过OSS下载政务地图时,不会占用应用服务器的下行带宽,下载速度会快很多,极大提升了用户的使用体验。同时,OSS具备的数据防丢失、鉴权授权机制也保证政务地图数据的安全性。因此,OSS适合作为一种高效存储分发政务地图数据的解决方案。
3.3 地图无损调度技术政务地图的数据量要比一般的图片大很多,使得政务地图没办法在移动设备上即时加载[8],因此必须寻求一种高效无损的方式加载政务地图。本文使用华为M3平板电脑作为测试设备,操作系统是Android7.0,选取了不同类别、不同大小的地图文件作为测试样例,测试采用不同方式加载政务地图在移动设备上的显示效果。
直接使用设备系统自带的图片加载接口显示政务地图,会出现内存溢出的错误,严重的将导致应用崩溃闪退,测试结果如表 2所示。
| 表 2 直接加载政务地图结果 Tab.2 Results of Direct Loading of Government Map |
![]() |
选用通用的图片加载工具库,例如Android系统上的Glide库。这些工具库通常为了规避内存溢出的错误,会对原图进行一定程度的压缩。通过测试,这种方式加载的政务地图,显示在屏幕上的分辨率会降低1/2左右,而且这个比例会随着实际分辨率变大而升高,导致大量的地图内容被省略,移动设备上显示的政务地图没有和纸质地图相同的清晰度,数据压缩结果如表 3和图 2所示。
| 表 3 通用工具库加载政务地图数据压缩结果 Tab.3 Results of General Tool Library Loading Data Compression Government Map |
![]() |
![]() |
| 图 2 通用工具库加载政务地图压缩结果 Fig.2 Results of General Tool Library Loading Data Compression Government Map |
直接加载政务地图应用系统会崩溃的原因,是因为一次性把整个文件的数据量写入内存中,超出了系统能够分配给单个应用的最大内存,所以应用会报错闪退。而加载工具库为了避免应用系统崩溃,把一次性写入的数据量做了一定程度的压缩,结果就是损失了政务地图的清晰度。针对上述问题,本文采用局部地图无损调度加载技术,即只加载当前显示在屏幕范围的地图内容。
移动设备在加载政务地图图片格式的文件时,根据采样范围和采样率来读取数据[9, 10]。无论是直接加载还是使用依赖库加载,设备都是一次性地读取文件的所有数据。在测试的样本中,政务地图原图的分辨率均在6 000×4 000像素以上,那么采样范围就是一个6 000×4 000的大矩形,直接加载的采样率为1,使用依赖库时采样率为1/2,这就可以解释直接加载会导致数据量过大内存溢出,使用依赖库加载会出现地图被压缩的问题了。
事实上,并不需要在最开始就把所有的文件数据写入到内存里,可以依据当前地图的放大倍数计算出合适的采样范围和采样率来动态加载需要渲染的地图内容。测试设备用于显示地图的视口分辨率是1 920×1 080像素(由于需要显示其他内容,实际要小于这个值),而地图的分辨率在6 000×4 000像素以上,后者大概是前者的3倍。如果整张地图完全在视口内显示的话,默认采样率为1,意味着地图一条边6 000个以上的像素会被挤在1 920个屏幕像素的空间里,但是1个像素是无法表达3个以上像素的内容,也就是说这种情况下使用1的采样率是不必要且无意义。屏幕上显示的地图比原图分辨率大概缩小了3倍,即使加载地图的全部内容,用户也察觉不出来。可以将采样率设置为1/3,采样范围不变,此时渲染到屏幕一边上的地图像素在2 000个左右,写入到内存的数据量减小到原来的1/3;当用户为了观察地图的细节而将地图放大时,再通过缩放倍数计算出每个时刻的采样范围大小和采样率,进而加载合适的地图内容到屏幕上,如图 3所示。
![]() |
| 图 3 政务地图实时加载原理 Fig.3 Principle of Real-time Loading for Government Map |
根据以上原理开发出适应政务地图的加载工具库,再用样本数据进行加载效果测试,结果如表 4和图 4所示。
| 表 4 开发工具库加载政务地图响应测试结果 Tab.4 Results of Response for Development Tool Library Loading Government Map |
![]() |
![]() |
| 图 4 开发工具库加载政务地图响应测试结果比较 Fig.4 Comparisons for Test Result of Response for Government Map Loaded by Development Tool Library |
根据测试结果,使用该工具库加载的政务地图没有出现分辨率被压缩的情况。但是地图在初次加载时,采样范围是地图的整个区域,这个范围越大,采样需要花费的时间越多(通用的图片加载库也存在这个问题)。样本中普陀山岛影像图的分辨率达到9 923×14 174像素,而它的初次加载时间超过了5 s。这样的用户体验并不能令人满意,如果将2 s作为能够被接受的最大地图加载时间,开发的工具库对于样本中低于40 M的政务地图能够完成这个目标。而对于普陀山岛影像图这样近百兆的政务地图明显是无能为力,因此系统需要用另一种方式来解决这个问题。
日常使用的电子地图覆盖到的是一个非常大的范围,以天地图浙江为例,地图的缩放级别设置成最大时,计算机屏幕显示的是地图部分的区域,但是此时整张电子地图几乎相当于1%的浙江省实际面积了,而这是通过地图切片的机制来实现的。根据地图的缩放级别制作不同分辨率的地图,缩放级别最大时分辨率也最大,这一点类似于上文提到过的采样率。然后再将每个级别的整幅地图切成很多大小一致的小块,这个小块就是地图切片。屏幕渲染地图时通过经纬度计算出需要的地图切片,最后请求若干个可以将视口覆盖的地图切片,这个数据量非常小,所以设备可以非常流畅地加载地图。ArcGIS软件支持将JPG/PNG格式的图片发布成地图切片,因此可以将普陀山岛影像图这样数据量巨大的政务地图转换成地图切片格式,然后再借助地图引擎在移动设备显示。结果如表 5所示,转换成地图切片的普陀山岛影像图可以在移动设备上即时显示。这种方式的原理是提前把政务地图每个缩放级别展现的内容准备好,节省了之前工具库加载需要不断读取并处理原图的时间,但因为从图片格式转为地图切片,数据量也随之变大,用户在下载政务地图的时间也会变长。
| 表 5 地图切片加载政务地图响应测试结果 Tab.5 Results of Response for Map Tiles Government Map |
![]() |
结合上述讨论的几种加载地图的方式,本文最后采用的解决方案是:40 MB以下的政务地图直接使用开发的工具库加载,40 MB以上的政务地图则使用ArcGIS软件转换成地图切片,然后通过地图引擎在屏幕上渲染显示。
4 研究成果及应用采用本文所述的技术路线,系统处理了近年来积累的300多幅政务地图,研发了浙江省政务地图云平台,为省级政府部门提供在线的政务地图服务;同时,基于省级平台,先后为金华、舟山、丽水、龙游、温岭、磐安、武义等多个市县定制了市级县平台。通过政务地图云平台,如图 5所示,各级政府工作人员可以非常便捷地获取省、市、县不同级别和不同种类的政务地图。有效解决了传统纸质政务用图携带不便、更新周期长等痛点问题。目前,政务地图云平台已运行近4年多时间,越来越多的政府部门享受到政务地图无纸化应用带来的便利。
![]() |
| 图 5 政务地图云平台Web端管理平台 Fig.5 Web-side Management Platform of Cloud Platform of Government Map |
5 结束语
基于政务地图制作后保留的数字文件,通过建立政务地图数据库,研发政务地图云平台,借助于云技术和对象存储服务,在地图加载调度方面,尝试了多种方案显示地图内容,研究提出了制定政务地图加载库和地图切片方式相结合的政务地图高效、无损调度技术,使得政务地图可以在移动设备上高效、流畅地查看使用,成功实现了政务地图无纸化应用的目的。
| [1] |
洪明格. 电子地图生产质量控制方法探讨——以福州市域政务电子地图为例[J]. 福建建筑, 2017(2): 89-91. |
| [2] |
王婷婷. 领导政务工作用图系统设计与实现[J]. 工程建设与设计, 2018, 387(13): 200-201. |
| [3] |
张晓辉, 余海洋, 陈鑫祥. 基于ArcGIS的省级政务电子地图制作方法及关键技术探讨[J]. 北京测绘, 2017(1): 78-80. DOI:10.3969/j.issn.1007-3000.2017.01.020 |
| [4] |
官文洁. 浅谈政务电子地图制作[J]. 福建建筑, 2016(6): 99-104. |
| [5] |
王夺, 李影, 韦书剑. 基于Android平台的智慧政务地图数据采集系统的设计与实现[J]. 现代信息科技, 2018, 2(2): 30-32. DOI:10.3969/j.issn.2096-4706.2018.02.010 |
| [6] |
菅建华, 董志. 政务电子地图服务平台的设计与实现[J]. 地理空间信息, 2010, 8(3): 134-137. DOI:10.3969/j.issn.1672-4623.2010.03.045 |
| [7] |
喻凯, 熊祥瑞, 高涛. 基于Hadoop的地图瓦片云存储系统的设计与实现[J]. 测绘地理信息, 2017, 42(3): 78-81. |
| [8] |
王飞, 蔡忠亮, 蒋子捷, 等. 移动环境下的矢量地图快速显示方法[J]. 测绘地理信息, 2018, 43(4): 111-115. |
| [9] |
何猛, 蔡忠亮, 任福. 移动地图中的矢量瓦片组织方法研究[J]. 测绘地理信息, 2015, 40(2): 74-76. |
| [10] |
滕文秀. 一种适用于移动终端的矢量瓦片生成方法研究[J]. 测绘与空间地理信息, 2018, 41(12): 98-100. |
2021, Vol. 46











