?

基于開源Postgresql構建高性能管網分析服務

2024-01-08 10:42趙雅鵬江彬樊偉平齊跡
城市勘測 2023年6期
關鍵詞:插件管網管線

趙雅鵬,江彬,樊偉平,齊跡

(中煤(西安)地下空間科技發展有限公司,陜西 西安 710054)

0 引 言

城市地下管網根據用途可以將地下管線分為供水、電路、燃氣、通信等類別,不同類別的管線,承擔著城市不同的運作,保障了城市發展的經濟建設[1]。地下管線管理系統是對地下管線進行綜合管理的計算機管理系統,在計算機軟硬件、數據庫和互聯網等條件的支持下,運用GIS技術對地下管網位置關系、拓撲關系、屬性信息等進行存儲、展示、處理、輸出,結合實地需求,個性化地運用和展示城市地下管網信息。地理信息系統的空間分析能力可以分析和可視化地理空間數據中隱藏的信息,制作統計圖表或專題地圖,輔助決策;同時,地理信息系統的網絡分析能力可以分析地理網絡,如排水網絡的路徑分析、最短路徑的求解等,為管道突發事故應急救援提供有力支持,是解決管網問題的利器。另外,GIS提供了強大的數據快速查詢和展示能力,為二三維管網呈現做了有力支撐[2-4]。因此高效、穩定的管網查詢、空間分析、網絡分析服務能力,是上述呈現的前提條件。筆者就如何構建高性能管網分析做了深入研究,采用開源數據庫Postgresql結合過程存儲開發,應用數據庫自身高性能特性,有效提升了管網數據的查詢分析能力。

1 Postgresql數據庫簡介

PostgreSQL是一個強大的對象關系數據庫管理系統,是自由和開放源代碼的軟件。PostgreSQL能夠在運行時添加新的數據類型、函數和訪問方法的機制。正因為如此PostGIS擴展可以由單獨的開發團隊開發,但仍然可以非常緊密地集成到PostgreSQL數據庫中[5-7]。

PostGIS通過向PostgreSQL添加對空間數據類型、空間索引和空間函數的支持,將PostgreSQL數據庫管理系統轉換為空間數據庫。因為PostGIS是建立在PostgreSQL之上的,所以PostGIS自動繼承了重要的“企業級”特性以及開放源代碼的標準[8-9]。

存儲過程是在大型數據庫系統中,一組為了完成特定功能的SQL語句集,它存儲在數據庫中,一次編譯后永久有效,用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象。在數據量特別龐大的情況下利用存儲過程能達到倍速的效率提升。筆者基于存儲過程開發了管網分析常用功能。

2 管網分析設計與實現

2.1 總體設計

管網分析算法依托Postgresql數據庫存儲過程函數結合postgis空間數據庫插件實現。JAVA調用數據庫管網分析方法后以REST方式給前端提供服務,來查詢管網分析結果。

目前常用管網分析功能包括如圖1所示:

圖1 管網分析方法

管網數據一般包含管點和管線數據,數據為包含坐標(x、y、z)信息的矢量數據。管線數據包含分析必須字段如:管線類型、管線編號、起始管點編號、終止管點編號、起始管點埋深、終止管點埋深、起始管點高程、終止管點高程、管徑、材質、管線長度。管點數據包含必須字段如:管點編號、管點類型。

管網數據通過postgis Bundle數據插件導入Postgresql數據庫,導入過程中注意矢量數據坐標系。矢量數據導入過程如圖2所示:

圖2 矢量數據導入插件

2.2 管網分析實現

(1)代碼結構示例

管網分析是基于postgis空間函數插件開發,因此需在Postgresql Admin4中執行CREATE EXTENSION postgis命令安裝插件。管網分析功能采用存儲過程函數實現,函數根據功能定義輸入參數和輸出參數,下面給出了上下游追蹤函數結構代碼段示例:

CREATE OR REPLACE FUNCTION public.test_pipe_upstream_downstream_tracking(

pipeline_tablename character varying,

pipepoint_tablename character varying,

pipeline1_no character varying,

is_upstream boolean,

tracking_type character varying)

RETURNS TABLE(v_lno_array text[])

LANGUAGE 'plpgsql'

COST 100

VOLATILE STRICT PARALLEL UNSAFE

ROWS 1000

AS $BODY$

declare

--變量宣稱

begin

--過程函數實現邏輯

end;

$BODY$;

ALTER FUNCTION public.test_pipe_upstream_downstream_tracking(character varying,character varying,character varying,boolean,character varying) OWNER TO postgres;

基于上述方法創建過程函數,實現了管網常用功能:垂直凈距分析、大管接小管分析、倒坡分析、覆土分析、橫斷面分析、開挖分析、上下游追蹤分析、水平凈距分析、連通性分析、縱斷面分析。

執行各過程函數注冊函數到Postgresql數據庫。各函數位置如圖3所示。各管網分析函數列表如圖4所示,以test開頭的函數。

圖3 函數位置

圖4 管網分析函數列表

(2)管網分析部分結果展示

①大管接小管分析函數入參為:當前管線表名,查詢范圍多邊形。輸出結果為:大管接小管連接點編號,大管管線編號,大管管徑,大管材質,小管管線編號,小管管徑,小管材質。如圖5所示:

圖5 大管接小管分析結果

②上下游追蹤分析函數入參為:當前管線表名,當前管點表名,管線編號,上下游追蹤標識(上游為true,下游為false),查詢終止標識管點。輸出結果為:管線編號數組。如圖6所示:

圖6 上下游追蹤分析結果

③連通性分析函數入參為:管線表名,管線編號1,管線編號2。輸出結果為:管線編號,管線水平投影長度。如圖7所示:

圖7 連通性分析結果

3 結 論

本文以地下管網分析應用為研究背景,深入研究了Postgresql數據庫過程函數以及postgis空間數據庫插件應用方式的基礎上,開發常用管網分析過程函數,使用戶通過簡單的sql查詢語句即可得到管網分析結果。從性能上而言,基于過程函數開發方式,可充分發揮開源Postgresql數據庫自身高性能的數據檢索特點,此管網分析服務相比傳統后端開發管網分析功能查詢效率更高。

猜你喜歡
插件管網管線
自編插件完善App Inventor與樂高機器人通信
管網獨立是妥協還是改革
從管網獨立看國企改革
管網改革虛實
織起一張共管網
夾套管線預制安裝
淺談通信管線工程建設
淺談通信管線工程建設
基于jQUerY的自定義插件開發
MapWindowGIS插件機制及應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合