巴剑波,连凌,栾洁,徐雄利,卢姗姗
全球传染病疫情监测预警是我国军队成建制走出国门,有效履行维护我国全球权益、保护我国海外利益、践行联合国维和使命的重要工作,是维护全球部署中国军队官兵健康的重要一环。“全球传染病疫情网络数据监测系统”[1](http://27. 115.41.130:8888/OBN/)是本课题组自主建设、自动运维、实时更新的全球传染病监测预警系统。为更好地收集、整理和呈现全球传染病疫情数据,课题组采用了多种电子地图技术,以使该系统能更直观地呈现传染病疫情数据、系统用户数据等,使得该系统更受到用户的欢迎。
本文主要介绍“全球传染病疫情网络数据监测系统”中用到的3种不同电子地图的实现方案,并就其技术应用和实现进行讨论。
“全球传染病疫情网络数据监测系统”中包括了大量具有地理属性的数据,例如传染病疫情数据、传染病流行国家和地区、系统用户管理数据等。采用电子地图技术是直观呈现的理想方式。出于成本和安全性的考虑,本系统没有采用在地理信息系统(GIS)平台上构建系统的方式,而是利用互联网地图工具,如百度地图(免费版)、高德地图(免费版)、矢量地图(国家自然资源部提供)等,实现了地图在本系统中的应用。
系统采用前后端分离的架构。前端采用Html+JavaScript,后端采用Web API提供服务接口、数据库交互、数据运算,前端网页通过AJAX技术与后端API接口进行交互。
系统于2019年11月完成试运行并通过验收,到发稿时已正式运行1年。
1.1 系统数据管理的百度地图(免费版)实现方案 本系统中,需要实现某项系统管理数据的区域数量分析,开发团队利用百度地图API所提供的“地址解析”和“点聚合”两个功能进行二次开发[2]。
当本系统向百度地图的“地址解析”接口输入地址信息,例如XX市XX路XX号,百度地图将根据地址信息在图上进行标注。当图上的2个或2个以上的标注点发生重叠时,百度地图会自动将重叠的标注点替换为数字标注,在百度地图API中,此项功能称为“点聚合”。
可见,基于地址信息的数据管理和分析采用百度地图的“地址解析”和“点聚合”功能是一种理想的解决方案。
百度地图的二次开发有多种方式,由于本项目是一个基于PC浏览器场景的服务网站,故采用了JavaScript API方式。具体实现方法是在前端页面中引用百度开放平台提供的JavaScript脚本文件:http://api.map.baidu.com/api,并在参数中填写百度地图账户的密钥。在网站日访问量不是很高的情况下,使用百度地图应用程序编程接口(application programming interface,API)不需要额外付费。
引用上述脚本以后,即可以在本地页面脚本中使用百度地图的对象BMap实现其所提供的各种功能。
1.2 疫情数据热点分布的高德地图(免费版)实现方案 以2019年12月爆发的新型冠状病毒肺炎(COVID-19)疫情为例说明疫情数据热点分布的高德地图(免费版)实现方案。为了及时跟踪监测COVID-19疫情发展和进程,需要以热点图形式开发实现全球COVID-19疫情流行与分布的地图模块。按照系统设计,希望能够在电子地图上以不同半径的圆点显示COVID-19疫情在各个国家和地区确诊数量、规模和聚集程度。由于热点圆圈半径的大小与该地区COVID-19疫情确诊数量呈阶梯函数关系,且确诊病例并不流动或改变位置,因此,需要能准确并直观呈现COVID-19疫情的规模和聚集程度,而避免造成视觉错误信息或印象。在本系统中,采用高德地图API进行二次开发,利用其提供的“点动态样式”功能[3]。
当系统向高德地图接口输入经纬度和疫情数值,高德地图就能够直观地呈现与疫情数据相匹配的不同等级半径的热点图,使得系统用户能直观地了解疫情规模和聚集程度,有利于用户对COVID-19疫情的监测预警。在调用高德地图“点动态样式”接口时,需要预先设定输入数据的最小值、最大值,以及圆点半径的最小值、最大值,高德地图会自动进行数据匹配。由于高德地图的数据匹配是线性的,而实际应用中,用户并不希望点半径与数据值的关系是线性的,而是类似于抛物线的函数关系。因此,系统后台服务对数据进行了预处理,将COVID-19疫情确诊数据进行计算拟合后,再将修正后的数值输出给高德地图,从而实现了设计要求。
百度地图也有类似数据聚集展现功能,称为“热力图”,比较适合显示人流密度、车流密度等需要显示聚集程度的数据。
与百度地图类似,高德地图的二次开发也有多种方式,基于上一节中同样的理由,本系统选择了JavaScript API方式。方法是在前端页面中引用高德地图提供的JavaScript脚本文件:https://webapi.amap.com/maps,并在参数中填写高德地图账户的密钥。在网站日访问量不是很高的情况下,使用高德地图API不需要额外付费。
引用上述脚本以后,即可以在本地页面脚本中使用高德地图的对象AMap实现高德地图提供的各种功能。
可以发现,百度地图和高德地图的开发调用方式、接口函数的定义都是非常近似的。但就所提供的功能而言,两者各有特色,可根据实际应用场景进行选择。
1.3 全球疫情数据等级分布的国家行政区划矢量地图实现方案 为了能全景式展示流行于各个国家和地区的百余种传染病的流行态势和流行强度,需要在世界地图的缩放比例上,以各个国家和地区行政区划图为基础,根据各个国家和地区传染病疫情规模和数量进行流行分级,并通过不同颜色标注直观呈现。
无论是百度地图还是高德地图,都偏重于国内应用,对于世界地图的支持是比较弱的。因此在本系统中,开发团队自主编写了一系列JavaScript脚本,通过地图数据处理和动态着色、鼠标悬停等功能的开发,实现了全球疫情数据等级分布显示,见图1。
注:该电子地图采用国家自然资源部公开发行的标准矢量地图[GS(2016)1664号]。系统中每日监测到的传染病信息和数据可实时在该标准矢量地图上以国家色块和颜色表示。以各个国家各种传染病监测病例数之和为依据,以3、30、300、3 000为等级划分标准,分别采用嫩绿、草绿、蓝绿和墨绿颜色标识。该图能直观显示各国家和地区传染病发生及其发生强度和态势。图1 全球传染病数据等级分布的矢量图(2020-05-08系统截图)
当系统收集整理全球各种传染病爆发流行数据并生成表单数据后,在矢量地图的不同图层上将自动匹配国家和地区,并根据疫情流行强度的等级划分赋予不同的颜色标记,使得矢量地图上能显示出该疾病流行范围和流行强度,并能通过时间维度数据的改变直观地研判和预警传染病流行态势和发展趋势。
地图基础数据采用的是国家自然资源部官网(http://bzdt.ch.mnr.gov.cn/)提供的标准矢量地图[GS(2016)1664号]。尽管互联网上有很多现成的矢量地图基础数据或者脚本,但由于编写者多来自国外,故大多是以大西洋为中心,不符合我国的规定。更为严重的是,地图数据也往往与我国官方承认的国界存在不一致。为避免以上的问题,本系统使用了国家自然资源部公布的地图数据。
该官网提供的地图数据是EPS格式的矢量图形文件,网页无法显示。需要先将EPS转换为SVG格式。Internet Explorer 9,Edge,Firefox,Chrome,Opera和Safari都支持SVG,IE 8和更早期的版本都需要一个插件,如Adobe SVG浏览器,这是免费提供的。EPS转SVG的工具有很多,比如Adobe Illustrator。
从官网下载到的文件原图包含了很多图层,并且国家边界、海陆边界的描绘非常精细。地图文件的大小达到35 M字节。直接在网页上加载如此巨大的数据量,是无法达到令人满意的效果的。由于在本系统中,地图只是作为国家区块设色之用,不需要太详细的边界细节,因此,笔者对转换生成的SVG数据进行了图层的精简,和对次要节点的归并,大大压缩了数据量,随后,为每一个SVG绘制路径(Path)定义ID,与国家名称数组匹配。完成这些基础工作后,开发团队编写了JavaScript脚本,控制SVG的绘制、着色,鼠标悬停事件的挂载等等,即可实现了图1的效果。
在即将进入5G的时代,电子地图的使用越来越多地受到青睐,其直观的数据呈现也改善了用户体验。电子地图可以非常方便地对普通地图的内容进行任意形式的要素组合、拼接,形成新的地图,可以对电子地图进行任意比例尺、任意范围的绘图输出。“全球传染病疫情监测预警系统”中的几乎所有数据都具有地理属性,采用电子地图是比较理想的系统数据呈现方式,然而依据各个功能实现要求的不同,可以有不同电子地图选择方案。
通常有3种电子地图选用方式,其一,是系统建立在地理信息系统(geographic information system, GIS)平台上,比如约翰霍普金斯大学在ArcGIS平台上建立的全球COVID-19病例监测系统;其二,是采用外部地图工具,比如百度地图BMap、高德地图AMap、谷歌地图Google Map等;其三,是采用标准矢量地图进行绘制,自行编写实现代码。每种方式各有其优缺点和适用范围。专业的GIS系统,比如ArcGIS,具备强大的地理信息系统功能,是最简单快速的地图应用方式,但是新建系统将需要构建在专业GIS网站上,缺乏数据的保护性和系统的独立性;外部地图工具可以提供大量的API接口,而且今后还会开发出更多的数据接口,可应用范围将会有极大拓展,但是也存在地图缩放比例限制、行政区划数据不全、政治敏感等问题;矢量地图是比较灵活自主的应用方式,却也存在开发资源需求多、研发周期长、稳定性不佳等缺点。“全球传染病疫情网络数据监测系统”用于传染病监测预警科研使用,不涉及复杂和公开的数据呈现,由此选择利用外部地图工具和矢量地图的方式进行研发。
在软件系统开发中,电子地图的选择应慎重,需要符合原国土资源部国家测绘局关于《互联网地图服务专业标准》[4](国测管发[2010]14号)的要求,主要涉及国家主权信息准确性、行政区划标准规范性,以及世界地图必须以中国为中心等规定。因此,如采用电子地图开发软件系统,应优先选择国家自然资源部提供的各种比例尺电子地图,以及国产电子地图工具。