WebGIS在应急灾害中对村庄、风景区、机场的影响范围应用-以日喀则市定日县地震为例

目录

前言

一、关于影响范围

1、震中距离5公里

2、震中20公里范围

3、20到80公里范围

二、空间查询知识

1、相关数据介绍

2、空间数据查询

三、前后端数据查询以及web可视化实现

1、后台API实现

2、WebGIS前端实现

四、Web成果展示

1、空间位置分析

2、包含风景区数据展示

五、总结


前言

随着全球气候变化的加剧以及人类活动的不断扩张,自然灾害和人为灾害的频率与强度呈现出上升趋势。这些灾害对人类社会的各个方面,尤其是对村庄、风景区和机场等关键区域的影响日益显著。在灾害应急响应中,准确评估灾害影响范围是制定有效救援计划和资源分配策略的关键因素。WebGIS(Web Geographic Information System)作为一种基于网络的地理信息系统,为灾害影响范围的快速评估和可视化提供了强大的工具。

WebGIS技术结合了地理信息系统(GIS)的空间分析能力和互联网的广泛接入优势,使得灾害信息能够实时更新和共享。在村庄遭受洪水、地震等灾害时,WebGIS可以迅速整合地理数据,如地形、建筑分布和人口密度等,通过空间分析模型计算出受影响的区域范围。这不仅有助于救援队伍确定优先救助的村庄,还能为物资分配和人员疏散提供科学依据。

对于风景区而言,WebGIS的应用同样至关重要。风景区通常具有独特的自然景观和生态系统,灾害可能会对其造成严重的破坏。通过WebGIS,管理者可以实时监测灾害对景区内自然资源和基础设施的影响,及时调整游客路线和救援策略,减少灾害对风景区的长期损害。

机场作为重要的交通枢纽,在灾害发生时,其运营状态直接关系到救援物资的运输和人员的疏散效率。WebGIS能够实时显示机场周边的灾害情况,包括洪水淹没范围、地震烈度分布等,帮助机场管理部门评估机场的运行安全和可能的关闭时间。此外,WebGIS还可以与航班管理系统相结合,为航班调整和应急疏散提供决策支持。

本文以近日发生在日喀则市定日县的6.8级地震灾害为例重点讲解如何结合距离来进行影响范围评估。通过关联震中附近的村庄、风景区、机场等重要居民点和公共交通点,这些场所都是人员高度聚居的场所,通过这些数据来进行辅助分析。完整首先讲解如何在空间数据库中进行三种空间数据的关联和查询,然后使用SpringBoot讲解如何进行使用影响范围查询开发,通过构建5公里高风险区和20公里中风险区以及80公里低风险区,最后结合Leaflet等前端组件对相关数据进行可视化,为相关的领导和救援人员提供时空位置展示,制定科学的救援计划提供数据服务。本文暂时结合震中距离来评估自然灾害的影响,暂不考虑地质情况与房屋建筑情况,后面如果有相关的数据,可以进行更一步的挖掘与探索。

一、关于影响范围

地震最为一种破坏性极强的自然灾害,而且如果发生在夜晚的自然灾害对人类的影响也将十分巨大。地震的直接影响范围取决于多种因素,包括震级、震源深度、地质构造、地表条件等。众所周知,在地震的震中位置,越靠近震中位置的地方,受到的影响就越大。因此,将距离震中的不同范围进行一个合理的划分,对于研究地震的影响范围有很大的意义。当然,关于影响范围不是一个固定的值,这里采用一些固定的范围,伴随着范围的扩大,地震的影响会显著的降低。因此这里我们将研究的空间距离范围进行一点的限制。

1、震中距离5公里

  • 破坏程度:震中5公里范围内的破坏通常最为严重。建筑物可能会遭受重大损坏或倒塌,基础设施如道路、桥梁等可能无法使用。例如,在西藏日喀则市定日县的6.8级地震中,震中5公里范围内的村庄如塘仁村、雪珠村等受到了显著影响。
  • 人口影响:震中5公里范围内的人口密度和建筑物密集度决定了人员伤亡和财产损失的程度。例如,宁夏银川市永宁县4.8级地震震中5公里范围内平均海拔约1113米

