宋磊,張現(xiàn)軍
(濟南市勘察測繪研究院,山東 濟南 25010)
城市排水管線不斷完善與快速增長,管線的管理帶來了挑戰(zhàn)。傳統(tǒng)的排水管線管理系統(tǒng),側(cè)重于數(shù)據(jù)的展示與屬性查詢,借助GIS平臺特定的數(shù)據(jù)結(jié)構(gòu)進行空間分析[1~3]。王萌等人提出建立城市排水GIS系統(tǒng)精細拓撲模型,通過對數(shù)據(jù)結(jié)構(gòu)的重新組織提高管網(wǎng)分析的運算效率[4]。農(nóng)宇等人在ArcGIS和超圖平臺的基礎(chǔ)上,通過數(shù)據(jù)處理生成平臺的幾何網(wǎng)絡(luò)數(shù)據(jù),在此基礎(chǔ)上進行排水管線的上下游分析[5,6]。傳統(tǒng)連通算法的優(yōu)化,需要對數(shù)據(jù)進行分塊或增加索引結(jié)構(gòu),以提高數(shù)據(jù)分析的效率。隨著管線數(shù)據(jù)更新頻率增加,原始數(shù)據(jù)變化后,用于連通性分析的中間數(shù)據(jù)也需要同步更新,無疑增加了系統(tǒng)維護的工作量,也無法保證分析結(jié)果的現(xiàn)勢性。本文基于地理實體構(gòu)建排水管網(wǎng)數(shù)據(jù)結(jié)構(gòu),在管線實體中增加邏輯關(guān)系及流向?qū)傩?,通過遞歸遍歷實體間的鄰接與流向,實現(xiàn)排水管線的上下游分析功能。
排水管網(wǎng)上下游分析算法的選擇需要適合系統(tǒng)的總體架構(gòu)。本文探討了在B/S架構(gòu)下,用戶在頁面端更新數(shù)據(jù)庫中排水管網(wǎng)實體數(shù)據(jù)。排水管線分析服務(wù)通過遍歷實體數(shù)據(jù)中的關(guān)聯(lián)關(guān)系,實時的進行排水管網(wǎng)的上下游分析。如圖所示,系統(tǒng)分為用戶界面層、應(yīng)用層、系統(tǒng)服務(wù)層與數(shù)據(jù)層。數(shù)據(jù)層保存排水管網(wǎng)實體數(shù)據(jù)和基礎(chǔ)地理數(shù)據(jù),是算法的基礎(chǔ)。系統(tǒng)服務(wù)層是用戶編輯數(shù)據(jù)、應(yīng)用分析的媒介,讓用戶在界面層操作信息傳遞至后臺,并返回結(jié)果。應(yīng)用層是算法的實現(xiàn),前端傳遞的參數(shù)結(jié)合實體數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,做出復(fù)雜的應(yīng)用分析。用戶界面層是向用戶提供服務(wù)的入口,用戶可以在界面層進行地圖瀏覽、查看分析結(jié)果和專題圖等。
圖1 系統(tǒng)架構(gòu)圖
地理實體是現(xiàn)實世界中占據(jù)一定空間位置,單獨具有同一屬性或完整功能,可以唯一標識的自然地物或人工設(shè)施。其特點是具有唯一編碼并能夠自由的組合或聚合,應(yīng)用于不同方向[7,8]。
排水管網(wǎng)上下游分析算法依賴標準的排水地理實體數(shù)據(jù)。標準的數(shù)據(jù)格式是算法分析的基礎(chǔ),也是結(jié)果分析正確與否的保障。以往數(shù)據(jù)建庫,面向地理要素,注重空間位置與屬性的表達,可以很好滿足數(shù)據(jù)的展示與統(tǒng)計的需求。但隨著排水管網(wǎng)數(shù)據(jù)更新速度加快,用戶對數(shù)據(jù)分析的實時性與效率有了更高要求。傳統(tǒng)的系統(tǒng)維護由數(shù)據(jù)生產(chǎn)、數(shù)據(jù)治理、制作幾何網(wǎng)絡(luò)數(shù)據(jù)、服務(wù)更新等流程組成,存在數(shù)據(jù)制作周期長、對系統(tǒng)維護人員要求高、大數(shù)據(jù)量下效率低等缺點。
排水管線地理實體分為排水管點,排水管段,排水獨立井和排水溝道四個類別,每個類別都有自己的分類代碼和圖元編碼。地理實體的唯一編碼由分類碼、位置碼、時間碼和順序碼組成,通過地理實體的編碼可以獲取不同類別間地理實體的關(guān)聯(lián)關(guān)系,聚合為綜合管線實體,也可以是小區(qū)地理實體組成部分。利用排水管網(wǎng)實體中排水管點、排水管線的關(guān)聯(lián)關(guān)系以及圖元信息,不僅能夠滿足上下游分析的需要,而且對以后數(shù)據(jù)的挖掘留出了拓展空間。上下游分析算法主要操作對象是管線實體,如圖2所示,管線實體的結(jié)構(gòu)由實體編碼、管線編號、管線類型、流向、起點信息以及終點信息組成。管線間的關(guān)聯(lián)關(guān)系如圖3所示,數(shù)字代表管線,大寫字母代表管點。管線2與管線3的終點A是管線1的起點,同時也是管線1的起點,管線1的終點B是管線4與管線5的起點。管線關(guān)聯(lián)關(guān)系中,最常見的是管線2,1,4組成的流向關(guān)系,圖3展示的是復(fù)雜的管線連接情況,也是算法需要著重考慮的情況。每段管線都有唯一的實體編碼,管線間通過起點點號與終點點號進行關(guān)聯(lián)。通過管線的數(shù)據(jù)結(jié)構(gòu)并結(jié)合流向信息可以進行管網(wǎng)的上下游分析。
圖2 排水管線地理實體圖
圖3 排水管線地理實體關(guān)系示意圖
我們以上游溯源分析算法為例(如圖4所示),首先定義結(jié)果管線集合,用于保存查詢出來的管線編號,初始的結(jié)果管線集合為空。首先獲取用戶在地圖上選擇管點的點號,假設(shè)為圖3中的管點A,在數(shù)據(jù)庫中查找以該點為終點的管線,放入過程管線集合中,即由管點A查詢出管線2與管線3的過程。判斷過程管線集合長度是否為零,如果為零則說明沒有管線流向該管點,是管網(wǎng)的起始點,分析結(jié)束。如果過程管線集合長度不為零,則需要遍歷過程集合中的管線,遍歷管線是需要經(jīng)過兩個判斷。首先判斷結(jié)果管線集合中是否包含過程集合中的管線,如果不在就新增到結(jié)果管線集合中,如果在就繼續(xù)判斷過程管線集合中下一條管線。遍歷過程管線集合結(jié)束后,過程管線集合置空。然后判斷管線實體中流向?qū)傩?,流向為正的選取起點點號作為結(jié)果,如果流向為反向,則選取終點點號作為結(jié)果,此過程就是通過判斷管線1,管線2的屬性信息查詢出管點C與管點D的過程。本算法選擇在判斷完所有的點號后,再進行遍歷新增點號,也就是廣度優(yōu)先策略。為防止重復(fù)或者無限循環(huán)查找管線,在這個步驟中設(shè)置了管點集合,作為判斷管點是否已經(jīng)參與計算的標志。第三步判斷新篩選出的管點是否在管點集合中,如果不在就加入管點集合中,然后再檢索終點為該點的管線集合,即查詢流向管點C或者管點D的過程管線集合。如此遞歸循環(huán),不斷將新查詢的管線增加至結(jié)果管線集合中,直到新查詢管線個數(shù)為零,退出循環(huán),輸出結(jié)果數(shù)據(jù)集。下游分析算法跟上游溯源分析算法類似,不同之處在于是尋找起點還是終點,內(nèi)部邏輯是一致的。
圖4 系統(tǒng)結(jié)果圖
圖4 上游算法流程圖
該算法無須借助GIS開發(fā)平臺和專門的幾何網(wǎng)絡(luò)模型,直接在標準的管線實體數(shù)據(jù)庫中檢索,按照上下游分析的邏輯將管線查詢出來,并返回至前端。前端通過解析結(jié)果數(shù)據(jù),把管線繪制在地圖視圖中。實現(xiàn)了管線編輯后能夠同步反應(yīng)至分析結(jié)果中,并能利用該算法檢測管線數(shù)據(jù)中的錯誤,查找倒流錯誤的管線。
該算法已經(jīng)運用在濟南市排水管線綜合運營平臺中,在超過 1 280 000條排水管線數(shù)據(jù)中進行溯源分析,能夠流暢的輸出結(jié)果并繪制在地圖中。如圖所示,在小清河附近選擇一管點,設(shè)置搜索深度300,執(zhí)行匯水分析,即本文描述的上游分析算法。經(jīng)過不超過300次的遞歸分析后,查詢出流向此管點的309條管線。右側(cè)的表格顯示管線的屬性信息,地圖中繪制管線的位置與流向情況。閃爍的紅圈代表選擇的要分析的管點,高亮綠色代表分析出的管線,紅色箭頭代表流向,分析出的管點為了不掩蓋管線類型信息,采用了和管點圖層一致的管點符號顏色。根據(jù)此功能,能夠方便的掌握該管點的管線流向信息,并可以直觀地檢查是否存在數(shù)據(jù)錯誤。
本文提出的排水管網(wǎng)上下游分析算法簡單實用,在大數(shù)據(jù)量情況下依然能夠流暢分析出溯源結(jié)果,實踐證明是可行而且有效的。該算法不需要借助GIS平臺與特殊的數(shù)據(jù)結(jié)構(gòu),當用戶在前端更新管線或者管點數(shù)據(jù),就可以反映在分析結(jié)果中,降低了排水管線運營平臺的維護成本。算法在局部的上下游分析中有著強大的優(yōu)勢,對于全部管線流向展示可以采用Python工具,定期更新數(shù)據(jù)并成圖展示。目前算法還不支持多管點的溯源分析,是本算法的優(yōu)化方向。