基于SpringBoot和PostGIS的應急運輸事件影響分析-以1.31側翻事故為例

目錄

前言

一、技術實現路徑

1、需要使用的數據

2、空間分析方法

二、相關模塊設計與實現

1、運輸路線重現開發

2、事故點影響范圍實現

3、WebGIS可視化實現

三、討論

1、界面結果展示

2、影響范圍分析

四、總結


前言

????????在交通運輸發達的當今社會,應急運輸事件的發生對社會的穩定和人民的生命財產安全帶來了諸多挑戰。如何及時、準確地分析此類事件的影響,為應急決策提供有力支持,成為了亟待解決的問題。而 2025 年 1 月 31 日發生在湖南永州零陵區的罐車側翻事故,更是為我們敲響了警鐘,也為我們提供了一個典型案例來展開深入研究。

????????此次事故中,車牌為陜 E·F5115(掛車牌為陜 E·265C 掛)的過境罐車在零陵區康濟大道和朝陽大道交會處發生側翻,致使車內裝載的 33.5 噸粗苯部分泄漏。事故幸未造成人員傷亡,但粗苯作為一種有毒有害物質,其泄漏引發了嚴重的環境風險,可能對周邊的水資源、土壤以及居民健康造成嚴重影響。

????????在對此次事故的影響分析中,SpringBoot 和 PostGIS 的結合應用展現出了獨特的優勢。SpringBoot 作為一個開源的 Java 開發框架,具有開發簡單、快速、高效等特點,能夠為我們搭建穩定、可靠的后端服務。PostGIS 則是 PostgreSQL 的空間數據庫擴展,可以高效地處理地理空間數據,實現空間查詢、分析等功能。通過 SpringBoot 和 PostGIS 的協同工作,我們可以將事故現場的地理信息、車輛運輸數據、環境監測數據等進行整合與分析,直觀地呈現事故的影響范圍和程度,為應急救援、環境污染治理以及后續的事故調查等工作提供科學依據。

????????接下來,本文將詳細介紹基于 SpringBoot 和 PostGIS 的應急運輸事件影響分析的具體方法和實踐過程,深入剖析 1.31 側翻事故中的數據采集、處理、分析以及可視化展示等各個環節,探討該技術方案在應急事件中的應用價值和局限性,并對未來的發展方向進行展望,以期為提升我國應急管理水平和應急處置能力貢獻一份力量。

一、技術實現路徑

????????本節將重點介紹本次分析中所需要使用到的相關數據,比如天地圖資源、路網數據、風景區點數據、居民點數據、機場數據等。其次介紹具體的空間分析方法。

1、需要使用的數據

序號數據內容說明
1運輸路線規劃使用天地圖的路徑規劃服務
2路網信息使用天地圖服務
3風景區數據PostGIS空間表,biz_scenic_spot
4機場數據PostGIS空間表,biz_global_airport_info
5居民點數據PostGIS空間表,biz_village

2、空間分析方法

????????本文重點需要展示兩部分的信息,第一個是對運輸路線進行還原和回放。第二個重要部分就是需要分析事故點附近的居民點、風景區即機場空間分布范圍,由此為相關部門的決策提供一些輔助和支撐。因此這里的空間分析方法也分為兩步:第一步是使用SpringBoot調用天地圖的路徑規劃接口,對事故的運輸路線進行還原;第二個是通過獲取事故側翻點的經緯度坐標,來分析該點附近1公里、2公里、3公里范圍的居民區、景點和飛機場信息。在空間分析中空間的函數使用st_dwithin,具體的實現SQL如下:

with bp as ( select ST_GeomFromText(format('point(%s %s)',111.620623,26.198523),4326) as geom) 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,3000 ) 
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,3000 )
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,3000 ) ) ta order by ta.dist 

????????在數據庫中執行以上語句后得到以下結果:

二、相關模塊設計與實現

????????本節將重點介紹相關的模塊的設計與實現。分為前端和后端兩個方面,重點是介紹運輸路線的重現和事故點影響范圍分析兩點。通過本節的介紹,大家將掌握如何來進行相關空間分析的設計與實現。

1、運輸路線重現開發

