我国是全球地震发生频率较高、损失较大的国家之一,其中,华北地区地震发生率较高,损失较重,1976年唐山7.8级地震、1966年邢台6.8级地震、1998年张北6.2级地震等,均造成了严重的人员伤亡和财产损失(马旭东等,2018)。利用应急避难场所可在地震、洪水、爆炸、疫情等突发公共事件发生后,对灾民进行临时安置,这对减轻突发性事件引起的社会危害具有重要作用(苏建锋等,2017)。
石家庄市作为河北省省会,现有应急避难场所数量不足、分布不均(杨凡,2016)。为推进应急避难场所建设,进一步提高针对突发性事件的应对能力,计划加强应急避难场所规划,充分利用公园、广场、校园、体育馆等宽阔地区建设应急避难场所,以保证2020年应急避难场所的规划布局和数量能满足城市居民需求。应急避难场所建成后,为了方便公众了解应急避难场所分布和基本功能,亟待建设一套应急避难场所管理系统,以使公众随时可以查询了解应急避难场所信息,最大限度地发挥应急避难场所的作用,提高应急时的公众服务能力。
1 研究现状 1.1 应急避难场所信息管理系统发展过程杨文斌等(2004)阐述了建设应急避难场所的重要性,并提出了应急避难场所的规划原则和技术要求,即应急避难场所面积应大于10 000 m2,至少有2条应急疏散通道,应具备供水、用电、厕所等功能,建设应急避难场所应做到平灾结合,可将公园、广场、学校操场等作为避难场所。刘铁民等(2005)指出,信息系统无论在平常时期还是应急时期都可以发挥必不可少的保障作用,信息化、数字化可以做到信息互联互通。杨志国等(2011)开发了基于ArcGIS Server的应急避难场所信息管理平台,系统为B/S与C/S混合架构,使用C语言编写,利用该系统可查询用户附近的避难场所、医院、警察局等信息,实现了避难场所信息的统计分析功能,为发生灾害后及时救援、减轻损失提供了数据支持。周浩(2015)基于百度地图API实现了应急避难场所位置、信息的展示功能,通过经纬度将避难场所标注在地图中,当鼠标经过时地图显示避难场所名称、级别、经纬度等信息。徐丹等(2016)实现了标注显示应急避难场所位置,用户可通过搜索选定起始位置,并查询起始位置到标注位置的交通换乘路线规划。苏建锋等(2017)基于Google Map API实现了应急避难场所位置标注及信息展示功能,以及路线规划功能。
1.2 系统概述及特点应急避难场所信息管理系统为B/S架构,基于百度地图API接口及MySQL数据库,使用PHP及JavaScript两种语言,实现了避难场所及医院信息的动态存储及位置标注,系统还具有地点搜索、标注任意点、路线规划等功能,功能解决方案详见第3节“系统主要功能实现”。
路线规划功能对于避难场所管理系统尤为重要,徐丹等(2016)、苏建锋等(2017)仅提及实现了公交换乘路线规划及简单路线规划功能,并未提供解决方案及代码。本系统可提供用时最短的行车路线及步行距离最近的路线,第3.5节介绍了该功能的解决方案及详细代码。此外,之前的起点通过位置搜索进行设定,但实际情况中部分地点无法通过搜索获得准确位置,故本系统在搜索地点之外还提供了点击右键将任意点设置为起点的功能。系统还实现了数据的动态存储,将数据存储在MySQL数据库中,简化了数据更新、维护工作。
2 系统结构设计 2.1 系统总体框架应急避难场所管理系统分为前端和后端2个模块,系统总体架构如图 1所示。系统采用B/S架构,使用PHP、JavaScript等语言,后台数据存储在MySQL数据库,实现了地图可视化及数据动态管理。前端模块基于百度地图API接口,主要负责地图展示及与用户之间的交互;后端模块主要负责相关数据的管理与存储。
系统前端模块包含系统界面、系统管理和数据传输等3个子模块。系统界面分为用户操作和地图展示2部分。系统管理主要负责与用户的交互,包含地点搜索、医院及避难场所标注、路线规划等功能。数据传输负责前端模块与后端数据库之间的数据交换,包含数据的请求和接收,以满足前端模块中用户的各种数据需求。后端模块主要是对避难场所和医院数据进行管理,包含数据的查询、新增、删除、编辑等功能,以实现数据动态管理。
2.2 系统功能设计应急避难场所管理系统的用户分为一般用户和管理员(图 2)。系统初始界面中自动标注出石家庄市区所有医院及避难场所的位置(图 3),一般用户可搜索并标注任意地点并获取任意地点的经纬度坐标,通过坐标可规划该点到任意避难场所或医院的行车及步行路线;避难场所查询及医院查询功能可展示所有避难场所及医院的位置、面积、可容纳人数等信息。以上功能可使用户对石家庄市区的医院及避难场所有更深入了解,更好地发挥避难场所的作用。系统管理员可对系统前端功能模块及后台数据进行维护,使数据信息及时得到更新。具体功能结构见图 2。
应急避难场所管理系统的服务器部署在1台Web服务器上,通过调用百度地图API来创建地图信息,可为局域网用户和远程用户提供数据服务,局域网与外网直接建立防火墙(图 4)。
使用百度地图API需到百度地图开放平台申请专用的密钥(AK),在使用百度地图服务之前,需要首先输入以下代码
< script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥" > < /script >
引入密钥信息后,即可创建地图。系统中心点、显示范围等信息均通过经纬度坐标进行控制,map.centerAndZoom()设置初始中心点及地图级别,map.enableScrollWheelZoom(true)打开通过滚轮缩放地图,BMap.Bounds()可通过输入对角线经纬度坐标控制地图显示范围。
系统操作页面分为标题区、操作区和地图显示区等3部分。#head为标题区,位于页面最上部分;#NavList为操作区;#allmap为地图显示区。
3.2 创建地图标注系统在界面使用绿色图标标注出了所有应急避难场所,用红色图标标注出了医院,采用不同图标进行标注,可使相关信息显示得更清晰、直观,创建地图标注主要代码如下:
//创建标注
for(var h=0;h < data_infoH.length; h++){
var iconsH = "pic/hospital.png";//标注图片位置
map.addOverlay(markerH);//在地图中显示标注
}
避难场所和医院的图片均存储在pic文件夹下,经过对图片位置、尺寸等信息进行设置后,可通过map.addOverlay()将标注显示在地图中。
3.3 MySQL数据库连接系统中应急避难场所及医院数据均在MySQL数据库中存储,利用PHP语言对后台数据进行检索及调用,实现了数据的动态存储。调用MySQL数据库数据的主要代码如下
< ?php
$db="database"; //数据库名称
$link = mysql_connect('localhost', 'username', 'password'); //数据库位置、用户名、密码
mysql_close($link); ? > //连接数据库
在$db后输入数据库名称,$link后输入数据库位置、用户名及密码,即可与后台数据进行传输,实现数据的调用,对后台SQL数据库中数据进行显示、添加、筛选、更新等操作。医院及避难场所名称、经纬度、面积、可容纳人数等信息分别存储在hospital及bncs表中,地点名称为主键(primary key),数据存储类型为varchar。以避难场所平安公园为例,SQL数据库生产数据代码如下
INSERTINTO'bncs'('No', 'Name', 'LongE', 'LatinN', 'Area', 'Capacity', 'ReliefArea', 'Info')VALUES('1', '平安公园', '114.509226', '38.043152', '3.1', '3', '1', ");
3.4 地点搜索本系统可通过输入地点名称进行搜索,用户可在搜索到准确位置后将其设置为起点,地点搜索功能可简化查找地点难度,主要代码如下
function search(){
var local = new BMap.LocalSearch(‘石家庄',{renderOptions: {map: map} });
//在地图中搜索,限制在石家庄范围内
local.search(document.getElementById("search").value);
//搜索search文本框里输入的位置信息
}
后台通过document.getElementById()功能,获取用户在文本框内输入的文本信息;使用BMap.LocalSearch(location, {})实现位置搜索功能;location控制搜索范围,系统设置搜索范围为石家庄地区。
3.5 获取地点位置坐标系统路线规划功能中的起始点均基于地点坐标进行操作,起点可选取地图中任意位置,在选中位置处点击鼠标右键即可获得坐标;终点为任意避难场所或医院,通过点击标注获得坐标。获得点坐标主要代码如下
//获取位置坐标,设置起点、终点
function openInfo(){
var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
// p.getPosition().lng为经度,p.getPosition().lat为纬度
document.all("Zlongitude").value=p.getPosition().lng;
//将Zlongitude中的值赋予p.getPosition().lng
document.all("Zlatitude").value=p.getPosition().lat;
//将Zlatitude中的值赋予p.getPosition().lat
}
点击鼠标右键后,point.lng和point.lat可存储该位置经纬度信息,通过document.all()将获取的坐标信息传输至相应位置,将该点设置为起点坐标,为规划路线时的调用做好准备。
addClickHandler(x, y)功能可在点击医院或避难场所标注时传输该位置经纬度信息,再通过getPosition().lng和getPosition().lat分别获取传输的经纬度信息,并将其设置为终点坐标。
3.6 路线规划系统可规划地图中任意一点至所选避难场所或医院的驾车及步行路线,起点坐标通过在该点点击鼠标右键获得,终点坐标通过点击所选避难场所或医院图标获得,显示界面见图 5,主要代码如下
//规划驾车路线
function route() {
var myP1 = new BMap.Point(document.getElementById("longitude").value, document.getElementById("latitude").value); //起点为myP1,经纬度格式
var myP2 = new BMap.Point(document.getElementById("Zlongitude").value, document.getElementById("Zlatitude").value); //终点为myP2,经纬度格式
var driving =
new BMap.DrivingRoute(map, {renderOptions: {map: map, autoViewport: true}});
//驾车实例
driving.search(myP1, myP2); //以起点和终点坐标为基准,规划行车路线
//实现步行路线规划代码为walking.search(起点, 终点);
}
//获取路程距离
var searchComplete = function (results){
transit.search(myP1, myP2);//设置起始点位置
output += plan.getDistance(true) + "\n"; //显示距离
}
变量myP1为起点坐标,变量myP2为终点坐标,路线规划模块可通过getDistance()功能后台获取起始点间的距离,用户可选择距离最近的避难场所。确定起始点后,通过后台调取百度地图API数据进行计算,driving.search()可提供用时最少行车路线,walking.search()可提供用时最少的步行路线。
4 结束语本文使用JavaScript、PHP、MySQL数据库等技术,以百度地图API接口为平台,建设B/S架构的石家庄市应急避难场所信息管理系统。MySQL数据库可实现数据的动态存储,便于日后对数据的更新和维护,百度地图API提供免费的地图服务并即时更新,可提供最新的地图数据。该系统已在局域网进行内部测试,目前系统运行良好,操作简单快捷,达到了最初的设计需求,测试完毕后会逐步投入使用。系统用户为普通居民,通过全方位展示石家庄市避难场所及医院信息,可使用户随时了解应急避难场所信息及行驶、步行路线,在突发事件发生后可快速、高效地协助疏散居民,最大程度地减轻灾难损失。
刘铁民, 李湖生, 邓云峰. 2005. 突发公共事件应急信息系统平战结合[J]. 中国安全生产科学技术, 1(5): 3-7. |
马旭东, 刘志辉, 刘晓丹, 等. 2018. 怀涿盆地农村房屋抗震性能调查与分析[J]. 高原地震, 30(4): 63-70. DOI:10.3969/j.issn.1005-586X.2018.04.012 |
苏建锋, 薄万举. 2017. 城市地震应急避难场所展示系统的设计与实现[J]. 震灾防御技术, 12(2): 392-398. |
徐丹, 韩贞辉, 张诺男, 等. 2016. 地震应急避难场所信息管理系统设计[J]. 地震地磁观测与研究, 37(4): 176-180. |
杨凡. 2016. 城市应急避难场所灾民临时安置能力评估——以石家庄市为例[J]. 华北地震科学, 34(4): 77-83. DOI:10.3969/j.issn.1003-1375.2016.04.013 |
杨文斌, 韩世文, 张敬军, 等. 2004. 地震应急避难场所的规划建设与城市防灾[J]. 自然灾害学报, 13(1): 126-131. DOI:10.3969/j.issn.1004-4574.2004.01.020 |
杨志国, 姜亢, 邹湘凯, 等. 2011. 基于Arcgis Server与ASP.Net Ajax的北京市应急避难场所信息管理平台设计与实现[J]. 中国安全生产科学技术, 7(7): 52-56. |
周浩. 2015. 基于百度地图API地震应急避难场所信息地图化动态显示的实现[J]. 地震工程学报, 37(Z1): 114-118. DOI:10.3969/j.issn.1000-0844.2015.z1.022 |