因此,震中附近5公里范围内的影响是非常巨大的。这也意味着,在进行救援计划的指定时,需要重点考虑5公里范围的居民点、机场、风景区等。可以结合这些地区的人口密度、地址构造情况、建筑建成情况等进行综合评估。

2、震中20公里范围

  • 破坏程度:在震中20公里范围内,建筑物和基础设施的损害程度进一步减轻,但仍可能有轻微的破坏,如墙皮脱落、窗户破碎等。例如,在西藏日喀则市定日县的6.8级地震中,震中20公里范围内的乡镇如措果乡、曲洛乡受到了影响。
  • 人口影响:震中20公里范围内的人口数量可能更大,因此可能有更多的人员感受到地震的影响,但伤亡和损失相对较小

从5公里到20公里的范围内,影响程度会随着距离的增加而衰减,但依然会有一定的破坏性,而建筑的倒塌情况也会伴随着距离有很大的改善,因此可以随着这个距离的扩大在制定救援计划时将这类地区依据距离进行优先级排序。

3、20到80公里范围

对于超过20公里的地震影响,会更小。这里之所以研究80公里范围内,是因为想查看80公里范围的飞机场位置,飞机作为一种快速机动的救援方式,在争分夺秒的抢救中发挥了非常重要的作用。因此,飞机场不仅是评估影响的重要因素,也是评估救援方案的一种重要因素。物资可以通过飞机快速的运抵灾区。

二、空间查询知识

在介绍了前面的影响范围之后,本节将介绍如何将居民点、飞机场、风景区的信息进行整合查询,通过影响半径的划定来进行空间信息查询。通过本节,大家可以掌握如何实现对这三类信息进行关联过滤查询。

1、相关数据介绍

这里提到的居民点、飞机场、风景区等数据,在个人博客中的均有提及,在进行实际的灾害分析时,还可以结合AOI数据,不仅是包含居民点,还包括学校、医院、养老院、办公楼等重要场所进行完整的空间分析。本文仅展示一种空间影响范围的分析。这三类数据分别存储在三张表中,这三张表的主要字段信息如下图所示:

2、空间数据查询

要实现查询指定范围内的不同标识地点,需要借助空间数据库中的空间查询函数st_dwithin(geography,geography)和距离求解函数st_distance(geography,geography)以及根据geometry求解经度和纬度的函数st_x(geometry)和st_y(geometry)。同时为了同时将这三张表的数据集中汇总到一起,然后与地震信息进行关联,这里需要使用数据库中的高级查询With查询,数据查询sql语句如下:

sql 复制代码
with bp as (
	select bce.geom from biz_ceic_earthquake bce where bce.pk_id = 1876603675057643521
)
select ta.* from (
select t.id pk_id,t.name,'scenicspot' as type,st_x(t.geom) lon,st_y(t.geom) lat, 
st_distance(t.geom :: geography, bp.geom :: geography) dist from biz_scenic_spot t,bp 
where st_dwithin(t.geom :: geography,bp.geom :: geography,20000 )
union
select t.pk_id,t.name_zh as name,'airport' as type,t.lon_wgs84 lon,t.lat_wgs84 lat, 
st_distance(t.geom :: geography, bp.geom :: geography) dist from biz_global_airport_info t,bp
where st_dwithin(t.geom :: geography,bp.geom :: geography,80000 )
union 
select t.id pk_id,t.village_name as name,'village' as type,st_x(t.geom) lon,st_y(t.geom) lat, 
st_distance(t.geom :: geography, bp.geom :: geography) dist from biz_village t,bp 
where st_dwithin(t.geom :: geography,bp.geom :: geography,20000 )
) ta order by ta.dist ;

在navicat的客户端中执行上述的SQL之后,可以得到以下的查询结果:

在上面的SQL中,我们使用的距离计算都需要先转成geography,这样的求解结果单位就是米,可以在后续的条件中输入以米为计算单位的距离。 在最开始的时候,将地震的结果一次性查出来,在后面的查询过程中就不需要单个关联,这样就大大的提升了查询效率。