????????運輸路線的還原實現,主要是在后臺使用Uniapi來調用天地圖提供的官方服務。雖然在之前的系列文章中曾經介紹了天地圖的uniapi調用,但是在之前的博文中。關于路徑規劃的調用只涉及到了兩個參數,即起始點。而在本次博客的事故場景中,我們不僅要實現按照起始點的規劃,同時還需要關聯中間的轉折點,比如本文的事故點,湖南省永州市零陵區康濟大道和朝陽大道交匯處。需要在調用路徑規劃是傳入中間的坐標點信息,關鍵代碼如下:

@Override
public TdtResult benzeneTransportation(String lon,String lat) throws Exception {String origInfo = "111.277771,23.469545";//廣西梧州String destInfo = "115.029602,35.753199";//河南濮陽 //String mid = "111.620623,26.198523";//湖南省永州市零陵區康濟大道和朝陽大道交匯處String mid = lon + "," + lat;// 地圖自助選點  26.196898, 111.6203// style 默認0 (0:最快路線,1:最短路線,2:避開高速,3:步行)// 這里選擇避開高速String postStr = "%7B'orig':'" + origInfo + "','dest':'" + destInfo + "','mid':'" + mid  + "','style':'2'%7D" ;HttpResponse<String> resp = tdtOptionService.drivePlan(postStr,"search",TDT_SERVER_KEY);JAXBContext context = JAXBContext.newInstance(TdtResult.class);Unmarshaller unmarshaller = context.createUnmarshaller();TdtResult result = (TdtResult) unmarshaller.unmarshal(new StringReader(resp.getBodyResult()));return result;
}

在SpringBoot中實現的天地圖uniapi接入示例代碼如下:

package com.yelang.project.thridinterface;
import com.burukeyou.uniapi.http.annotation.HttpApi;
import com.burukeyou.uniapi.http.annotation.param.QueryPar;
import com.burukeyou.uniapi.http.annotation.request.GetHttpInterface;
import com.burukeyou.uniapi.http.core.response.HttpResponse;
@HttpApi(url = "http://api.tianditu.gov.cn/")
public interface TdtOptionService {@GetHttpInterface("geocoder")public HttpResponse<String> getGeocoder(@QueryPar("ds") String ds,@QueryPar("tk") String tk);@GetHttpInterface("drive")public HttpResponse<String> drivePlan(@QueryPar("postStr") String postStr,@QueryPar("type") String type,@QueryPar("tk") String tk);@GetHttpInterface("v2/search")public HttpResponse<String> searchV2(@QueryPar("postStr") String postStr,@QueryPar("type") String type,@QueryPar("tk") String tk);
}

????????通過Controller的API返回給前端的接口數據如下所示:

????????可以很明顯的看到,運輸路線的重現基本已經實現,在前端的控制臺中已經實現對路線的調用。?下面就可以來對空間影響范圍進行實現。

2、事故點影響范圍實現

????????對于事故點的影響范圍實現主要是利用了空間數據庫的空間查詢函數,postgis空間函數的查詢sql在前面的實現已經講過,這里將sql加載到MybatisPlus中進行執行,其對應的Mapper類方法如下:

static final String FIND_EFFECT_LIST_SQL = "<script>"
+ " with bp as ( select ST_GeomFromText(format('point(%s %s)',#{lon},#{lat}),4326) as geom) "
+ " 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,#{scenicspotDist} ) "
+ " 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,#{airportDist} )"
+ " 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,#{villageDist} ) "
+ " ) ta order by ta.dist "
+ "</script>";
/**
* - 查詢指定坐標附近指定距離內的風景區、機場、居民點信息
* @param lon 經度
* @param lat 緯度
* @param scenicspotDist 風景區信息
* @param airportDist 機場信息
* @param villageDist 居民點信息
* @return
*/
@Select(FIND_EFFECT_LIST_SQL)
List<EarthQuakeEffectVo> findEffectList(@Param("lon") BigDecimal lon,@Param("lat") BigDecimal lat,@Param("scenicspotDist") Integer scenicspotDist,@Param("airportDist") Integer airportDist,@Param("villageDist") Integer villageDist);

????????距離可以通過前端傳給后臺,也可以在Controller中直接指定。這里為了演示方便就在Controller中指定,在很多的業務實現場景中,完全是可以從前端傳入,不過需要結合坐標參考類型來控制生成的空間對象范圍不要太大。 Controller的示例方法如下:

