李增煥,汪文超,崔遠來
(武漢大學 水資源與水電工程科學國家重點實驗室,武漢 430072)
工程分散性、供水動態性、水雨情變化性等灌區特性導致水資源工程管理工作的復雜性[1],灌區工程管理是灌區管理的基礎,是灌溉水高效利用的基礎和保障。灌區工程信息包括灌溉系統(渠道及渠系建筑物)信息、排水系統(排水溝及其建筑物)信息、水庫塘堰信息、農業(作物及產量)信息、提灌設施(泵站及機井)信息、交通管理信息(行政區劃及道路管理)等。手工錄入的灌區工情信息,數據量大,采集耗時長,更新不便,而且數據間聯系少,孤島效應明顯[2]。采用互聯網開發技術,實現灌區工情數據實時管理和查閱是灌區管理的有效辦法。通過設計標準格式的數據庫結構,實現基于B/S模式的工情管理系統,有利于滿足灌區管理者按需管理、實時查閱和打印報表等基本需求,提高灌區管理水平,提高灌區用水效益。
胡柳明等[3]設計灌區工情數據庫的編碼方式,對渠道、河流、水庫等進行統一編碼,為灌區原始數據編碼方式提供了合理的參考,但渠道編碼對渠道分級特征的表現稍有欠缺,當渠道分級復雜時,還需進行編碼細化。陳興等[4]設計包含信息管理系統(MS)、地理信息系統(GIS)和決策支持系統(DSS)三大部分的灌區管理系統,較為全面地提出灌區信息管理系統功能結構的設計方案,它在實現方式上采用了C/S結構,安全性高,但維護升級不便。本文以渠道信息、渠系建筑物信息、農業信息為例,采用兼容性、擴展性、維護性更好的B/S結構,開發灌區工情管理系統,以滿足灌區管理者實時管理的需求。
灌區工情管理系統,是以人為主導,結合現代化管理理念,利用計算機硬件、軟件,網絡通信設備,辦公設備,軟件集成技術等,采集、存儲、維護信息,進而進行分析和業務處理的網絡系統[4]。本文開發的系統涵蓋灌區工程情況的信息維護、分析、統計等功能,以實現灌區空間數據及屬性數據一體化管理。系統包括兩個子系統:信息管理子系統和空間展示子系統。信息管理子系統負責工程信息的數據查詢、統計、維護、輸出、導入,空間展示負責不同工程信息的空間位置關系展示,具體功能結構見圖1。