三、前后端数据查询以及web可视化实现

在掌握了空间数据表的空间查询方法之后,下面我们就可以基于这个空间函数查询进行WebGIS的开发。后台设计的程序比较简单,主要是将上面的SQL语句写入到Mybatis_Plus当中,然后让控制层进行调用和执行。

1、后台API实现

当前端输入一个地震的主键值之后,后台可以通过控制层调用业务层,而业务层调用数据访问层,然后实现空间数据的访问。这里将后台API控制层的方法展示出来,如果有问题,可以在评论区留言指出。

java 复制代码
/**
 *- 获取地震影响信息列表,用post
 * @param pkId
 * @return
*/
@PostMapping("/effect/{pkId}")
@ResponseBody
public AjaxResult effect(@PathVariable("pkId")Long pkId){
   AjaxResult ar = AjaxResult.success();
   List<EarthQuakeEffectVo> dataList = ceicEarthQuakeService.findEffectList(pkId, 20000, 80000, 20000);
   ar.put("data", dataList);
   return ar;
}

2、WebGIS前端实现

后端提供好了对应的接口之后,前端就可以调用这个接口传入地震的主键ID,然后将ID对应的空间范围内的居民点、机场、风景区进行查询及展示。前端使用Leaflet对这些位置点进行渲染,同时标注具体的距离信息。为相关部门决策提供依据和基础。

javascript 复制代码
function showDistance(){
   $.ajax({  
		type:"post",  
		url:prefix + "/effect/" + [[${pkId + ''}]],  
		dataType:"json",  
		cache:false,
		processData:false,
		success:function(result){
		   if(result.code == web_status.SUCCESS){
		        var strokeStyleSet = "green";
		        for(var i=0;i<result.data.length;i++){
		        	var dataInfo = result.data[i];
		        	var dist = dataInfo.dist;
		        	var zindex = 3;//排序号很重要,会优先展示
		        	if(parseFloat(dist) <= 5000){
		    			strokeStyleSet = "red";
		    		}
		        	if(parseFloat(dist) > 5000 && parseFloat(dist) <= 20000 ){
		    			strokeStyleSet = "orange";
		    			zindex = 2;
		    		}
		        	if(parseFloat(dist) >= 20000){
		        		strokeStyleSet = "green";
		        		zindex = 1;
		        	}
		        	var _dist = parseFloat(dataInfo.dist / 1000).toFixed(2);
		    		var content = "<strong>影响地点:</strong>"+dataInfo.name + "<br/><strong>震中位置:</strong>"+ cityInfo;
		    		content += "<br/><strong>距离(千米):</strong>"+_dist;
	    			var type = "村庄";
   			        if(dataInfo.type == "scenicspot"){
   			        	 type = "风景区";
   			        }
   			        if(dataInfo.type == "airport"){
			        	 type = "机场";
			        }
	    			var marker = L.circleMarker(new L.LatLng(dataInfo.lat, dataInfo.lon), {radius: 8,
		    		labelStyle: {
			    			text: type + ":"+ (i + 1 )+  dataInfo.name + "(" + _dist + "千米)",
			    			rotation: 0,
			    			zIndex: zindex,
			    			strokeStyle :strokeStyleSet
			    	},
			    	color : strokeStyleSet
			    	}).addTo(mymap);
		    		marker.bindPopup(content);  
		        			
		    		L.polyline(
	   					[
	   					   [
	   					    	[lat, lon],[dataInfo.lat, dataInfo.lon]]], {
	   					      labelStyle: {
	   					        //text: cityInfo + ">" +dataInfo.name + ":"  + _dist + "千米",
	   					        //text: _dist + "千米",
	   					        zIndex: 0,
	   					        collisionFlg: false,
	   					        textAlign:'center',
	   					     	strokeStyle :strokeStyleSet
	   					      },
	   					  color : strokeStyleSet
	   					}).addTo(mymap);
		        	}
		      }
		      mymap.setZoom(9);//再次缩放到9级
		  },
		  error:function(){
		       $.modal.alertWarning("获取信息失败");
		  }
	});
}