@RequiresPermissions("edu:tdt:routing:phhmap")
@GetMapping("/phhmap")
public String phhmap(){return prefix + "/phhmap";
}/**
*	- 苯運輸路線重現
* @return
*/
@PostMapping("/phhtrans")
@ResponseBody
public AjaxResult phhtrans() throws Exception{AjaxResult ar = AjaxResult.success();String lon = "111.620623";String lat = "26.198523";TdtResult result = tdtRoutingService.benzeneTransportation(lon, lat);ar.put("data", result);return ar;
}/**
*- 獲取泄漏點影響信息列表,用post
* @return
*/
@PostMapping("/phheffect")
@ResponseBody
public AjaxResult effect(){AjaxResult ar = AjaxResult.success();String lon = "111.620623";String lat = "26.198523";List<EarthQuakeEffectVo> dataList = tdtRoutingService.findEffectList(new BigDecimal(lon),new BigDecimal(lat),3000,3000,3000);ar.put("data", dataList);return ar;
}

3、WebGIS可視化實現

????????這里使用的WebGIS展示插件采用Leaflet,為了讓展示的效果更加符合實際的需要。我們在進行事故點的標繪時,加入了閃爍的功能和影響范圍的中文標繪信息。這些知識點在之前的系列博客都曾經介紹過,這里不再贅述。這里介紹主要使用的對象,首先是需要定義一個閃爍點、第二是按照1、2、3公里生成影響評估面,第三是路徑規劃的路線信息,第四是在影響范圍內的風景區、居民區、機場的點位信息。這里有一個地方需要注意的是,在展示閃爍點的時候,不要將閃爍點跟受影響居民點等信息放到一個方法中,否則會影響正常的展示,下面是寫在一個方法的代碼中的效果:

????????可以很明顯的看到事故點有一個黑色的外環,這樣的效果不好,需要改進。 將代碼復制到影響范圍后效果就很明顯:

????????初步懷疑是都生成marker時,對具體的對象樣式產生了一定的影響。所謂距離產生美,分開就沒有這種問題了。

三、討論

????????下面對功能進行一個簡單的展示,也對本次事故的受影響范圍進行一個分析和討論。

1、界面結果展示

????????上圖是本次運輸過程的重現,從廣西梧州到河南濮陽的全稱路線規劃,出現閃爍點的位置是在湖南永州市。這是一張路線的展示。?

????????上圖是該事故點3公里、2公里、1公里范圍內的居民點、風景區、機場分布信息。?

2、影響范圍分析

????????從本次影響范圍來看,在事發點三公里范圍的相關點位總共有15處,其中距離事發地最近的是沙溝灣社區,只有170米,其次是諸葛廟村,距離396米。距離1000到2000的有兩個地點,一個是居委會,另外是一個旅游景點。其中南津渡社區居委會距離1137米,而永州零陵永州之野-異蛇世界距離1441.96061182。

????????這些距離事故點越近的居民點,在進行應急風險評估是,其受的傷害一定是最直接和最重的,因此非常有必要按照距離來進行風險等級評估。?

四、總結

????????以上就是本文的主要內容,在對此次事故的影響分析中,SpringBoot 和 PostGIS 的結合應用展現出了獨特的優勢。SpringBoot 作為一個開源的 Java 開發框架,具有開發簡單、快速、高效等特點,能夠為我們搭建穩定、可靠的后端服務。PostGIS 則是 PostgreSQL 的空間數據庫擴展,可以高效地處理地理空間數據,實現空間查詢、分析等功能。通過 SpringBoot 和 PostGIS 的協同工作,我們可以將事故現場的地理信息、車輛運輸數據、環境監測數據等進行整合與分析,直觀地呈現事故的影響范圍和程度,為應急救援、環境污染治理以及后續的事故調查等工作提供科學依據。行文倉促,定有不足之處,歡迎各位朋友在評論區批評指正,不勝感激。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80025.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80025.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80025.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NetBox:運維利器,網絡與數據中心管理平臺