圖1 系統功能結構圖Fig.1 The structure of system function
信息管理系統包含數據的導入、導出、查詢、維護、統計、打印等功能,數據信息包括灌區總體信息、渠道信息、渠系建筑物信息、農業信息、用戶信息及空間位置信息等。
(1)信息查詢:包含工程概況、渠道信息、渠系建筑物信息、農業信息的篩選查詢,查詢方式包括精確查詢、模糊查詢、區間查詢以及組合查詢。信息查詢時可自定義選擇工程信息字段,還可實現數據排序。其中渠道信息包括渠道名稱、長度、管理單位、設計流量、設計長度、灌溉面積等信息;渠系建筑物包括建筑物名稱、建筑物工程信息、設計參數、管理單位等信息;農業信息包括農作物的種植面積、產量及配套的塘堰數目信息。
(2)信息統計分析 :包括渠道設計長度、設計流量、設計灌溉面積、襯砌率、渠系建筑物的數目、農業種植狀況的統計結果,統計圖分為條形圖、折線圖和餅狀圖,根據統計圖結果可分析多個渠道流量范圍、長度范圍及其襯砌情況。
(3)數據維護:包括渠道信息、渠系建筑物信息、農業信息的單個數據修改、刪除、添加等功能,同時支持數據庫的同步更新。
(4)輸出打印:包括工程數據的導出、打印,導出、打印時可自定義信息字段及其順序,還可以選擇打印當前頁面顯示數據或者所有數據。
(5)數據導入:包括數據TXT格式和EXCEL格式批量導入,同時支持數據庫的批量數據同步添加。
空間展示子系統包含4個子功能:地圖基本操作、渠道展示、渠系工程信息展示、農業信息展示。
(1)地圖基本操作:地圖放大、縮小、移動、定位。
(2)渠道展示:通過不同寬度曲線代表不同等級的渠道所在位置,在曲線上方設置渠道名稱標簽。地圖上方有渠道選擇單選框,選擇某一渠道,地圖實時顯示其對應于地圖上的空間位置。 同時顯示其上一級的渠道的位置。
(3)渠系工程信息展示:渠系建筑物包括水閘、涵閘、陡坡等,根據經緯度坐標確定渠系建筑物相對渠道的相應空間位置,用不同形狀的標注代表不同類型的建筑物。通過建筑物類型單選框,可實現某一類建筑物的空間分布情況,比如查詢水閘時,可實現所有的水閘及其所在的渠道在地圖上的展示。當鼠標滑到標注上可查看其簡要信息,包括建筑物名稱和類型,左鍵單擊標注時,可實現建筑物具體設計參數的查詢。
(4)農業信息展示:農業信息以村為單位,地圖上統一用紅色標注代表村,根據經緯度確定其坐標。單點標注代表村民委員會,點擊可查詢該村基本情況和農業種植情況。
灌區工情數據包含渠道信息、渠系建筑物信息、農業信息等靜態數據。數據采集跨度較長、搜集手段原始、人工統計表格錄入沒有統一標準,導致原始數據重復、雜亂、缺測等問題明顯。各類數據格式雜亂,數據間聯系少。對數據進行篩選、糾錯以及編碼等步驟使數據正確性、可靠性提高,同時明確邏輯結構,建立數據庫,方便后期數據查詢與處理。
《全國大型灌區基礎數據庫建設指南》對河流、灌區、閘門、渠道等進行統一編碼[5]。對于渠道分級較多的大型灌區,編碼需進行細化方能滿足數據庫使用。工情管理系統涉及渠道用水狀況,因此需要將用水單元進行編碼,建立與渠道信息的數據聯系。本系統依照數據唯一、邏輯確定、可擴展性好、適用范圍廣的設計原則,設計渠道和村組編碼。
(1)渠道編碼。灌區渠道分級層次多,關系復雜,如漳河灌區分總干、干、分干、支干、分、支、斗、農、毛渠九級渠道。渠道編碼既要依照《全國大型灌區基礎數據庫建設指南》標準,又要符合灌區實際情況,預留足夠空位以便數據庫的擴展使用。渠道編碼方式見圖2。

圖2 渠道編碼Fig.2 Channel coding 注:A-一位數字表示干渠,其中1~8表示干渠,9表示總干渠;BB-兩位數字(01~99),表示分干渠和支干渠,其中01~50表示分干渠,51~99表示支干渠;FFF-三位數字(001~999),表示支渠和分渠,其中001~500表示分渠,511~999表示支渠;CCC-三位數字(001~999),表示斗、農、毛渠,其中001~300代表斗渠,301~600代表農渠,601~999代表毛渠;XX -兩位數字(01~99),編碼工作并未精細到此級別,為以后擴展編碼預留空位。

圖3 村組編碼Fig.3 Village coding 注:XX- 兩位數字,表示縣(市轄區、縣級市、旗),01~18表示市轄區或地區(自治州、盟)轄縣級市,21~80表示縣(旗),81~99表示省直轄縣級市;ZZZ-三位數字,表示鎮(鄉、街道),其中001~009表示街道代碼,100~199表示鎮代碼,200~299表示鄉代碼,300~399表示政企合一單位代碼;CCC-三位數字,表示村(居民委員會),其中001~199表示村民委員會代碼,200表示居民委員會代碼;GG-兩位數字,表示村組編號,將實際村組號作為編碼號,如十組,則為10。
(2)村民委員會編碼。農業信息表對村民委員會進行編碼,行政編碼統一使用《中華人民共和國行政區劃代碼》國家標準和《縣以下行政區劃代碼編碼規則》進行編制,并參照中國國家統計局的行政區劃代碼作為編碼,行政編碼精確到村民委員會。農業信息的基本單位是村組,統計數據中農業信息可能細化到村組,本系統對組進行數據編碼補充,然后以村為基本單位進行整合。編碼方式見圖3。渠道編碼是灌溉信息的基本單元,村組編碼是農業信息的基本單元,屬于不同的信息類別,因此采用兩種編碼方式。一個村對應有一個灌溉渠道,以此建立數據聯系,進行灌溉信息和農業數據的調用。
工情管理系統以渠道作為基本單元,根據渠道上建有各類渠系建筑物建立渠道與渠系建筑聯系,通過村所在的輸水渠道建立村與渠道聯系,工程屬性作為實體屬性,列于相應表中。具體E-R圖見圖4。矩形代表實體,橢圓為實體屬性,菱形代表實體間聯系,線條及數字代表對應關系,有一對一,一對多和多對多3種關系。

