王高旭 ,吳永祥 ,雷四華 ,魏俊彪 ,孔夢園
(1. 南京水利科學研究院水文水資源與水利工程科學國家重點實驗室,江蘇 南京 210029;2. 廣東水利水電科學研究院,廣東 廣州 510610)
為提高水資源管理綜合能力,實現水資源管理向動態、精細、定量和科學管理的轉變,加快水資源管理信息化建設進程,我國從 2012 年開始實施國家水資源監控能力建設項目[1]。該項目計劃建立與用水總量、用水效率和水功能區限制納污控制相適應的監控體系,建成水利部、流域與省三級水資源監控管理平臺,形成與實行最嚴格水資源管理制度相適應的國家水資源監控能力,支撐水資源管理定量考核工作[1–2]。在該項目建設過程中,為實現水資源管理信息的存儲、管理和交換,必須對數據庫所存儲的所有對象進行編碼。依據國家水資源監控能力建設項目建設需求,在分析已有編碼成果的基礎上,研究提出國家水資源監控能力建設項目編碼方案,可應用于各級系統的數據庫和應用軟件中信息的存儲、檢索、分析、輸出及交換等,對實現各級系統的互聯互通和數據共享具有重要意義。
編碼是將事物或概念(編碼對象)賦予有一定規律性的、易于被計算機和人識別與處理的符號[3]。將對象引入數據庫中后,每個對象在一定作用范圍內應有唯一不變的代碼。編碼設計的主要目的是為數據的存儲、查閱等提供統一對應關系,在數據庫中的主要作用是實現記錄在一定作用范圍的唯一標識。目前,我國各行業都建立了許多關于代碼編制規則或成果的標準規范,較好地滿足了各行各業信息化的需求。與水資源管理相關的代碼編制標準如表 1 所示。
上述代碼編制相關的標準規范,可以歸納為 2 種類型:1)既有編碼規則又有編碼成果,例如組織機構、行政區劃、河流和湖泊等代碼。2)僅有編碼規則但沒有編碼成果,例如 GB/T 33113—2016《水資源管理信息對象代碼編制規范》和 SL 213—2012 《水利工程代碼編制規范》標準中所列的各類對象。
在分析已有的編碼規則和代碼成果的基礎上,從國家水資源監控能力建設項目需求及建設管理方式考慮,現有成果在該項目的適用性方面主要存在以下不足:
1)已有標準規范的編碼對象尚不能完全涵蓋國家水資源監控能力建設項目涉及的對象。例如國家水資源監控能力建設項目中的取用水戶、取用水測站、地表水和地下水水源地、污水處理廠、入河排污口、水功能區界碑等許多對象并沒現成的編碼規則或代碼成果。