NetBox 詳細介紹&#xff1a;開源 IPAM 和 DCIM 工具的全面解析 1. 引言 在現代網絡和數據中心管理中&#xff0c;基礎設施的復雜性不斷增加&#xff0c;傳統的電子表格或手動記錄方式已無法滿足高效、準確和可擴展的管理需求。NetBox 作為一個開源的 IP 地址管理&#xff08…

澳鵬干貨 | 動態判斷:如何用“群體智慧“優化AI數據標注流程?

20世紀初&#xff0c;800人集體猜測一頭公牛的重量&#xff0c;結果與真實數值誤差不足1%——這就是著名的"群體智慧"效應。如今&#xff0c;這一古老智慧正以全新形態賦能AI訓練&#xff1a;通過動態優化標注流程&#xff0c;讓AI訓練結果像人群一樣達成精準共識。 …

go.mod沒有自動緩存問題

今天在安裝Gin框架的時候遇到了一個問題 在Terminal運行下面命令安裝時&#xff0c;包已經被下載安裝到了GoPath中的bkg/mod go get -u github.com/gin-gonic/gin但是由于使用的是Go Modules&#xff0c;GPT以及大多數人給的說法是 運行完這個依賴包會被自動同步更新到go.mod…

數據結構——排序(萬字解說)初階數據結構完

目錄 1.排序 2.實現常見的排序算法 2.1 直接插入排序 ?編輯 2.2 希爾排序 2.3 直接選擇排序 2.4 堆排序 2.5 冒泡排序 2.6 快速排序 2.6.1 遞歸版本 2.6.1.1 hoare版本 2.6.1.2 挖坑法 2.6.1.3 lomuto前后指針 2.6.1.4 時間復雜度 2.6.2 非遞歸版本 2.7 歸并排序…

AWS上構建基于自然語言和LINDO API的線性規劃與非線性規劃的優化計算系統

我想要實現一個通過使用C#、Semantic Kernel庫、OpenAI GPT 4的API和附件文檔里提到的LINDO API 15.0實現通過中文自然語言提示詞中包含LATEX代碼輸入到系統,通過LINDO API 15.0線性規劃與非線性規劃的優化計算程序輸出計算結果和必要步驟的應用,結果用中文描述出來,這樣的L…

海外短劇H5系統開發:技術架構、SEO優化與全球市場突圍策略 [2025版]

隨著全球數字娛樂消費的升級&#xff0c;海外短劇市場正以年均300%的增速爆發式增長。數據顯示&#xff0c;2025年海外短劇市場規模預計突破450億美元&#xff0c;用戶付費意愿&#xff08;ARPPU達25-50美元&#xff09;遠超國內67。H5系統憑借其輕量化、跨平臺兼容性和低成本開…

7D-AI系列:模型微調之mlx-lm

大模型的出現&#xff0c;導致信息量太大&#xff0c;只有靜心動手操作&#xff0c;才能得到真理。 文章目錄 環境要求安裝示例mlx-lm微調工具參數準備數據集下載模型微調模型合并模型驗證結果驗證微調前的模型驗證微調后的模型 環境要求 macbook pro m系列芯片mlx環境已安裝 …

Docker —— 隔離的基本操作(1)

Docker —— 隔離的基本操作&#xff08;1&#xff09; 1. 用戶和權限隔離2. 進程隔離3. 文件系統隔離4. 資源隔離&#xff08;Cgroups&#xff09;5. 網絡隔離6. 安全增強&#xff08;SELinux/AppArmor&#xff09;7. 容器技術&#xff08;Docker/LXC&#xff09;總結 dd基本語…

PWN基礎-ROP技術-ret2syscall突破NX保護

ROP&#xff08;Return-Oriented Programming&#xff0c;返回導向編程&#xff09;是一種利用程序已有代碼片段來執行任意指令的攻擊技術&#xff0c;常用于繞過現代系統的安全機制&#xff0c;尤其是不可執行棧&#xff08;NX&#xff09;。 常規檢查一下&#xff1a; 32 位…

關于 js:2. 對象與原型鏈

一、對象 對象是&#xff1a; 鍵值對集合 所有非原始類型&#xff08;number、string、boolean、null、undefined、symbol、bigint&#xff09;都是對象 支持動態增刪屬性 每個對象都繼承自 Object.prototype&#xff0c;具備原型鏈結構 1. 對象的創建方式 字面量方式&a…