圖4 E-R圖Fig.4 Entity relationship diagram
灌區數據表根據獲取的原始數據進行分類整理后建立數據庫。其下數據表分為渠道信息表、渠系建筑物信息表、農業信息表、用戶信息表。渠道信息表包含渠道名稱、管理單位、設計長度、設計灌溉面積、設計流量、灌溉水利用系數等字段;渠系建筑物信息表包括建筑物基本信息、空間信息、工程信息、設計參數、管理信息等字段;農業信息包括農業種植情況、行政情況、產量情況、水利設施統計數目等字段。
從用戶需求分析出發,圍繞軟件功能設計,分別從數據庫設計、軟件系統開發、系統功能實現等環節進行展開。
灌區工情管理是灌區信息化管理的基礎,這就要求工情管理系統有較高的數據共享性、較好的維護性。同時為了方便灌區管理者的使用,要求系統有較低的專業門檻以及合適的信息展示方式。傳統的灌區管理類軟件大部分采用本地客戶端形式,如果沒有安裝客戶端就無法使用,還需要大量占用內存。
本系統采用成本低、跨平臺強、開放性好的B/S模式(瀏覽器/服務器體系結構),客戶機只需訪問相應瀏覽器域名就可實現工情數據的查詢管理[6,7]。系統結構圖如圖5所示。

圖5 總體結構Fig.5 The general structure of system
客戶端包含傳送、接收數據和用戶界面展示,本系統中的用戶界面根據灌區工程對象分為工程概況、渠道信息、渠系建筑物信息、農業信息4個界面,并通過渠道、渠系建筑物類型單選框的選擇實現數據傳送,通過AJAX技術接收數據并返回相應信息。WEB服務器端實現數據庫設計和功能結構設計。在WEB服務器的PHPMYADMIN數據管理平臺上進行數據庫的管理,使用SQL語言實現標準格式的渠道信息表、渠系建筑物信息表、農業信息表、用戶信息表的創建、修改、建立主鍵、索引等操作,實現數據庫E-R邏輯結構。由于數據庫的數據和功能代碼均存儲于WEB服務器端,因此訪問本系統網絡域名,經過用戶驗證后便可實現數據查詢和管理,用戶交互均在服務器端的實現,信息共享性高。此外,在進行系統功能代碼的修改維護等,可通過配置主機遠程地址,可實現服務器端實時修改和同步更新,系統維護性高。
系統功能代碼存儲WEB服務器端,通過THINKPHP框架實現功能代碼的文件部署,根據主要功能劃分為信息管理類和空間展示類,通過設置信息管理類中的方法來實現數據查詢、管理、統計、導入等功能,通過設置空間展示類中的方法實現地圖操作、渠道展示、渠系工程信息展示、農業信息展示等功能。
3.2.1 信息管理子系統實現
信息管理子系統實現包括數據庫實現、數據查詢邏輯實現、數據導入導出實現、圖表技術實現。
(1)數據庫實現:將灌區渠道、渠系建筑物的工程信息、設計參數、管理信息、空間信息按照數據庫錄入格式整理,導入網絡服務器的PHPMYADMIN平臺數據庫的channel表和buildingcanals表中,農業信息導入agriculture表中。通過渠道編碼,實現渠道信息唯一確定;通過村鎮編碼,使農業信息唯一確定,方便數據邏輯調用。
(2)數據查詢邏輯實現:用戶選擇渠道名稱、襯砌長度范圍、流量范圍、灌溉面積等工程查詢條件,通過AJAX對象打包傳至后臺邏輯模塊中,通過PHP語句解析條件,請求渠道信息表中的數據,并通過解析后的條件篩選信息,以JSON數據串格式返回數據,AJAX對象繼續打包處理后將數據傳至前臺,以對象形式寫入表格、統計圖或者地圖信息窗口中,展現給用戶相應的工程信息。數據查詢窗口如圖6所示。

