姚志武 ,管林杰 ,張鐘海 ,李俊輝
(1. 長江勘測規(guī)劃設(shè)計研究有限責(zé)任公司,湖北 武漢 430010;2. 長江空間信息技術(shù)工程有限公司(武漢),湖北 武漢 430010;3. 焦作黃河河務(wù)局博愛沁河河務(wù)局,河南 焦作 454450)
2019 年 5 月,《中共中央 國務(wù)院關(guān)于建立國土空間規(guī)劃體系并監(jiān)督實施的若干意見》提出,到2020 年要基本完成國土空間規(guī)劃體系的建設(shè),并初步形成全國國土空間開發(fā)保護(hù)一張圖[1]。而水利基礎(chǔ)設(shè)施空間布局規(guī)劃作為涉及空間利用的專項規(guī)劃,是水利規(guī)劃與國土空間規(guī)劃相銜接的規(guī)劃,是重要涉水生態(tài)空間與水利基礎(chǔ)設(shè)施空間布局落到國土空間一張圖上的前提,是依托一張圖管控平臺落實涉水空間協(xié)調(diào)與管控措施要求的基礎(chǔ)。
開展水利基礎(chǔ)設(shè)施數(shù)據(jù)信息化管理與建設(shè),是貫徹落實中央關(guān)于統(tǒng)一規(guī)劃體系、建立國土空間規(guī)劃體系并監(jiān)督實施的重大部署[2],是強(qiáng)化水對經(jīng)濟(jì)社會發(fā)展、生態(tài)環(huán)境保護(hù)的引導(dǎo)約束和協(xié)同保障作用,貫徹落實“以水而定、量水而行”,對促進(jìn)各類空間布局與水資源承載能力、防洪安全保障水平相適應(yīng),預(yù)留水利基礎(chǔ)設(shè)施建設(shè)空間具有重要作用。
目前,各種 GIS 平臺軟件都具備空間數(shù)據(jù)的查詢、編輯等功能,ArcGIS 軟件體系作為 GIS 平臺的引領(lǐng)者,具有強(qiáng)大的空間數(shù)據(jù)管理、處理和分析功能,然而其桌面管理平臺 ArcMap 功能繁多且對于初學(xué)者相對復(fù)雜。因此,本研究圍繞多層級數(shù)據(jù)信息全景可視化、規(guī)劃藍(lán)圖、數(shù)據(jù)臺賬、空間布局、規(guī)劃報告、成果管理等業(yè)務(wù)應(yīng)用需求,基于 C# 和AE(ArcGIS Engine)[3]組件設(shè)計并開發(fā)了水利基礎(chǔ)設(shè)施信息管理平臺(以下簡稱平臺),從數(shù)據(jù)收集存儲、數(shù)據(jù)分析管理、專業(yè)應(yīng)用服務(wù) 3 個層面對水利業(yè)務(wù)成員和規(guī)劃設(shè)計人員的業(yè)務(wù)應(yīng)用提供全過程信息化支撐。
為有效對接國土空間規(guī)劃編制工作,考慮涉水各類數(shù)據(jù)的空間特點,結(jié)合水利基礎(chǔ)設(shè)施空間布局規(guī)劃編制工作內(nèi)容,以實用性、統(tǒng)一性、可靠性、先進(jìn)性為原則,建立水利基礎(chǔ)設(shè)施信息管理平臺,具體內(nèi)容如下:
1)研究并建立水利基礎(chǔ)設(shè)施空間布局管理的標(biāo)準(zhǔn)、規(guī)范和體系。
2)以《水利基礎(chǔ)設(shè)施空間布局規(guī)劃編制工作大綱附件》中包括的基礎(chǔ)工作、涉水空間、規(guī)劃基礎(chǔ)設(shè)施三大類(26 張表格)為基礎(chǔ),結(jié)合第一次全國水利普查數(shù)據(jù)結(jié)構(gòu)特點,完成水利基礎(chǔ)設(shè)施空間數(shù)據(jù)庫設(shè)計。
3)研究水利專網(wǎng)上天地圖等公共地圖資源接入方案,并將公共地圖資源作為信息管理平臺的工作底圖。
4)考慮到空間數(shù)據(jù)量龐大、屬性字段繁多等因素,為提高空間要素檢索效率和靈活性,研究Lucene 方式下的全文檢索方案。
5)開發(fā)水利基礎(chǔ)設(shè)施管理平臺,實現(xiàn)對水利基礎(chǔ)設(shè)施信息的統(tǒng)一管理。
平臺總體架構(gòu)如圖 1 所示。
圖 1 平臺總體架構(gòu)
總體架構(gòu)主要包括以下幾個層級:
1)基礎(chǔ)組件層。主要包括 AE(ArcGIS Engine)二次開發(fā)組件庫、DevExpress 界面庫、Sqlite 文件數(shù)據(jù)庫組件、Lucene 全文檢索組件庫等構(gòu)成,是整個管理平臺正常運行的基礎(chǔ)支撐保障。
2)數(shù)據(jù)存儲層。數(shù)據(jù)存儲層是整個平臺運行的“血液”,主要涵蓋基礎(chǔ)空間、涉水工程、各類標(biāo)準(zhǔn)規(guī)范、三區(qū)三線、規(guī)劃報告等相關(guān)數(shù)據(jù)。其中空間數(shù)據(jù)的交換形式主要以 Shapefile,CAD 文件為主,屬性數(shù)據(jù)則以 Excel 文件為主。
3)業(yè)務(wù)邏輯層。平臺對外提供的功能,基本涵蓋數(shù)據(jù)檢查、導(dǎo)入、編輯、輸出的全生命周期管理。
4)應(yīng)用層。平臺面向用戶的可視化層級,即水利基礎(chǔ)設(shè)施信息管理平臺軟件。
5)用戶層。主要包括系統(tǒng)管理、水利部門、其他授權(quán)行業(yè)部門等業(yè)務(wù)人員,平臺根據(jù)用戶類別劃定功能訪問權(quán)限,以保證數(shù)據(jù)安全。
平臺的核心功能是統(tǒng)計得出三大類 26 張表格。通過對表格的分析發(fā)現(xiàn),大部分表格統(tǒng)計都涉及多個空間對象,例如“已建、在建水庫工程空間范圍統(tǒng)計表”中,記錄包括水庫、水庫管理范圍、水庫保護(hù)范圍、壩址斷面等空間對象,然而每一類空間對象都具備其特有的屬性信息。顯然,已有的統(tǒng)計表不能作為平臺運行的基礎(chǔ)空間數(shù)據(jù)庫結(jié)構(gòu),需要對表格進(jìn)行拆分,保證所有字段值都是不可分解的原子值,以確保滿足數(shù)據(jù)庫范式設(shè)計要求。
通過對統(tǒng)計表結(jié)構(gòu)的分析,結(jié)合水利規(guī)劃基礎(chǔ)知識,將原始統(tǒng)計表拆分為七大類(51 張表格),如表 1 所示。
表 1 數(shù)據(jù)庫表格數(shù)量統(tǒng)計
在數(shù)據(jù)庫的選擇上,采用 ArcGIS GeoDataBase(地理數(shù)據(jù)庫)中 File GeoDataBase 作為本系統(tǒng)數(shù)據(jù)存儲方式。File GeoDataBase 數(shù)據(jù)模型的優(yōu)點很多,例如對空間數(shù)據(jù)進(jìn)行統(tǒng)一存儲,多用戶可對地理數(shù)據(jù)同時進(jìn)行操作,要素具有連續(xù)性,空間數(shù)據(jù)的編輯精度更高,更便于數(shù)據(jù)的統(tǒng)一組織和管理[4]。
2.3.1 離線地圖存儲方案
由于部分水利基礎(chǔ)設(shè)施數(shù)據(jù)屬于涉密數(shù)據(jù),導(dǎo)致平臺不能運行在互聯(lián)網(wǎng)上,而只能運行在用戶所在的涉密內(nèi)網(wǎng)中。因此,平臺本身無法接入公共地圖服務(wù),例如天地圖、谷歌地圖等,這對于用戶圖上編輯空間數(shù)據(jù)造成了極大的困難。為解決這個問題,本研究提出一種離線地圖存儲方案,支持平臺在缺少外網(wǎng)支持的情況下讀取離線地圖包中的地圖瓦片,以作為用戶使用時的工作底圖。本研究使用國家地理信息公共服務(wù)平臺中的天地圖數(shù)據(jù)資源作為離線地圖數(shù)據(jù)源,程序設(shè)計過程中將按照版權(quán)聲明要求進(jìn)行數(shù)據(jù)來源的注明。
本研究最開始使用文件系統(tǒng)存儲作為緩存機(jī)制,即將每張瓦片保存為 PNG 圖片。通過程序測試發(fā)現(xiàn)存在 2 個致命問題:1)由于大多數(shù)文件系統(tǒng)本身的限制,F(xiàn)AT(文件分配表)系統(tǒng)中文件數(shù)不能超過 65 536 個,HFS(混合文件系統(tǒng))中不能超過32 767 個,并且在目錄中文件數(shù)超過 20 000 個時,文件訪問速度開始減慢[5];2)程序打包或者離線地圖包拷貝時,由于離散的圖片過多導(dǎo)致速度極度減慢。因此,本研究采用 MBTiles(一種地圖瓦片存儲的數(shù)據(jù)規(guī)范)方式,利用 SQLite 數(shù)據(jù)庫存儲瓦片,并規(guī)定將數(shù)以百萬的瓦片數(shù)據(jù)存儲在 1 個文件中,能夠大大提高海量地圖瓦片的讀取速度[6]。離線瓦片數(shù)據(jù)庫表結(jié)構(gòu)如表 2 所示。
表 2 離線瓦片數(shù)據(jù)庫表結(jié)構(gòu)
本研究將天地圖服務(wù)的 0~10 級作為系統(tǒng)安裝時的默認(rèn)瓦片,平臺后臺服務(wù)提供各個市區(qū)的 11~16 級瓦片離線包的下載,以降低全部瓦片作為打包源文件的壓力。此外,為進(jìn)一步提高瓦片讀取速度,采用雙緩存機(jī)制(即內(nèi)存和文件數(shù)據(jù)庫緩存)讀取瓦片。當(dāng)每次需要讀取瓦片時,首先遍歷瓦片對象緩存池中的對象,如果能夠找到對應(yīng)瓦片則返回,反之則讀取 SQLite 數(shù)據(jù)庫中的瓦片數(shù)據(jù),并將其存入瓦片緩存池中。瓦片讀取流程如圖 2 所示。
本研究中離線地圖存儲與讀取方案解決了以文件方式進(jìn)行地圖瓦片本地存儲時,往往受限于文件系統(tǒng)本身對文件數(shù)量的限制,并且整體可移植性低,難以打包部署項目的問題。同時,考慮了系統(tǒng)頻繁讀寫文件數(shù)據(jù)庫的效率及安全問題,通過引入雙緩存機(jī)制,大大降低了數(shù)據(jù)庫讀寫頻率,增強(qiáng)了瓦片數(shù)據(jù)調(diào)度能力,有效提升了公共服務(wù)地圖瓦片數(shù)據(jù)前端顯示與渲染效率。
圖 2 瓦片讀取流程圖
2.3.2 基于 Lucene 的要素檢索機(jī)制
本研究中的水利基礎(chǔ)設(shè)施數(shù)據(jù)庫涉及 51 張表,那么如何通過關(guān)鍵字快速檢索出用戶感興趣的要素是平臺設(shè)計開發(fā)中亟須解決的問題?;跀?shù)據(jù)庫的查詢方式,通常是采用“Like”關(guān)鍵字進(jìn)行 GREP(模式匹配器)模式的模糊查詢,如若需要檢索的字段很多或數(shù)據(jù)量很大時,這種逐行逐字段遍歷的方式在速度上顯然難以接受。目前采用 ElasticSearch(一個分布式、高擴(kuò)展、高實時的搜索與數(shù)據(jù)分析引擎)作為對象索引處理及查詢功能支撐,屬于主流方案,但本平臺為桌面端應(yīng)用開發(fā),ElasticSearch的方式并不適合平臺的實施與部署。而 Lucene 作為一種全文檢索框架,采用倒排序的檢索機(jī)制,具有很高的檢索效率[7]。為此,使用 Lucene.net 作為全文檢索引擎應(yīng)用開發(fā)包,通過二次開發(fā)方式進(jìn)行全文檢索功能的定制化開發(fā),提高了程序開發(fā)與部署的靈活性。
然而表格眾多,且字段數(shù)量和名稱都各不相同,若為每張表建立其專門的索引庫,顯然難以完成對所有表格的一次性查找??紤]到各個表中字符型字段較多,且用戶查找方式以關(guān)鍵字檢索為主,設(shè)計 1 張中間表結(jié)構(gòu),以此為全文檢索索引庫構(gòu)建的依據(jù)。中間表結(jié)構(gòu)如表 3 所示。
表 3 通用性表結(jié)構(gòu)
用戶通過關(guān)鍵字檢索時,系統(tǒng)首先對查詢關(guān)鍵字分詞,然后進(jìn)入索引文件中找到與這些關(guān)鍵字相關(guān)的信息,最后根據(jù)匹配度高低排序,將結(jié)果返回給用戶。當(dāng)用戶需要查看某條記錄的詳細(xì)信息時,系統(tǒng)會到指定要素類中,根據(jù)要素的唯一標(biāo)識符FID 快速檢索出要素的所有字段信息。檢索流程如圖 3 所示。
圖 3 全文檢索流程圖
基于 Lucene 的要素檢索機(jī)制充分結(jié)合了實際應(yīng)用的開發(fā)方式與應(yīng)用部署模式,提高了系統(tǒng)部署的便捷性和可操作性。同時,要素索引構(gòu)建方式更便于數(shù)據(jù)內(nèi)容的檢索,用戶能夠從不同類型、屬性的所有數(shù)據(jù)中快速獲取滿足檢索要求的內(nèi)容,使整個檢索過程更加便捷與全面。
系統(tǒng)采用 .Net 平臺,使用地理數(shù)據(jù)庫管理水利基礎(chǔ)設(shè)施數(shù)據(jù),基于 ArcGIS Engine 二次開發(fā)進(jìn)行平臺的構(gòu)建。整個平臺采用 C/S(Client/Server)架構(gòu)方式,客戶端基于 .Net 下的 Framework 4.0 框架開發(fā),服務(wù)端則基于 Java 平臺下的 SSM(Spring,SpringMVC,MyBatis)框架開發(fā)[8],客戶端通過HTTP 請求進(jìn)行用戶登錄驗證和軟件版本更新。
在 Visual Studio 2015 開發(fā)平臺上,使用 ArcGIS Engine 10.4 組件庫和 DevExpress 17.2 界面庫,通過二次開發(fā)方式進(jìn)行客戶端的定制開發(fā);在 IntelliJ IDEA 開發(fā)平臺上,借助 SSM 框架和 MySQL 數(shù)據(jù)庫,完成服務(wù)端的定制開發(fā)。ArcGIS Engine 是ArcGIS 的一套軟件開發(fā)引擎,可以讓程序員創(chuàng)建自定義的 GIS 桌面程序,完成對空間數(shù)據(jù)的管理與操作。DevExpress 是一套用戶界面控件庫,幫助開發(fā)人員快速搭建出交互性良好的界面,以提高用戶體驗。開發(fā)工具及說明如表 4 所示。
表 4 應(yīng)用開發(fā)工具
平臺作為水利基礎(chǔ)設(shè)施信息收集的通用性工具,由水利部門統(tǒng)一下發(fā)使用,為數(shù)據(jù)的逐級匯集與統(tǒng)一管理提供了保障。平臺支持各市水利(務(wù))局業(yè)務(wù)人員按照水利基礎(chǔ)設(shè)施空間布局規(guī)劃編制工作方案,根據(jù)統(tǒng)一的數(shù)據(jù)庫設(shè)計規(guī)范,完成水利基礎(chǔ)設(shè)施信息的質(zhì)檢、錄入、管理,進(jìn)而構(gòu)建水利基礎(chǔ)設(shè)施空間和業(yè)務(wù)信息的綜合匯聚、分析和展現(xiàn)平臺,最終實現(xiàn)水利基礎(chǔ)設(shè)施數(shù)據(jù)與自然資源等部門一張圖數(shù)據(jù)共享。系統(tǒng)功能模塊具體如下:
1)數(shù)據(jù)導(dǎo)入模塊。主要支持用戶按照基礎(chǔ)設(shè)施數(shù)據(jù)庫設(shè)計規(guī)范導(dǎo)入數(shù)據(jù)內(nèi)容,包括空間和表格數(shù)據(jù),其中空間數(shù)據(jù)的導(dǎo)入以 Shapefile 和 CAD 文件為主,表格數(shù)據(jù)則以 Excel 文件為主。
2)規(guī)劃藍(lán)圖模塊。為用戶提供地圖操作(地圖放大、地圖縮小、視圖切換、地圖平移等基礎(chǔ)功能)、要素查詢、量算分析(距離和面積量算)等功能,其中要素查詢提供屬性(支持以全文檢索方式查詢要素內(nèi)容)和空間查詢(支持地圖交互性查詢,如點選、拉框、自定義多邊形等查詢)。
3)數(shù)據(jù)臺賬模塊。提供以水利基礎(chǔ)設(shè)施數(shù)據(jù)庫為信息源,快速統(tǒng)計得出三大類 26 張表格的功能,從而有效掌握水利設(shè)施基本信息與建設(shè)情況,提高水利基礎(chǔ)設(shè)施項目信息化管理水平。
4)規(guī)劃報告模塊。完成對規(guī)劃報告的統(tǒng)一管理,包括上傳、下載、更新報告及歷史版本查看等功能。通過信息化手段管理水利基礎(chǔ)設(shè)施的基礎(chǔ)數(shù)據(jù)、表格、圖件、規(guī)劃報告等成果數(shù)據(jù)。
5)成果管理模塊?;诮y(tǒng)一的質(zhì)檢要求及細(xì)則,梳理總結(jié)形成質(zhì)量檢查標(biāo)準(zhǔn)體系,通過成果管理工具,能夠從數(shù)據(jù)完成性、規(guī)范性、一致性、空間拓?fù)涞确矫孢M(jìn)行質(zhì)量檢查,從而規(guī)范鞏固并提升成果質(zhì)量。
本研究基于 ArcGIS Engine 設(shè)計開發(fā)了水利基礎(chǔ)設(shè)施信息管理平臺,并結(jié)合項目實際需求,研究了離線瓦片存儲和 Lucene 全文檢索引擎技術(shù),通過不斷的改進(jìn)與優(yōu)化,提出了一套符合項目應(yīng)用的解決方案。平臺實現(xiàn)了地圖瀏覽、空間數(shù)據(jù)管理及數(shù)據(jù)質(zhì)檢分析功能,可對海量水利基礎(chǔ)設(shè)施的空間和屬性信息進(jìn)行高效的組織、管理和應(yīng)用,并為下一步構(gòu)建基礎(chǔ)設(shè)施空間布局一張圖管控平臺提供了堅實的基礎(chǔ)與保障。目前平臺已經(jīng)完成開發(fā),在業(yè)主單位的推行下進(jìn)行試點市區(qū)的試運行,實現(xiàn)了水利基礎(chǔ)數(shù)據(jù)內(nèi)容的統(tǒng)一收集、入庫、管理。