AtCoder 第404場初級競賽 A~E題解

A Not Found 【題目鏈接】 原題鏈接:A - Not Found 【考點】 枚舉,數組計數法 【題目大意】 找到在26個字母中,未輸出的一個字母,如果有多個,輸出其中一個即可。 【解析】 遍歷字符串,使用數組的記錄對應字母的出現次數,最后遍歷數組為0的下標,輸出對應的字母即…

檢測內存條好壞有工具,推薦幾款內存檢測工具

檢測內存條的好壞其實很重要&#xff0c;這直接就關系到計算機是不是能夠穩定的運行&#xff0c;也有一部分人就會關注內存檢測的工具。你應該如何來選擇的&#xff0c;不如看一下以下的這幾個。 MemTest86是一個比較受到大家喜歡的內存檢測工具&#xff0c;會支持各種類型&…

01Introduction

文本主題 關于協作式多智能體強化學習的簡介 文章目錄 文本主題一、MARL主要框架集中式訓練與執行 (CTE)集中式訓練分布式執行&#xff08;CTDE&#xff09;分布式訓練與執行&#xff08;DTE&#xff09; 二、Dec-POMDPjoint policy V and Q 一、MARL主要框架 MARL當前主流的…

小程序問題(記錄版)

1、樣式不生效 在h5上生效 但是 小程序上沒反應 解決辦法&#xff1a;解除組件樣式隔離 1、isolated 表示啟用樣式隔離&#xff0c;在自定義組件內外&#xff0c;使用 class 指定的樣式將不會相互影響&#xff08;一般情況下的默認值&#xff09; 2、apply-shared 表示頁面 wxs…

排列組合算法:解鎖數據世界的魔法鑰匙

在 C 算法的奇幻世界里&#xff0c;排列和組合算法就像是兩把神奇的魔法鑰匙&#xff0c;能夠幫我們解鎖數據世界中各種復雜問題的大門。今天&#xff0c;作為 C 算法小白的我&#xff0c;就帶大家一起走進排列和組合算法的奇妙天地。 排列算法&#xff1a;創造所有可能的順序…

深入探討 UDP 協議與多線程 HTTP 服務器

深入探討 UDP 協議與多線程 HTTP 服務器 一、UDP 協議&#xff1a;高效但“不羈”的傳輸使者 UDP 協議以其獨特的特性在網絡傳輸中占據一席之地&#xff0c;適用于對實時性要求高、能容忍少量數據丟失的場景。 1. UDP 的特點解析 無連接&#xff1a;無需提前建立連接&…

引用第三方自定義組件——微信小程序學習筆記

1. 使用 npm 安裝第三方包 1.1 下載安裝Node.js 工具 下載地址&#xff1a;Node.js — Download Node.js 1.2 安裝 npm 包 在項目空白處右鍵彈出菜單&#xff0c;選擇“在外部終端窗口打開”&#xff0c;打開命令行工具&#xff0c;輸入以下指令&#xff1a; 1> 初始化:…

數字化轉型是往哪轉?怎么轉?

寫在前面 當下數字化轉型的風還在吹&#xff0c;企業數字化轉型過程中以數字化項目滿足業務化需求&#xff0c;已有相關數字化平臺的話&#xff0c;就搞大平臺、大系統&#xff0c;解決數據孤島。政府數字化轉型亦是如此&#xff0c;某些省市發了系統優化整合的文&#xff0c;旨…

嵌入式學習--江協51單片機day2

今天學的不多&#xff0c;內容為&#xff1a;靜態、動態數碼管的控制&#xff0c;模塊化編程和lcd1602調試工具 數碼管的控制 由于內部電路的設計&#xff0c;數碼管每次只能顯示一個位置的一個數字&#xff0c;動態的實現是基于不同位置的閃爍頻率高。 P2_4,P2_3,P2_2控制位…

《數據結構:二叉搜索樹(Binary Search Tree)》

文章目錄 :red_circle:一、二叉搜索樹的概念:red_circle:二、二叉搜索樹的性能分析:red_circle:三、二叉搜索樹的操作&#xff08;一&#xff09;插入&#xff08;二&#xff09;查找&#xff08;三&#xff09;刪除 :red_circle:四、二叉搜索樹的實現代碼&#xff08;一&#…