圖6 數據查詢窗口Fig.6 The window of data querying
(3)導入導出實現:數據導出的實現需根據HTTP協議,編寫HTTP消息頭和消息體。消息頭即通知瀏覽器執行導出程序的說明代碼,消息體即用戶提交需導出的工程信息字段。后臺接收消息頭和消息體信息,調用數據,通知瀏覽器實行下載操作,實現數據下載。數據導入時需要先將TXT或EXCEL文件上傳至網絡服務器端的上傳文件位置,再通過文件讀取、數據格式轉換、數組賦值、數據CURD操作等步驟,實現數據批量導入數據庫的渠道表格、渠系建筑物表格、農業信息表格等。導出實現如圖7所示。

圖7 數據導出窗口Fig.7 The window of data exporting
(4)圖表實現:表格的實現主要通過DTGRID控件技術實現,以渠道信息為例,首先配置表格標題信息和單元格形式,再將用戶選擇的信息通過AJAXA技術篩選并填充進單元格中,實現表格展示,通過編寫工具欄的邏輯結構代碼(刷新、查詢、導出、打印等),實現表格數據的功能性交互。統計圖的實現主要通過ECHARTS控件實現,ECAHRTS面向數據設計,通過合理的數據組織可實現直觀生動、可交互的數據可視化圖表[8]。首先配置統計圖形式(條形圖、折線圖、餅狀圖等),再根據用戶提交的信息選擇統計信息類型,后臺傳遞統計的具體數據,實現渠道數量、流量、灌溉面積、襯砌長度等的統計圖展示。表格展示窗口如圖8所示。

圖8 表格窗口Fig.8 The window of form
3.2.2 空間展示子系統實現
傳統GIS平臺耗時長、結構復雜、建設與維護成本高。百度地圖API,結合JAVASCRIPT語言,搭建空間信息發布平臺,能直觀有效地進行灌區空間信息的管理[9]。空間展示子系統主要基于百度地圖API技術實現,包括地圖基本操作、渠道展示、渠系工程信息展示、農業展示實現。通過在地圖上添加不同的圖層來控制不同工程實體的展示。底圖層是百度地圖,可通過開源包獲取所需地區的地圖代碼。實現界面如圖9所示。
(1)地圖基本操作:通過JAVASCRIPT語言配置鼠標監聽事件,實現地圖的放大、縮小、移動等操作。
(2)渠道展示:地圖上的渠道是通過一系列點據折線相連形成的,通過JAVASCRIPT語言編寫代碼,將渠道點折線相連,即可實現渠道的展示,渠道名稱以短標簽形式在渠道右上方顯示。
(3)渠系工程信息展示:渠系建筑物經緯度坐標存儲于渠系建筑物信息表中,通過渠道單選框查詢某一渠道附近的渠系建筑物的空間位置,建筑物類型單選框查詢某一類建筑物的空間位置。不同渠系工程點通過不同類型的MARKER標注進行區分,鼠標單擊單個建筑物標注可彈出信息窗口,實現此點詳細信息的查詢,包括管理信息、設計參數等。
(4)農業信息展示:在農業信息中,根據村委會坐標實現農業信息在百度地圖上的展示,與渠系建筑物類似,通過信息窗口展示詳細農業信息查詢,包括行政信息、種植信息、塘堰數目。