表 1 水資源管理相關代碼編制標準
2)部分具有代碼成果的對象,代碼成果的覆蓋面不能滿足國家水資源監控能力建設項目的要求。比如水庫代碼主要包含了我國大型和中型水庫的代碼成果,對數量最多的小型水庫沒有編碼成果。該代碼標準于 2000 年頒布后并未修訂過,因此也無法提供 2000 年之后新建水庫的代碼。
3)僅有編碼規則或者代碼成果覆蓋面不夠的對象編碼規則,許多都使用了流域水系屬性字段,需要進行在全國或流域范圍內統一編碼以避免重碼。國家水資源監控能力建設項目對象的入庫主要由各省級行政區水利部門負責完成,在全國或流域范圍內進行統一編碼顯然不能適應該項目建設的實際情況,不利于數據對象實體記錄的擴充。
4)現有許多對象的編碼規則在代碼組成中添加了對象屬性字段,導致每個對象的實體記錄編碼時都需要人工判別屬性字段,無法實現自動編碼,不符合項目建設的要求。比如 SL 213—2012《水利工程代碼編制規范》中,機電排灌站代碼最后 1 位數字表示“機電排灌站類別”,河道斷面代碼最后 1 位數字表示“斷面位置”等。需要在數據庫中體現的對象屬性可以作為 1 個字段放在數據庫表中,這樣既可以提高編碼的效率,也更有利于信息的檢索。
除了已經頒布的標準規范外,2013 年完成的第一次全國水利普查中也對河湖水系、各類水利工程進行了編碼[4]。對于工程類對象,水利普查編碼成果的編碼方式統一是 6 位行政區劃代碼加 6 位順序號,共 12 位字符[5]。由于水利普查工作的編碼對象數量較為全面,且容易擴充。國家水資源監控能力建設項目的基礎信息數據主要來自第一次全國水利普查數據,故對于項目中涉及的河湖水系和水利工程對象可以采用水利普查的代碼成果,這樣有利于保持對象編碼的一致性,并且減少了水資源管理數據庫的編碼工作量。
根據以上分析,目前已建相關數據庫標準中的對象無法涵蓋國家水資源監控能力建設項目涉及到的水資源管理對象,并且已有部分對象的編碼無法滿足項目建設的需要,因此需要對國家水資源監控能力建設項目的對象編碼進行設計研究。對于國家水資源監控能力建設項目中采用的編碼,應該滿足繼承性、適用性、可擴展性和可操作性的要求[6]。繼承性是指水資源管理數據庫的編碼要盡量繼承已有的編碼規則或成果,充分利用已有成果;適用性是指引用已有的編碼規則或成果要能滿足本項目數據庫建設的需求,對有矛盾、不適用的編碼規則或代碼成果進行重新編制;可擴展性是指引用的或新建的編碼規則要具有可擴展性,在編碼對象實體增加的情況下可以延續編碼;可操作性是指編碼規則具有實際的操作意義,在編碼的工作量、難度等方面是合理可行的。綜合考慮以上因素,國家水資源監控能力建設項目對象編碼包括以下 3 類來源:
1)已有編碼規則和成果,且編碼對象數量相對穩定的,則采用已有編碼成果。例如河流、湖泊和流域統一采用第一次全國水利普查既有的編碼成果,水利普查中的河湖基本情況普查是目前關于河流和湖泊的最新、最全面的成果[4–5],在國家水資源監控能力建設項目中引用水利普查的代碼成果是可行的。
2)已有大范圍應用的編碼規則和成果,但編碼對象數量不穩定,如果原有規則能夠保證不通過統一編碼就可以順利增加對象,則采用已有編碼規則和成果。例如行政區劃、組織機構、水文測站的代碼等都參照已有的代碼標準規范進行編制。
3)其他需要重新制定編碼規則的對象,其編碼規則應簡單可操作,盡量保證可以自動編碼。
根據水資源監控能力建設項目所管理信息和數據模型的特點,應將需要編碼的內容分為對象和屬性 2 類。對象對應于水資源管理中涉及的具體實體。屬性對應于對象的某一類具體特征,設定為限制選擇的枚舉型,即每類屬性枚舉項小于 10 的對應于從 1 開始順序編碼的 1 個數字,枚舉項為 2 位的從 01 開始,以此類推。屬性類字段的枚舉代碼較為簡單,在本文中就不展開討論。綜合以上要求,提出以下項目對象類編碼的原則:
1)對于已有編碼規則或代碼成果的信息,若其規則或成果滿足本項目建設需求,則直接使用已有的規則或成果。對于新增加的對象,在原有編碼成果基礎上按已有的規則繼續編碼。
2)代碼應保證唯一性,每個編碼對象或屬性有且僅有 1 個代碼,在同一對象類內 1 個代碼只能標識 1 個編碼對象或屬性。
3)代碼應具備可擴展性,能夠方便地增加同一類對象或屬性的代碼。
4)代碼應簡便、易行,屬性類別應盡量分拆到最小分類,應盡量避免不同分類的組合代碼。
5)代碼元素優先采用阿拉伯數字字符,當阿拉伯數字不足以表達時,可按照 A,B,C,… 的順序使用大寫英文字母(其中字母 I,O,Z 舍棄不用)。
6)因任何原因造成某一具體對象的屬性修改,原初始代碼不得修改;具體對象滅失時,在對象類內其代碼不得重新賦值使用。
根據國家水資源監控能力建設項目數據入庫的需求分析,確定該項目共需要對 97 個對象進行編碼。其中有 9 個對象引用已有國家和水利行業標準規范的水資源管理對象編碼,有 17 個對象采用第一次全國水利普查的編碼成果;有 71 個沒有現成編碼規則和代碼成果,需要制定編碼規則來編制代碼。
根據上述編碼原則,根據不同編碼對象的特點,確定了 3 種編碼方式:1)基于縣級行政區劃代碼進行編碼;2)基于單位組織機構代碼進行編碼;3)基于流域代碼進行編碼。
這 3 種編碼方式分析如下:
1)基于行政區劃代碼進行編碼。這是本項目中采用最多的一種編碼方式,適用于各類工程、各級水資源管理部門文件(包括各類方案、規劃、計劃、總結、年報、公報)等,如大壩、水功能區界碑、地下水水源地、水量調度計劃、水量調度總結、突發事件處置報告書和水資源公報等對象。編碼時采用 GB/T 2260—2013《中華人民共和國行政區劃代碼》的縣級行政區劃代碼加順序碼的方式,文件類對象也可根據需要加上編制年份。如果行政區劃進行了調整,需要根據新的行政區劃更新編碼,并且通過關系表來建立行政區劃調整前后對象實體間的映射關系??缧姓^的對象(主要是各類工程),采用上一級行政區劃代碼;跨省級行政區的對象,約定使用 888888。以地下水水源地為例說明基于行政區劃代碼進行編碼的規則:地下水水源地代碼由 12 位數字表示,其代碼格式為PPRRCCNNNNNN;PPRRCC 為 6 位數字,是地下水水源地所在縣級行政區劃代碼;NNNNNN 為地下水水源地在所屬行政區中的順序編號,取值范圍為000001~999999。
2)基于單位組織機構代碼進行編碼。這種編碼方式主要用于涉水組織機構及由其完成的相關文件,如取用水戶、自來水廠、污水處理廠、水資源費項目、企業水平衡測試報告書、用水統計報表等對象。編碼時采用 GB/T 11714—1997《全國組織機構代碼編制規則》加順序碼的方式,項目或文件類對象可根據需要加上編制年份。組織機構代碼的應用跟行政區劃代碼的應用類似,也有產生和消亡的過程,可以通過關系表實現調整前后的映射關系。以水資源費項目為例說明基于行政區劃代碼進行編碼的規則:水資源費項目代碼應由 16 位數字或大寫英文字母表示,代碼格式為AAAAAAAAAYYYYNNN;AAAAAAAAA 為 9 位數字或大寫英文字母,表示水資源費項目承擔單位的組織機構代碼;YYYY 為 4 位數字,表示水資源費項目的開始年份;NNN 為 3 位數字,表示水資源費項目的順序編號,取值范圍為 001~999。
3)基于流域代碼進行編碼。這類編碼的對象較少,僅適用于數目相對穩定的自然類對象,需要進行統一編碼。該項目中主要有水系岸線、水系軸線、水文地質單元、地下水降落漏斗等 4 個自然類對象。編碼時采用水利普查時的流域代碼成果加順序碼的方式。以水系岸線為例說明基于流域代碼進行編碼的規則:水系岸線代碼由 16 位數字或字母表示,代碼格式為 BTFFFFFFFFFYNNNN;BTFFFFFFFFFY 為 12 位數字或字母,表示包含此水系岸線的最小流域代碼;NNNN 為水系岸線在最小流域內的順序編號,取值范圍為 0001~9999。
本編碼技術規定在 2013 年發布了第 1 版,在全國 40 個監控能力建設節點中得到了廣泛的應用[7]。2016 年,國家水資源監控能力建設項目辦公室組織開展了項目標準應用情況的調研,共收集到 23 個建設節點的反饋意見。23 個建設節點均完全采納了本編碼方案,調研結果表明本編碼方案在國家水資源監控能力建設項目中得到了充分應用,對實現各級系統的互聯互通和數據共享發揮了重要作用[8–9]。通過調研,也發現了一些需要改進的問題。比如本編碼方案中水功能區對象僅包括了《全國重要江河湖泊水功能區劃(2011—2030)》中所列的重要水功能區,考慮地方需求應增加省級水功能區對象及其編碼規則;2015 年,我國開始使用統一社會信用代碼[10],本標準涉及法人及其他組織的代碼之處均應做一定的協調或修改。這些問題在本技術規定的修訂版本中已進行了修改。
國家水資源監控能力建設項目涉及的對象眾多,類別復雜,對其進行合理的編碼是一項重要的基礎工作。依據國家水資源監控能力建設項目建設需求,在分析已有編碼成果的基礎上,研究提出了國家水資源監控能力建設項目對象的編碼方案。該方案充分考慮了已有標準規范和水利普查的編碼成果在本項目中的適用性,繼續延用滿足本項目建設需求的編碼規則和代碼成果。對已有成果尚未涵蓋的對象,研究提出了編碼方案。新編代碼不包含特定業務語義,主要采用基本碼加順序碼的方式,絕大多數對象都可以實現自動編碼,滿足對象實體數量不斷增加的需求。該編碼方案已在國家水資源監控能力建設項目中得到應用,有效支撐了數據庫系統的建設和應用系統的開發,可為類似多層級、多建設主體的大型信息化系統建設提供編碼方案方面的借鑒。