需要注意到是,这里的图例生成与目标点的marker标定时,为了让震中5公里范围的的marker标记可以快速的展示出来,我们对标记的zindex进行设置。同时按照不同的影响范围点类型,将居民点、风景区、机场等进行分别的追加标注。

四、Web成果展示

本节结合具体的地震信息,将实现震中地震的WebGIS影响范围评估,通过5公里范围、20公里影响范围,80公里影响范围及其包含的空间点位置信息,让大家看到地震的实际影响范围。地震信息来源于国家地震台网。这也是为什么选择WebGIS来实现这个需求,传统的C/S的桌面制图,耗时费力,使用WebGIS的方式来实现,把主要的数据源固化之后,剩下的展示工作就比较简单了。这里以定日县地震为例重点讲解地震影响范围。

1、空间位置分析

首先在地震台网信息展示列表中可以看到以下信息:

这是同步过来的数据,点击操作按钮栏中的最后一个按钮即"震中影响",在新打开的影响评估窗口中可以看到这三类点位数据以及列表数据。

首先通过红、黄、绿灯三色标识来进行不同风险级别的标注。表示5公里、5-20公里、20-80公里影响范围点位信息。在上面的地图界面中,我们可以很清晰的看到,本次定日县的地震,对机场的影响较小,两者的直线距离相差63.62千米。本次地震震中附近20公里范围内无旅游景区,但是居民点还是比较多的。将地图进一步的放大,查看受灾严重的5公里范围内点位。

可以看到,距离震中位置5公里范围的乡村,在空间位置上都是位于震中的东南角。 更详细的距离名单,可以看表格的右边。最近的是塘日村,距离2.56千米。这距离相当近了,需要重点关注。5公里范围的乡村信息如下:

名称 类型 距离(千米)
1、塘日村 村庄 2.56
2、雪珠村 村庄 2.59
3、嘎热果吉村 村庄 2.61
4、美朵村 村庄 3.68
5、吉翁村 村庄 4.89
6、吉定村 村庄 4.90

2、包含风景区数据展示

在前面的地震数据展示中,并没有风景区的数据,机场的数据是有的,只是因为距离的原因,排在了最后面。这里来看一下包含风景区的数据。以2017年四川阿坝州九寨沟县7.0地震为例,来看一其对风景区的影响范围。

可以看到,距离震中仅10公里内就有5A级景区九寨沟风景名胜区以及距离8公里的爱琴海景区。 同时可以看到震中位置距离九寨沟黄龙机场仅有40公里。

五、总结

以上就是本文的主要内容,本文以近日发生在日喀则市定日县的6.8级地震灾害为例重点讲解如何结合距离来进行影响范围评估。通过关联震中附近的村庄、风景区、机场等重要居民点和公共交通点,这些场所都是人员高度聚居的场所,通过这些数据来进行辅助分析。完整首先讲解如何在空间数据库中进行三种空间数据的关联和查询,然后使用SpringBoot讲解如何进行使用影响范围查询开发,通过构建5公里高风险区和20公里中风险区以及80公里低风险区,最后结合Leaflet等前端组件对相关数据进行可视化,为相关的领导和救援人员提供时空位置展示,制定科学的救援计划提供数据服务。本文暂时结合震中距离来评估自然灾害的影响,暂不考虑地质情况与房屋建筑情况,后面如果有相关的数据,可以进行更一步的挖掘与探索。

尽管WebGIS在灾害应急中的应用前景广阔,但仍面临着数据准确性、实时性和用户界面友好性等挑战。为了充分发挥WebGIS在灾害影响范围评估中的作用,需要进一步加强数据采集和更新机制,优化空间分析算法,并提高系统的易用性。本文旨在探讨WebGIS在应急灾害中对村庄、风景区和机场影响范围的具体应用,分析其优势与局限,并提出相应的改进策略,以期为灾害应急管理和决策提供科学依据和技术支持。行文仓促,定有许多不足之处,如有不足,还恳请各位专家博主在评论区留言指出,不胜感激。