• ISSN 1673-5722
  • CN 11-5429/P

基于微信与LBS云的应急避难场所信息服务系统研究及实现

贾宁 韶丹 孙哲 郭建兴

贾宁,韶丹,孙哲,郭建兴,2023. 基于微信与LBS云的应急避难场所信息服务系统研究及实现. 震灾防御技术,18(1):194−202. doi:10.11899/zzfy20230121. doi: 10.11899/zzfy20230121
引用本文: 贾宁,韶丹,孙哲,郭建兴,2023. 基于微信与LBS云的应急避难场所信息服务系统研究及实现. 震灾防御技术,18(1):194−202. doi:10.11899/zzfy20230121. doi: 10.11899/zzfy20230121
Jia Ning, Shao Dan, Sun Zhe, Guo Jianxing. Research and Implementation of Emergency Shelter Information Service System Based on WeChat and LBS Cloud[J]. Technology for Earthquake Disaster Prevention, 2023, 18(1): 194-202. doi: 10.11899/zzfy20230121
Citation: Jia Ning, Shao Dan, Sun Zhe, Guo Jianxing. Research and Implementation of Emergency Shelter Information Service System Based on WeChat and LBS Cloud[J]. Technology for Earthquake Disaster Prevention, 2023, 18(1): 194-202. doi: 10.11899/zzfy20230121

基于微信与LBS云的应急避难场所信息服务系统研究及实现

doi: 10.11899/zzfy20230121
基金项目: 陕西地震安全与公共服务能力提升工程;中国地震局地震科技星火计划项目(XH18045Y);陕西省地震局启航与创新基金课题(QC201925)
详细信息
    作者简介:

    贾宁,男,生于1982年。高级工程师。主要从事地震信息服务技术研究。E-mail:30240787@qq.com