圖9 空間展示子系統實現界面Fig.9 The subsystem interface of space display
界面展示包括圖形數據和屬性數據的管理展示,圖形數據更加直觀,屬性數據更加詳細[10],兩者結合能有效提高管理水平。傳統VB語言編寫的灌區管理類軟件客戶端界面專業要求高、人機界面較差、操作不便,本系統開發界面采用HTML、CSS、JAVASCRIPT語言進行編寫,采用簡潔直觀的BOOTSTRAP前端開發框架,快速搭建簡易大方的前臺界面,并通過圖表形式對數據進行管理展示。
系統界面包括標題欄、內容主體兩個部分。其中標題欄包括當前用戶訪問的信息模塊提示,包括渠道信息、渠系建筑物信息、農業信息模塊鏈接,以及用戶登錄狀態顯示。
內容主體包括上方信息單選框,信息管理和空間展示功能切換按鈕以及下方空間展示或者信息管理內容。當用戶選擇某一上級渠道時,點擊空間展示按鈕,可顯示上級渠道所在的位置;點擊表格數據按鈕,可查看此渠道及其下所有渠道的名稱、流量、面積等靜態信息。點擊渠系建筑物頁面,再點擊空間展示按鈕,可查看不同渠道和不同標注代表的建筑物以及其具體信息。查詢表格數據時,表格下方有一系列功能欄,包括刷新、快速查詢、高級查詢、數據導出、打印以及數據統計功能。點擊功能欄時,彈出模態框,實現不同功能的數據管理查詢。其中數據統計功能使用ECHARTS技術實現渠道流量、渠道灌溉面積、長度等的折線圖或柱狀圖展示。系統界面如圖10所示。

圖10 系統界面Fig.10 The system interfaces
工情管理信息化是灌區現代化管理的重要內容。本文以渠道信息、渠系建筑物信息、農業信息為代表,就功能結構、數據庫結構設計以及系統實現3方面詳細闡述了灌區工情管理系統的開發過程。筆者通過細化渠道編碼,規范數據格式,設計E-R實體聯系圖,將灌區積累多年的渠道信息、渠系建筑物信息、農業信息等靜態數據導入互聯網端數據庫中,形成邏輯關系明確的信息管理數據庫系統。本系統采用百度地圖API實現空間展示功能,采用DTGRID控件技術實現信息管理功能,通過AJAX實現數據交互,通過ECHARTS控件技術實現統計圖的展示,結合BOOTSTRAP前端框架和多種WEB開發語言,實現灌區圖形數據和屬性數據的多樣化管理。系統基于B/S模式開發,有效減輕客戶端的負擔,使界面設計更加簡潔方便,用戶只需訪問瀏覽器便可實現隨時隨地系統訪問和多樣化數據查詢,同時通過配置遠程環境,可實現系統的實時更新和維護,使系統優化升級不受時間和空間限制。
灌區工情管理與實時動態監測分不開。在以后的系統開發過程中,可將灌區工情動態數據按照時間序列錄入數據庫,同時搭配硬件設施,以實現工程實時動態管理,為取水、用水、配水調度和決策提供更及時的數據支撐。目前系統數據調用和事件響應速度較慢,可進行數據優化以及系統性能優化,以達到更好的用戶體驗和開發效果。
□
[1] 史湘琨,劉子亭.基于WebOS技術的灌區信息管理系統開發應用[J].中國農村水利水電,2013,(9): 71-72.
[2] 王洪彥.信息化灌區管理中信息數據的整合研究[J].中國水利,2015,(15):43-45.
[3] 胡柳明,周新志,嚴 華.都江堰灌區工情數據庫建設中的水利設施編碼設計[J].水利科技與經濟,2008,14(10):810-812.
[4] 陳 興,程吉林,朱春龍,等.大型灌區管理信息系統的研究與開發[J].灌溉排水學報,2006,25(2):53-57.
[5] 全國大型灌區基礎數據庫建設指南[Z].中國灌溉排水發展中心,清華大學水利水電工程系,2005.
[6] 樊 勝.C/S與B/S的結構比較及Web數據庫的訪問方式[J].情報科學,2001,19(4):443-445.
[7] 廖志英,董安邦.基于C/S和B/S混合結構的管理信息系統運行模式[J].計算機工程與應用,2002,38(2):184-185.
[8] 王子毅,張春海.基于ECharts的數據可視化分析組件設計實現[J].微型機與應用,2016,35(14):46-48.
[9] 杜傳明.百度地圖API在小型地理信息系統中的應用[J].測繪與空間地理信息,2011,34(14):152-153.
[10] 鄭祖金.基于MapX開發灌區管理信息系統[J].中國農村水利水電,2005,(2):30-31.