社区灾害风险地图制图工具设计与实现
2024-03-04蒋明浪郑美霞袁正平刘凌佳
陈 浩,蒋明浪,郑美霞,袁正平,刘凌佳*,郑 宇,陈 棋
(1.江西省应急管理科学研究院,330103,南昌;2.江西师范大学地理与环境学院,330022,南昌;3.江西省减灾备灾中心,330030,南昌)
0 引言
随着社会发展进程的不断加快,人口密度和流动性增加以及土地利用变化等因素,使得人们面临着越来越多的灾害风险。江西省位于长江中下游南岸,以鄱阳湖为底,形成了南窄北宽的盆状地形,全省水系发达,雨量充沛,边缘群山环绕,中部丘陵起伏,北部平原坦荡,森林覆盖率稳定在63.1%[1]。独特气候条件、地理环境、作物分布、江湖关系等因素导致江西省频繁发生自然灾害,尤其在多雨季节,山丘区常见山洪灾害、山体滑坡和泥石流。由于境内山地和丘陵植被丰富,加上高温少雨天气,导致森林火灾也极易发生[2]。此外,还存在安全生产、消防安全、公共安全等灾害风险,这些灾害风险对人民的生命和财产构成了极大的威胁。因此,如何有效地管理和减少灾害风险,成为了综合减灾管理的重要问题。
社区作为当前最小行政单元,也是灾害风险的主要发生地。因此,如何在基层社区建立起有效的灾害风险管理体系,提高基层社区的综合减灾水平和管理能力,已经成为当前综合减灾管理的重要任务。
近年来,灾害风险地图在综合减灾示范社区创建过程中越来越被重视,江西省在减灾示范单位创建工作创新性地提出了灾害风险管控的“一牌两图三清单”。其中,要求基层制作基于统一电子地理信息底图的自然灾害、安全生产及城镇消防等分类和多图叠加的风险隐患分布图,并将多个图层叠加制图。此外,还要结合本地应急避难场所建设情况和主要灾害类型,制作不同灾种的避险转移路线图,这两图也是灾害风险地图的具体表现形式。它可以帮助政府和居民了解社区所面临的灾害风险,提高对灾害的防范意识和应对能力。目前,市场上已经有一些灾害风险地图制图工具,如科立尔绘画(CorelDraw)、地理信息系统(MapGIS[3]、ArcGIS[4]、QGIS[5])、谷歌地球(Google Earth[6])等。尽管这些工具可以帮助用户制作灾害风险地图[7],但也存在一些问题。首先,使用这些工具需要用户具备一定的地理信息系统(GIS)和计算机科学知识,因此对于普通基层工作人员而言,操作难度较高;其次,由于缺乏GIS和设计专业知识的支持,社区灾害风险地图的制作主要依靠广告公司完成,导致制图不规范、标准难统一和不专业等问题[8]。由此,使得灾害风险地图的使用率并不高。
针对上述问题,亟需研发一种能够覆盖自然灾害、安全生产、消防安全、公共安全4种灾害风险类型的灾害风险图快速制图软件[9],以实现灾害风险直观化和规范化[10],并提升社区灾害风险地图制作的水平,为基层社区的综合减灾示范创建工作提供技术支撑。
综上所述,本文设计一种高效、精准、全面的社区灾害风险地图制图工具,有望提高基层灾害风险地图制图效率和质量,为基层防灾减灾工作提供有力的支持。
1 相关技术选择
1.1 “天地图”地图API
天地图是中国测绘地理信息局开发的地图服务平台,提供丰富的地图数据和地图服务,包括底图服务、影像服务、地名服务、地理编码服务等。其中,天地图地图API[11](Application Programming Interface)是一组基于WebGIS(Web Geographical Information System)技术的地图应用程序接口,可以在WebGIS应用程序中使用,提供了多种地图展示和交互功能,同时天地图地图API的数据更新频率较高,可以及时反映地图数据的变化。
1.2Cesium
Cesium是一款基于WebGL技术,用于构建高性能、高质量三维地球应用的开源虚拟地球软件开发包。Cesium提供了丰富的地球数据、地图服务和地理信息处理功能,支持多种数据格式,包括3D模型、点云、卫星影像等。Cesium还具有高度的可定制性和可扩展性,可以满足不同应用场景的需求。
1.3WebGIS
WebGIS是一种基于Web技术的地理信息系统,它将地图、数据、分析和可视化功能集成到一个统一的Web应用中,用户可以通过互联网或内部网络访问,支持多种设备和平台,方便用户获取、分析和共享地理信息。同时,WebGIS还具有空间分析和实时数据更新等特点,可以帮助用户进行地理信息分析和保持数据的准确性和时效性。
1.4Electron
Electron是一个开源的跨平台框架,可以使用HTML、CSS和JavaScript等Web技术构建桌面应用程序[12]。Electron基于Chromium和Node.js,可以将Web应用打包成本地应用,在Windows、macOS和Linux等多个平台上运行。Electron具有易于开发、快速迭代、跨平台等优点,可以帮助开发者快速构建出高效、可靠的桌面应用。
1.5ArcGISEngine
ArcGIS Engine是一种基于ArcGIS技术的开发平台,可以用于开发桌面GIS应用程序[12]。它具有丰富的GIS功能,可以定制化地开发出符合用户需求的应用程序。在灾害风险地图制图工具开发中,ArcGIS Engine可以提供强大的数据处理和分析功能,支持多种数据格式和数据源,能够实现复杂的地图制作和分析任务。但是,ArcGIS Engine需要购买许可证,开发和调试时间长,需要专业的开发技能和经验。
表1 技术实现方式对比
通过上述关键技术的优缺点进行分析以及从基层实际需求考虑[14-15],最后采用WebGIS+Electron的技术实现方式。基于Web技术实现桌面应用程序开发,使用Electron框架将Web应用程序打包成本地桌面应用程序。由于使用的是Electron框架,可以使用HTML、CSS和JavaScript等Web技术来开发应用程序,这使得开发更加容易和灵活。同时保持Web应用程序的跨平台特性,同时可以提供良好的用户体验和高效的地图制作能力,同时也可以提供高质量的地图输出[16]。
2 制图工具设计
2.1 功能需求分析
该工具旨在为用户提供一个简单易用的制图软件,以便快速制作灾害风险地图。根据基层制图现状分析,工具需要满足以下功能需求。
1)地图浏览功能:制图人员可以在地图上浏览不同地区的地图信息。
2)地图标绘功能:制图人员可以根据自己的需求,标绘不同的自然灾害、安全生产、消防安全、公共安全等风险隐患信息;避难场所、医院、超市等减灾资源信息。
3)风险等级标绘功能:制图人员可以对地图上风险隐患区域的等级进行区别标绘,以便更好地了解风险隐患信息。
4)数据编辑功能:制图人员可以对地图上的数据进行编辑,以便更好地展示地图信息。
5)数据导入导出功能:制图人员可以对制图数据进行保存成文件,方便多人之间协同制作。
6)地图导出功能:用户可以将地图导出成大尺寸的图片,进行打印,以便更好地进行防灾减灾宣传教育工作。
2.2 总体架构
该工具的后端技术采用Node.js,使用Express框架实现。前端技术包括HTML、CSS和JavaScript,同时使用开源的Cesium三维地图引擎作为地图展示和交互的主要工具。桌面客户端打包工具为Electron,可将前端代码打包成可执行文件,方便用户在本地运行和使用。数据库采用JSON文本形式进行存储,方便数据的读取和修改。影像底图方面,该系统调用了天地图和谷歌地图影像,可根据用户需求进行切换。前端、后端和数据库之间通过HTTP协议进行通信。同时,该系统还依赖一些第三方库和工具,如Bootstrap框架、jQuery库、Layui前端UI组件库等。总体架构分为三层:表现层、逻辑层、数据层,三层架构便于软件的维护和管理,软件总体架构如图1所示。
图1 社区灾害风险地图制图工具总体架构图
表现层通过Http-Server搭建本地Web服务,使得WebGIS应用程序可以在本地运行,再通过Electron框架将应用程序打包成桌面客户端。借助天地图地图底图对社区建筑物、道路、河流、水库等基础地理信息进行展示,制图人员通过在基础地图底图上进行风险隐患、减灾资源等信息的标绘,完成灾害风险地图制作。
逻辑层通过天地图API For JavaScript完成对天地图地图底图的调取,通过Cesium三维地图引擎完成对二三维地图的交互功能开发,通过Html/Css/JavaScript前端技术完成制图操作及数据交互功能的开发。
数据层将天地图图层数据与高德地图地名接口数据作为基础地理信息数据源,通过浏览器缓存数据库与GeoJson文本数据对制图过程中的数据进行存储和交互。
2.3 数据设计
数据在整个制图工具中处于核心地位,数据设计包括数据采集和数据库设计。根据工具开发的目的和编程要求,社区灾害风险地图制作过程中需要采集的数据主要有社区基本信息数据、建筑设施数据、风险隐患数据、减灾资源数据、历史灾害数据等,具体数据的内容和格式,见表2。
表2 数据采集类型
该工具数据库设计主要包括2个基础地理信息数据源:天地图图层数据和高德地图地名接口数据。这2个数据源提供了丰富的地理信息数据,包括地图图层、地名、地理坐标等,可以满足地图制图工具的基础数据需求。同时,该工具通过浏览器缓存数据库和GeoJson文本数据对制图过程中的数据进行存储和交互,可以提高数据的读写效率和响应速度以及更加高效地处理和管理地理信息数据,实现高质量的地图制作。
2.4 功能设计
本工具使用Visual Studio Code为开发工具,采用Javascript、Css、Html等前端语言进行编程。通过Javascript实现地图操作、信息标绘、整饰编辑、地图导出等相关模块功能开发,具体功能结构如图2所示。
图2 社区灾害风险地图制图工具功能结构图
1)地图基本操作:包括地图加载、kml矢量数据导入、地图拖动/缩放/旋转、指北针、比例尺等功能。
2)空间量测:包括多点之间距离量测、区域面积量测。
3)底图切换:包括天地图卫星图、天地图道路标识、天地图矢量地图等WMTS服务类地图加载和切换。
4)二三维切换:30M高程地形切片数据加载支持地图二三维切换。
5)地名搜索:对接高德地图API实现地名快速搜索功能。
6)点线面标绘:通过内置的符号库快速地对风险隐患、建筑设施、减灾资源等点线面信息进行标绘。
7)标绘编辑:对已标绘的信息进行编辑、删除操作。支持区域、线条、点、文字和图标等标绘内容的大小、边框属性、填充类型、透明度、备注信息等内容进行编辑。
8)标绘分组:对标绘内容进行分组管理,不同专题的地图如社区风险隐患分布图、避险转移路线图可以分组管理。
9)标绘保存:对标绘内容以GeoJson文件形式保存,多人协作时可直接导入文件进行编辑。
10)图名/落款编辑:设置灾害风险地图的图名和制图单位等落款信息。
11)指北针编辑:设置灾害风险地图的指北针样式。
12)比例尺编辑:设置灾害风险地图的比例尺样式。
13)图例编辑:设置灾害风险地图图例,支持图例排版以及图例图标的增加、删除、排序。
14)图幅设置:根据社区边界形状设置灾害风险地图是横版或竖版图幅。
15)DPI设置:设置灾害风险地图导出图片的分辨率,默认300DPI。
16)地图导出:将编辑好的地图导出为图片,便于分享和打印。
3 制图工具功能实现
通过JavaScript编程语言实现制图工具相关功能模块,包括地图操作模块、信息标绘模块、整饰编辑模块和地图出图模块4部分。地图操作模块实现基本地图操作如地图缩放、旋转、底图切换、二三维切换、地名搜索、矢量文件加载和空间量测等功能,如图3所示。信息标绘模块实现制图主图信息的点、线、面要素标绘功能,如图4所示。整饰编辑模块实现地图图幅设置以及图名、落款信息、比例尺、指北针、图例等整饰编辑功能,如图5所示。地图出图模块实现地图导出成打印图件的功能,成果图如图6所示。
图3 社区灾害风险地图制图工具地图操作界面
图4 社区灾害风险地图制图工具信息标绘界面
图5 社区灾害风险地图制图工具整饰编辑界面
图6 社区灾害风险地图制图工具成果图件
为了更方便基层工作人员使用,在实现制图功能的基础上,内置了红、橙、黄、蓝4分等级的自然灾害、安全生产、消防安全、公共安全各类灾害类型常见的风险隐患类标绘图标104个;学校、加油站、高层建筑等公共服务设施标绘图标10个;避难场所、物资仓库、消防站等减灾资源类标绘图标13个,同时为方便地图的排版编辑,内置了包含指北针、比例尺、图例等默认设置的横版和竖版图幅的整饰模板,实现一键出图。提高了风险灾害地图的制图质量和效率。
4 结语
社区灾害风险地图制图工具是专为解决现有社区灾害类地图制作方面存在的不足而设计开发的一款便捷的地图快速制图工具,以解决现有社区灾害风险地图制图存在的问题,提高地图制作的效率和质量。相比于传统的地图制图软件,其主要有如下优势。
1)良好的用户体验:通过优化地图制作的交互过程,使用户无需具有专业的地理信息知识,便能够轻松准确完成地图制作,且对地图的编辑和修改更加直观。
2)高效的地图制作能力:通过优化地图制作的流程,简化了数据采集、转换、录入等环节,同时内置了常用的标绘符号库和地图模板,提高了地图制作的效率。
3)高质量的地图制作能力:通过对地图制作的标准进行规范化、流程化,使普通用户具备专业的地图制作能力,保证地图制作的质量和准确性。
在下一步研究中,将持续完善该工具的功能,进一步优化其性能和用户体验。同时,还将探索更便捷规范的地图制作方法,以满足县、乡镇(街道)等不同创建单位的需求。通过持续的努力和创新,社区灾害风险地图制图工具将成为更多的基层综合减灾示范创建单位的制图利器,为社区灾害风险管理提供更好的支持。