Research and Implementation of Emergency Shelter Information Service System Based on WeChat and LBS Cloud

  • 摘要: 为解决一直以来应急避难场所信息服务形式单一化、用户体验不佳、软件不易推广的现状,陕西省地震局结合微信这一在移动通讯领域得到广泛应用的即时通信平台和百度地图高性能集群式LBS云技术,设计并实现了一套应急避难场所信息服务系统。本文详细阐述了系统架构以及用户信息管理和位置上报、应急避难场所云数据存储和检索、避难路线规划导航等关键技术实现思路和方法。该系统具有使用便捷、易于推广、云计算性能高、人性化设计等优势,目前,已成为陕西省地震局最为重要的信息服务平台,为公众灾后紧急疏散提供了便利,提升了地震部门信息服务的有效性和针对性,为防震减灾信息化服务提供了新的思路和方法。
  • 应急避难场所作为现代城市重要的基础设施,建设规模随着社会经济发展地不断扩大,在地震应急中扮演着越来越重要的角色(魏本勇等,2019李自芮等,2020)。但若是绝大多数公众不熟悉甚至不知道周边避难场所的情况,应急避难场所就无法充分发挥作用(尹志军等,2020)。

    多年以来,应急避难场所信息服务系统多为单机或网站架构系统,如杨志国等(2011)设计的北京市应急避难场所信息管理平台为基于ArcGIS Engine的单机版C/S架构系统,信息发布内容主要是在地图上展示避难场所位置,形式较为单一;苏建锋等(2017)基于Google地图设计实现的城市地震应急避难场所展示系统为B/S架构,用户在进行周边避难场所查询时必须在图上搜索自身所处位置。此类系统无法获得用户的精准定位,互动性不强,操作设置繁琐,用户体验较差。随着移动智能手机的普及,手机APP成为了信息服务的一大载体(崔满丰等,2020)。地震行业对基于智能手机的APP进行了探索,如赵士达等(2014)使用Android系统实现了避难场所基本信息查询。由于手机平台的多样性,这类APP覆盖用户范围有限,使用前需下载安装,同时破坏性地震作为小概率事件在平时往往不能引起社会公众的高度关注,因此APP不易推广,这为震后指导公众进行应急疏散带来困难(郭红梅等,2019董丽娜等,2020)。

    因此,本文依托网络新媒体快速传播技术的发展和微信用户的不断增长,结合微信与LBS云进行应急避难场所信息服务技术研究及实现,以更为贴近社会公众的方式进行应急避难场所日常宣传和震后快速指引,能够迅速扩大信息服务的用户规模,极大提升避难场所信息服务效率。

    应急避难场所信息服务系统基于微信公众平台开发,主要包括微信信息交互、用户信息管理和应急避难场所管理3个模块。微信信息交互模块主要实现微信用户所发送信息的处理和响应,包括微信请求消息、事件、响应消息的识别、处理、封装和传递;用户信息管理模块主要实现微信用户标识、地区、分组、订阅状态等信息的获取和管理,对用户精确地理位置进行解析,以便提供精准地图服务;应急避难场所管理模块主要实现避难场所数据的云存储、云查询和云展示,从而实现应急避难场所周边检索、路线规划、聚合展示以及详情信息查询等功能。系统功能架构图如图1所示。

    图 1  系统功能架构图
    Figure 1.  System function architecture diagram
    2.1.1   微信消息处理

    用户关注微信公众号后,即可使用应急避难场所信息服务系统。微信信息交互是该系统的基础,因此设计微信消息处理子模块,完成消息的接收、处理及响应。具体处理流程如下:(1)用户通过移动端向微信公众号发送消息,微信服务器接受到消息后,先进行信息的XML封装,再建立HTTP链接,通过POST方式将封装好的数据包发送到开发者在平台配置接口中预设的公众号服务器URL地址;(2)微信服务器将消息传递给公众号服务器后,由公众号服务器的程序模块进行业务处理,并将结果返回给微信服务器;(3)微信服务器将结果消息经过公众号转发给原用户。微信消息交互流程如图2所示。

    图 2  微信消息交互流程
    Figure 2.  WeChat message interaction process
    2.1.2   微信自定义菜单

    用户通过微信公众号菜单可进行应急避难场所的查询和浏览,本系统设计了一级菜单“避难场所”和二级菜单“避难规划”、“场所浏览”,点击相应菜单可完成信息交互。微信自定义菜单步骤如下:(1)在微信平台查询开发系统的Appid(唯一凭证)和Appsecret(密钥),配置后系统可通过HTTPS链接访问微信,获取Access_Token(访问接口凭证);(2)封装菜单结构信息Json数据包,主要包含菜单类型(Type)、显示内容(Name)、参数值(Key)、访问链接(Url)等参数;(3)通过菜单创建接口,向微信服务器发送菜单结构信息和Access_Token,系统验证后便可创建自定义菜单。

    2.2.1   用户基本信息获取

    该系统基于微信开放平台进行开发,信息服务需首先获取用户基本信息。用户关注微信公众号后,公众号服务器即加密生成1个唯一的OpenID(同1个用户对应不同公众号显示不同的OpenID),公众号服务器通过OpenID唯一标识1个用户(喻迎春等,2020)。系统向服务器发送HTTPS GET请求链接和用户OpenID标识号,通过用户基本信息获取接口https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN,可获取用户昵称(nickname)、性别(sex)、所属国家(country)、所在省份(province)、所在城市(city)、用户头像(headimgurl)以及关注状态(subscribe)和关注时间(subscribe_time)等信息。若用户未关注或取消关注微信公众号,则subscribe值为0;若用户已关注微信公众号,则subscribe值为1。用户基本信息的获取,有助于系统针对不同类别的用户进行针对性服务。

    2.2.2   用户地理位置获取

    避难场所信息服务需要获取用户地理位置,通过微信提供的开放地理位置接口功能,可以快速获取用户具体位置。系统可通过2种方式进行用户地理位置获取,用户可在微信公众号“设置”选项里选择是否开启“提供位置信息”选项,具体如下:

    (1)用户“提供位置信息”选项为开启状态。微信公众号平台地理位置功能默认为关闭,系统开发者开启后需要选择地理位置获取的2种模式,一是用户每次打开微信公众号上报1次地理位置;二是用户和服务器交互后每5 s上报1次地理位置,后者跟踪用户位置变化更为精准。系统对用户上报的XML格式消息报文进行解析,通过微信消息类型(MsgType)参数值“event”和微信消息事件类型(Event)参数值“LOCATION”,即可判断此消息为地理位置消息,通过纬度(Latitude)和经度(Longitude)等参数获取用户具体位置。

    (2)用户“提供位置信息”选项为关闭状态。当用户由于个人隐私保护或手机上网流量控制等方面的原因,不愿进行位置信息的实时上报时,系统设计了单独上报地理位置菜单。该菜单为Button类型,点击后系统会调用地理位置选择工具,用户在地图上选择对应位置并发送给微信服务器,服务器判断微信消息事件类型(Event)参数值为位置推送事件(location_select),并选择对应程序进行用户位置信息处理,获取纬度(Location_X)、经度(Location_Y)、位置信息(Label)、地名信息(Poiname)等位置信息参数。

    2.2.3   用户地理坐标转换

    用户地理位置经纬度坐标使用WGS-84坐标系(大地坐标系),而百度地图为BD-09坐标系,若直接将用户经纬度坐标显示在百度地图上,会出现非线性偏差,误差从几十米至几百米不等(罗丹,2020)。当用户在使用该系统查询周边避难场所时,系统可能会误将用户位置定位在附近其他地点,这种偏差会造成较差的用户体验,因此需要将用户经纬度坐标由WGS-84坐标系(大地坐标系)转换为百度地图BD-09坐标系。

    百度地图提供了API实现坐标转换,示例如下:

    http://api.map.baidu.com/geoconv/v1/?coords=108.34892734521,34.125429778924&from=1&to=5&ak=你申请的密钥。

    其中,coords参数为要转换的原始坐标,经纬度之间“,”分割,多个坐标点之间以“;”分割;“ak”为开发人员申请的密钥;核心参数为“from”参数和“to”参数,“from”参数为源坐标类型,示例中参数值为1,代表WGS-84坐标,“to”参数为目标转换后的坐标类型,示例中参数值为5,代表bd09 ll百度地图经纬度坐标。

    系统将返回Json数据用于经纬度解析,参数中经度(x)、纬度(y)均经过Base64编码,因此系统需对返回数据进行Base64解码,解码后将其存储于用户数据库中,用户每次查询应急避难场所信息时便可通过用户精准位置信息进行个性化服务。

    2.3.1   应急避难场所云存储

    在LBS云数据管理平台,可以进行数据表的创建、管理和发布。LBS云数据包括主键(geotable_id)、名称(title)、地址(address)、经度(longitude)、纬度(latitude)等基本字段,在本系统中新增避难场所编号(b_id)、级别(level)、总面积(area_total)、容纳人数(people_num)等自定义字段。使用人工输入或csv格式数据文件批量导入方式,将云数据发布至LBS云检索后即可通过云服务API实现对该类数据的查询检索。

    通过云存储API和LBS云数据管理平台进行应急避难场所扩展字段的定义和存储,无需部署本地服务器,即可实现LBS云每秒万级并发读写的高性能地图服务,节省了开发成本。数据管理平台具有自动索引功能,可进行数值区间的筛选、排序,并可在线浏览地图。LBS云数据管理界面如图3所示。

    图 3  LBS云数据管理界面
    Figure 3.  LBS cloud data management interface

    该系统可实现避难场所数据新增、修改、删除等基本功能,也可实现避难场所的批量导入和更新。

    2.3.2   应急避难场所云查询

    (1)周边场所检索

    LBS云能提供区域检索POI服务、POI详情服务、信息检索服务和指定目标详情服务等,其中,区域检索POI服务提供了圆形周边区域检索、行政区划本地区域检索、矩形区域检索和地点详情检索4种区域检索方法(陆霞,2020)。

    本系统使用了圆形周边区域检索,以微信用户所在位置为圆心(圆心由location参数设定),搜索周边5公里范围内(半径由radius参数设定)的应急避难场所。检索支持多种参数,例如:标签参数(tags)可指定标签信息的筛选;排序字段参数(sortby)可支持最多16个字段的排序,预设distance为距离排序,关键字1为升序,−1为降序;过滤条件参数(filter)对指定数据进行连续区间和离散区间的数据筛选;坐标系参数(coord_type)进行百度坐标系和墨卡托坐标系之间的转换。在调用接口前,需对参数query进行URL编码,编码方式为UTF-8,在Java中可以使用URIEncoder.encode( )进行编码,然后使用程序对返回的数据进行解析,即可获得查询信息。

    云检索类核心代码示例如下:

    public static List<BaiduPlace> searchPlace(String query, String lng, String lat) throws Exception {

       // 拼装请求地址

        String requestUrl = "http://api.map.baidu.com/geosearch/v3/nearby? ak=rhGs1fGGDtD94IeZruYKo3Iz&geotable_id=177902&location=LNG,LAT&radius=50000&tags=QUERY&sortby=distance:1";

        requestUrl = requestUrl.replace("QUERY", URLEncoder.encode(query, "UTF-8"));

        requestUrl = requestUrl.replace("LAT", lat);

        requestUrl = requestUrl.replace("LNG", lng);

       // 调用LBS云API圆形区域检索

        String respJson = httpRequest(requestUrl);

       // 解析返回的Json数据

        List<BaiduPlace> placeList = parsePlaceJson(respJson);

       return placeList;

      }

    通过LBS云高性能大数据计算集群,实现云端应急避难场所数据实时检索,50万以内数据检索时间小于1秒。该系统可以根据用户位置检索出距离用户最近的应急避难场所,点击对应的避难场所链接可获取路径规划导航和场所详情信息,如图4所示。

    图 4  周边应急避难场所查询结果
    Figure 4.  Query results of surrounding emergency shelters

    (2)避难路线规划与导航

    避难路线规划与导航功能调用了百度地图JavaScript API进行设计,其具有互动性强、功能完善、加载方便等优势,通过<meta>标签能够使地图更好地展示在手机浏览器上,适合移动端地图展示。百度地图JavaScript API在页面中使用标签<script>进行引入,导航模块使用div元素新建id为“r-result”的地图模块展示在HTML页面上。导航界面使用关键词new创建地图实例,并且使用BMap.Map( )构造方法指定地图容器的id。在初始化地图实例后,添加NavigationControl地图缩放控件,使用BMap.WalkingRoute类获取用户位置和避难场所之间的步行路线规划方案,调用search( )方法获取步行导航检索。该方法有start和end 2个参数,参数start表示起点,可以是关键字、经纬度坐标点或LocalSerarchPoi实例,而参数end表示终点,取值类型与start相对应。路线规划和步行导航界面如图5所示。

    图 5  应急避难场所步行导航规划
    Figure 5.  Pedestrian navigation planning for emergency shelters
    2.3.3   应急避难场所云展示

    (1)云麻点数据展示

    通过LBS云海量数据渲染引擎,可以高速实现云麻点数据的地图加载和显示。创建地图实例,使用centerAndZoom函数初始化地图并设置地图中心和缩放级别,通过addControl添加BMap.NavigationControl等缩放平移控件。使用BMap.CustomLayer新建用户自定义图层,设置云数据表编号(geotableId)、检索关键字(q)、标签(tags)、过滤条件(filter)等参数进行云数据加载和展示。

    (2)点聚合优化展示

    通过重构、优化点聚合算法,实现应急避难场所点集合显示,当用户放大比例尺,最终会显示单一避难场所信息,如图6所示。

    图 6  LBS云端数据的点聚合显示
    Figure 6.  Point aggregation display of LBS cloud data

    重构点聚合算法使用BMapLib.MarkerClusterer类实现,将所有应急避难场所作为点,形成聚合目标标记数组markers,显示数据时,遍历所有的标记点计算出目标点的外包正方形,若该点外包正方形与已有聚合点集外包正方形相交,则将该点纳入聚合点集,若不相交则新建聚合点;gridSize参数为聚合算法运算时grid网格的像素值,默认值为60,通过测试修改该值可获得较优显示;maxZoom参数为聚合计算的级别最大值,大于该值就不再进行聚合计算;minClusterSize参数为最小聚合数,小于该值不能组成聚合显示;isAverangeCenter参数为表示聚合点的落脚位置是否为所有聚合内点的平均值;styles参数数组为自定义聚合后显示图标风格,形如TextIconOverlay类,本例中设为styles:[url:'./img/red.png',size: new BMap.Size(80, 80), backgroundColor : '#E64B4E'}],并制作红色圆形聚合图形标记red.png上传至对应文件夹内。

    (3)详情展示

    点击“详细信息”可以查看避难场所详情信息,主要包括避难场所基本信息、场所简介和场所图片等。基本信息主要包括避难场所总面积、容纳人数、建设单位、建设时间、管理单位等信息;场所简介主要为避难场所的文字简要介绍;场所图片主要包括避难场所的平面图、场地照片、设施照片、标识导航等实景照片,如图7所示。

    图 7  应急避难场所详细信息查询显示
    Figure 7.  Detailed information display of emergency shelter

    该系统基于微信公众平台和百度LBS云的开放接口进行开发,可在震后第一时间为公众提供准确、详细的应急避难场所信息服务。该系统具有以下特点:

    (1)使用便捷、易于推广。用户无需额外安装软件,只要关注微信公众号即可实现应急避难场所信息的快速获取,这种方式更容易扩展地震信息服务的用户群。

    (2)云计算地图服务能力更加高效。系统使用LBS云技术进行开发,通过云计算高性能大数据集群,实现了避难场所云端存储数据的云检索,避免震后大规模访问造成服务器拥塞。

    (3)系统功能设计更为人性化。在人工位置上报基础上,设计实现了后台位置自动上报,用户可以根据自身需要灵活选择,打开自动上报功能后系统可实时更新用户的定位信息并进行地图坐标转换,实现避难路线精准规划和导航。

    (4)信息浏览体验提升。该系统通过重构、优化点聚合算法,实现应急避难场所点集合显示,较以往系统显示界面更为清爽简洁,提升了用户的使用体验。

    本文提出的应急避难场所信息服务技术在“陕西地震信息”微信公众号得到具体应用,实现了应急避难场所周边检索、路线规划、步行导航和详情显示。目前,该系统已为社会公众提供了超过800万次应急避难场所信息查询服务,增强了应急避难场所信息服务的互动性和针对性,解决了地震行业震后信息服务能力不足的普遍问题,为普通民众震后开展自救互救和紧急疏散提供了便利。

  • 图  1  系统功能架构图

    Figure  1.  System function architecture diagram

    图  2  微信消息交互流程

    Figure  2.  WeChat message interaction process

    图  3  LBS云数据管理界面

    Figure  3.  LBS cloud data management interface

    图  4  周边应急避难场所查询结果

    Figure  4.  Query results of surrounding emergency shelters

    图  5  应急避难场所步行导航规划

    Figure  5.  Pedestrian navigation planning for emergency shelters

    图  6  LBS云端数据的点聚合显示

    Figure  6.  Point aggregation display of LBS cloud data

    图  7  应急避难场所详细信息查询显示

    Figure  7.  Detailed information display of emergency shelter

  • 崔满丰, 翟颖, 李卫东, 2020. 地震信息融媒体公共服务研究. 震灾防御技术, 15(3): 609—617.

    Cui M. F. , Zhai Y. , Li W. D. , 2020. Research on public service of earthquake information on the media convergence. Technology for Earthquake Disaster Prevention, 15(3): 609—617. (in Chinese)
    董丽娜, 连尉平, 陈为涛等, 2020. 防震减灾公共服务现状与需求全国公众调查结果分析. 地震地质, 42(3): 762—771.

    Dong L. N. , Lian W. P. , Chen W. T. , et al. , 2020. Investigation of status and demand on public service of earthquake disaster mitigation in China. Seismology and Geology, 42(3): 762—771. (in Chinese)
    郭红梅, 赵真, 张莹, 2019. 基于微信公众平台的建筑物信息采集系统设计及实现. 震灾防御技术, 14(4): 890—898.

    Guo H. M. , Zhao Z. , Zhang Y. , 2019. Design and implementation of building information collection system based on WeChat public platform. Technology for Earthquake Disaster Prevention, 14(4): 890—898. (in Chinese)
    李自芮, 马翀之, 李国斌等, 2020. 基于AHP法的宁夏南部中小学地震应急避难场所减灾能力评估研究. 震灾防御技术, 15(3): 537—547.

    Li Z. R. , Ma C. Z. , Li G. B. , et al. , 2020. Evaluation of disaster reduction capability of earthquake emergency shelters in middle and primary schools in southern Ningxia based on AHP. Technology for Earthquake Disaster Prevention, 15(3): 537—547. (in Chinese)
    陆霞, 2020. 基于LBS云平台的微信小程序二维码区域定位系统设计. 现代电子技术, 43(4): 180—182, 186.

    Lu X. , 2020. Design of WeChat mini program two-dimensional code region positioning system based on LBS cloud platform. Modern Electronics Technique, 43(4): 180—182, 186. (in Chinese)
    罗丹, 2020. 基于Android平台的移动社交地图设计与实现. 北京测绘, 34(11): 1578—1582.

    Luo D. , 2020. Design and implementation of a mobile social map based on android platform. Beijing Surveying and Mapping, 34(11): 1578—1582. (in Chinese)
    苏建锋, 薄万举, 2017. 城市地震应急避难场所展示系统的设计与实现. 震灾防御技术, 12(2): 392—398.

    Su J. F. , Bo W. J. , 2017. Design and realization of display system of urban earthquake emergency shelters. Technology for Earthquake Disaster Prevention, 12(2): 392—398. (in Chinese)
    魏本勇, 谭庆全, 李晓丽, 2019. 北京市应急避难场所的空间布局与服务效能评估. 地震研究, 42(2): 295—303.

    Wei B. Y. , Tan Q. Q. , Li X. L. , 2019. Assessment on spatial distribution and service efficiency of emergency shelters in Beijing. Journal of Seismological Research, 42(2): 295—303. (in Chinese)
    杨志国, 姜亢, 邹湘凯等, 2011. 基于Arcgis Server与ASP. Net Ajax的北京市应急避难场所信息管理平台设计与实现. 中国安全生产科学技术, 7(7): 52—56.

    Yang Z. G. , Jiang K. , Zou X. K. , et al. , 2011. Design and realization of emergency shelter information management platform based on ASP. Net Ajax and arcgis server. Journal of Safety Science and Technology, 7(7): 52—56. (in Chinese)
    尹志军, 李丽慧, 王雪芳等, 2020. 基于GIS的天津市应急避难场所选址评价. 震灾防御技术, 15(3): 571—580.

    Yin Z. J. , Li L. H. , Wang X. F. , et al. , 2020. Location selection of the emergency shelters in Tianjin: an evaluation based on GIS. Technology for Earthquake Disaster Prevention, 15(3): 571—580. (in Chinese)
    喻迎春, 王妍婕, 万昕成, 2020. 基于微信的气象灾害预警信息精准智能推送技术的实现. 气象科技, 48(2): 195—199.

    Yu Y. C. , Wang Y. J. , Wan X. C. , 2020. Realization of accurate intelligent early-warning push technology based on WeChat. Meteorological Science and Technology, 48(2): 195—199. (in Chinese)
    赵士达, 张楠, 杨爽, 2014. 基于Android系统的避难场所查询软件开发. 电子技术应用, 40(3): 133—136.

    Zhao S. D. , Zhang N. , Yang S. , 2014. Development of emergency shelters query software based on android. Application of Electronic Technique, 40(3): 133—136. (in Chinese)
  • 加载中
图(7)
计量
  • 文章访问数:  221
  • HTML全文浏览量:  36
  • PDF下载量:  53
  • 被引次数: 0
出版历程
  • 收稿日期:  2021-07-23
  • 刊出日期:  2023-03-31

目录

/

返回文章
返回