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