摘 要:河流數(shù)據(jù)作為一種地理信息,一般由地圖進(jìn)行保存、展示,而地理信息系統(tǒng)(GIS)比傳統(tǒng)地圖的表現(xiàn)形式和內(nèi)容更加豐富。利用GIS可以更方便地展示、存儲(chǔ)和查詢河流信息,并對(duì)河流數(shù)據(jù)進(jìn)行空間緩沖區(qū)查詢,為相關(guān)部門制定決策提供依據(jù)。基于此,首先,選擇適用的軟件開發(fā)環(huán)境和開發(fā)語(yǔ)言,確定系統(tǒng)需要的開發(fā)技術(shù)和開發(fā)方法。其次,收集整理資料和數(shù)據(jù),完成系統(tǒng)所需要的基礎(chǔ)數(shù)據(jù)的制作。再次,完成系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)與構(gòu)建,建立河流信息查詢系統(tǒng),開發(fā)用戶管理,GIS地圖顯示,河流信息的顯示、存儲(chǔ)和信息查詢等功能。最后,使用山東省河流數(shù)據(jù)測(cè)試系統(tǒng)的可靠性和實(shí)用性,驗(yàn)證研究預(yù)期
目的。
關(guān)鍵詞:河流數(shù)據(jù);屬性信息查詢;空間信息查詢;GIS二次開發(fā)
中圖分類號(hào):P331 文獻(xiàn)標(biāo)志碼:B 文章編號(hào):2095–3305(2024)12–0-03
以往,河流信息以傳統(tǒng)地圖的形式存儲(chǔ)與顯示,但傳統(tǒng)地圖不利于河流信息的屬性查詢、空間查詢等操作,基于地理信息系統(tǒng)的河流信息查詢與展示系統(tǒng)有利于處理和查詢相關(guān)地理數(shù)據(jù),從而解決傳統(tǒng)地圖限制地理數(shù)據(jù)操作的問題[1]。因此,主要模擬山東省的河流信息查詢與展示操作,研究過程中以山東省的河流信息為實(shí)驗(yàn)數(shù)據(jù),將河流信息的展示、存儲(chǔ)、查詢操作作為系統(tǒng)目標(biāo)?;贕IS的河流信息查詢與展示有利于突破傳統(tǒng)地圖保存地理數(shù)據(jù)的瓶頸,以便利用地理數(shù)據(jù)實(shí)現(xiàn)存儲(chǔ)、查詢操作,并有利于地理數(shù)據(jù)的更新與保存,推動(dòng)山東省河流數(shù)據(jù)信息化[2]。
1 需求分析
1.1 數(shù)據(jù)需求分析
數(shù)據(jù)需求分析是系統(tǒng)數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的重要環(huán)節(jié)。該環(huán)節(jié)是確定系統(tǒng)需要的各種數(shù)據(jù)及數(shù)據(jù)處理的過程,為后續(xù)的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)奠定基礎(chǔ)。
1.1.1 基本數(shù)據(jù)收集
基于GIS的山東河流信息查詢與展示系統(tǒng)以山東省的河流信息為基礎(chǔ)數(shù)據(jù),需要山東省范圍內(nèi)的河流和省市行政區(qū)的基礎(chǔ)信息和地理信息,收集到的數(shù)據(jù)資料主要是全國(guó)范圍的信息,后期還需要處理數(shù)據(jù)。收集到的數(shù)據(jù)分為地理空間數(shù)據(jù)和屬性數(shù)據(jù)兩類。第一,地理空間數(shù)據(jù)以Shapefile格式進(jìn)行文本存儲(chǔ),包括全國(guó)范圍的河流空間數(shù)據(jù)Rivers.shp、省市行政區(qū)數(shù)據(jù)Cities.shp、Provinces.shp等。其中,Rivers.shp屬于線圖層,Cities.shp、Provinces.shp屬于面圖層[3]。第二,屬性數(shù)據(jù)包括系統(tǒng)用戶數(shù)據(jù)、河流基礎(chǔ)數(shù)據(jù)和山東省各市區(qū)信息等,河流基礎(chǔ)數(shù)據(jù)的屬性表主要包含河流流域面積、河流長(zhǎng)度等信息,山東省各市區(qū)數(shù)據(jù)表主要包括占地面積等信息[4]。
1.1.2 數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理過程是對(duì)收集的空間數(shù)據(jù)進(jìn)行處理,提取需要的數(shù)據(jù)范圍。根據(jù)此系統(tǒng)對(duì)數(shù)據(jù)的需求,將對(duì)以上全國(guó)范圍的數(shù)據(jù)進(jìn)行山東省范圍的提取操作。
將Cities.shp、Provinces.shp等矢量圖在ArcMap中打開(屬性表),通過屬性值選擇要素。在Cities.shp中選擇PROVINCE字段值為“山東省”的數(shù)據(jù),并保存選擇要素為City.shp;在Provinces中選擇NAME字段值為“山東省”的數(shù)據(jù),并保存選擇要素為Province.shp。將Rivers.shp在ArcMap中打開,并打開Select By Location對(duì)話框,設(shè)置Cities為Target layer、River.shp為Source layer,分別設(shè)置兩者相交的關(guān)系以及Target feature包括Source feature的關(guān)系,最后將兩個(gè)圖層合并,得到River.shp圖層。
將經(jīng)過以上處理得到的City.shp、Province.shp和River.shp文件進(jìn)行集成,在ArcMap中另存為地圖文件data.mxd。
1.2 功能需求分析
按照系統(tǒng)的開發(fā)目標(biāo),基于GIS的河流信息查詢與展示系統(tǒng)的基本功能包括用戶管理功能、地圖顯示功能和各種數(shù)據(jù)查詢功能等。各功能的具體內(nèi)容如下。第一,數(shù)據(jù)管理功能。此功能用于用戶信息管理,包括用戶注冊(cè)、用戶登錄[5]。第二,地圖顯示功能。此功能包括加載圖層文件,能實(shí)現(xiàn)地圖縮放、平移、漫游、鷹眼等基本的地圖顯示操作,保存地圖數(shù)據(jù)、圖層文件。第三,數(shù)據(jù)查詢功能。此功能包括屬性信息查詢和空間位置信息查詢[6]。屬性信息查詢主要按照屬性字段查詢河流信息,空間位置信息查詢主要在省市行政區(qū)確定的范圍內(nèi)查詢滿足相應(yīng)位置關(guān)系的河流。第四,空間數(shù)據(jù)的緩沖區(qū)查詢功能。此功能主要是對(duì)地區(qū)的查詢,選擇河流和緩沖區(qū)大小,查詢哪些地區(qū)與該緩沖區(qū)相交。
2 系統(tǒng)邏輯設(shè)計(jì)
2.1 數(shù)據(jù)庫(kù)設(shè)計(jì)
2.1.1 數(shù)據(jù)庫(kù)的選擇
數(shù)據(jù)庫(kù)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),利用數(shù)據(jù)庫(kù)可以更好地管理和使用各種數(shù)據(jù)信息。常用的數(shù)據(jù)庫(kù)系統(tǒng)有Microsoft SQL Server、Oracle和Access等,本系統(tǒng)考慮操作界面的友好性、處理數(shù)據(jù)的能力和效率等因素,綜合考慮使用SQL Server數(shù)據(jù)庫(kù)管理系統(tǒng)以存儲(chǔ)和管理屬性數(shù)據(jù)。關(guān)系數(shù)據(jù)庫(kù)不能存儲(chǔ)空間數(shù)據(jù),遂采用傳統(tǒng)的Shapefile文件以存儲(chǔ)和管理空間數(shù)據(jù)。
2.1.2 數(shù)據(jù)庫(kù)的設(shè)計(jì)
屬性數(shù)據(jù)包括用戶信息表、河流基礎(chǔ)信息數(shù)據(jù)表、山東省各市區(qū)信息的數(shù)據(jù)表等。其中,空間數(shù)據(jù)存儲(chǔ)在地圖文件中,但數(shù)據(jù)信息并未直接存儲(chǔ)其中,而是存儲(chǔ)在與該地圖文件相關(guān)聯(lián)的.shp、.prj、.dbf等文件中。
2.2 系統(tǒng)功能設(shè)計(jì)
2.2.1 系統(tǒng)總體架構(gòu)圖
根據(jù)系統(tǒng)的研究?jī)?nèi)容和需求分析,系統(tǒng)的總體架構(gòu)可以分為1個(gè)空間數(shù)據(jù)庫(kù)、1個(gè)非空間數(shù)據(jù)庫(kù)及1個(gè)統(tǒng)一的信息查詢與展示平臺(tái)。由VS 2013軟件開發(fā)平臺(tái)和ArcObjects二次開發(fā)組件完成河流信息查詢與展示系統(tǒng)的建立,兩個(gè)數(shù)據(jù)庫(kù)配合系統(tǒng)完成系統(tǒng)整體工作。
系統(tǒng)總體架構(gòu)如圖1所示。
2.2.2 系統(tǒng)功能設(shè)計(jì)
系統(tǒng)功能主要分為4個(gè)部分,每個(gè)部分的具體功能如下。第一,用戶數(shù)據(jù)管理功能。此功能主要用于系統(tǒng)用戶注冊(cè)和登錄賬號(hào)。第二,地圖顯示功能。用戶利用加載圖層的功能,向系統(tǒng)中添加地圖數(shù)據(jù),以便地圖數(shù)據(jù)獲得縮放、平移、漫游、鷹眼等基本的地圖顯示功能,并可將查詢結(jié)果進(jìn)行展示、保存。第三,數(shù)據(jù)查詢功能。用戶可以數(shù)據(jù)借助此功能查詢河流信息的屬性數(shù)據(jù)和空間數(shù)據(jù)。當(dāng)用戶將鼠標(biāo)滑過地圖中的河流要素時(shí),彈出的toolTip控件會(huì)顯示河流的屬性信息;用戶也可以根據(jù)河流的屬性信息進(jìn)行查詢,按照屬性字段值查詢河流信息;用戶還可以根據(jù)空間位置查詢,在省市行政區(qū)確定的范圍內(nèi)對(duì)滿足相應(yīng)位置關(guān)系的河流進(jìn)行查詢。第四,空間數(shù)據(jù)的緩沖區(qū)查詢功能。用戶可以根據(jù)空間數(shù)據(jù)的緩沖區(qū)查詢功能查詢地區(qū)數(shù)據(jù),確定河流和緩沖區(qū)的大小,查詢哪些地區(qū)與該緩沖區(qū)相交。
2.2.3 開發(fā)平臺(tái)
根據(jù)系統(tǒng)的各功能模塊,本系統(tǒng)采用的開發(fā)平臺(tái)是Visual Studio 2013。Visual Studio是Windows平臺(tái)應(yīng)用程序的集成開發(fā)環(huán)境,適合用于桌面應(yīng)用程序和移動(dòng)應(yīng)用程序的開發(fā)。該系統(tǒng)主要是由多個(gè)窗體組成的桌面應(yīng)用程序,因此Visual Studio是本系統(tǒng)開發(fā)應(yīng)用程序的良好選擇。
2.2.4 開發(fā)語(yǔ)言
該系統(tǒng)采用的開發(fā)語(yǔ)言是C#,這是一種面向?qū)ο蟮恼Z(yǔ)言,保留了C++的強(qiáng)大功能,具有友好的圖形界面特性。C#還可以進(jìn)行大量簡(jiǎn)單的窗體操作,如窗體顯示、傳值、移動(dòng)、關(guān)閉等,非常適合該系統(tǒng)的開發(fā)。
3 功能實(shí)現(xiàn)
3.1 地圖顯示
系統(tǒng)主頁(yè)面主要由1個(gè)axTOCControl控件、1個(gè)menuStrip控件、1個(gè)ToolbarControl控件、一個(gè)toolTip控件、一個(gè)ContextMenuStrip控件和2個(gè)axMapControl控件構(gòu)成。
主界面如圖2所示。
設(shè)置空間的Buddy屬性使得內(nèi)容表控件的圖層列表、工具條的操作數(shù)據(jù)與地圖顯示控件1的數(shù)據(jù)內(nèi)容保持一致。主頁(yè)面中的axMapControl控件1和axMapControl控件2形成鷹眼功能,使兩個(gè)控件中顯示的內(nèi)容保持一致,并讓控件1根據(jù)控件2中繪畫和移動(dòng)的矩形方框顯示地圖范圍。鷹眼通過在窗體加載時(shí),應(yīng)用函數(shù)KeepLayerSame()方法,使axMapControl控件2中地圖與axMapControl控件1的地圖保持一致。此外,axMapControl控件1中的顯示范圍會(huì)根據(jù)axMapControl控件2中畫的方框大小和位置而改變。
當(dāng)axMapControl控件2點(diǎn)擊右鍵畫矩形框時(shí),axMap- Control控件1會(huì)根據(jù)矩形框的大小顯示地圖范圍;當(dāng)點(diǎn)擊左鍵時(shí),axMapControl控件2中的對(duì)話框會(huì)隨點(diǎn)擊位置移動(dòng),此時(shí)axMapControl控件1顯示的地圖范圍也會(huì)隨之變化。
ContextMenuStrip控件可以顯示菜單,并可以不固定在某一位置,而是根據(jù)具體需要進(jìn)行顯示。當(dāng)在axTOCControl控件中某一圖層上點(diǎn)擊右鍵時(shí),界面會(huì)顯示ContextMenuStrip控件,并彈出對(duì)的刪除圖層、添加圖層、清空?qǐng)D層、圖層上移、圖層下移及打開屬性表的選項(xiàng)。ContextMenuStrip控件表單設(shè)計(jì)如圖3所示。
打開屬性表功能主要通過dataGridView控件完成,先利用圖層的FeatureClass獲得該圖層的各屬性名并賦值給dataGridView控件,作為屬性表的表頭;再使用FeatureClass的Search方法,并將查詢條件設(shè)置為NULL,以獲得所有要素;最后對(duì)每一個(gè)要素進(jìn)行遍歷,dataGridView控件使用Rows.Add方法將其添加到dataGridView表中,以獲得完整的屬性表。
3.2 數(shù)據(jù)查詢
3.2.1 屬性數(shù)據(jù)查詢
屬性數(shù)據(jù)查詢主要針對(duì)河流的基礎(chǔ)信息進(jìn)行查
詢。當(dāng)鼠標(biāo)從axTOCControl控件1上劃過時(shí),界面會(huì)顯示河流的名字、長(zhǎng)度和流域面積。這主要是axTO- CControl控件1的onMouseMove事件所起的作用,在觸發(fā)該事件后,使用FeatureLayer的get_TipText方法,傳入鼠標(biāo)此時(shí)的坐標(biāo)作為參數(shù),根據(jù)設(shè)置圖層的DisplayField(顯示字段),返回鼠標(biāo)所指要素的字段值,并由toolTip控件顯示返回內(nèi)容。
3.2.2 空間數(shù)據(jù)查詢
空間數(shù)據(jù)查詢主要根據(jù)省市行政區(qū)的要素范圍與河流的空間位置進(jìn)行空間查詢。算法實(shí)現(xiàn)通過ArcObjects組件提供的QueryFilter和SpatialFilter對(duì)象創(chuàng)建查詢。查詢河流信息時(shí),首先,應(yīng)在選擇地區(qū)時(shí)創(chuàng)建QueryFilter對(duì)象,對(duì)其whereclause屬性設(shè)置過濾條件“NAME=comboBox1.SelectedItem.ToString()”,
查詢?cè)摰貐^(qū)要素CityFeature;其次,創(chuàng)建兩個(gè)SpatialFilter
對(duì)象,并將這兩個(gè)對(duì)象的Geometry屬性設(shè)為polygon,
將其SpatialRel屬性分別設(shè)為esriSpatialRelCrosses和
esriSpatialRelContains;最后,根據(jù)RiverFeature的Feature-
Class的Search方法創(chuàng)建FeatureCursor對(duì)象。
3.3 緩沖區(qū)查詢
河流的緩沖區(qū)查詢也屬于空間屬性查詢,主要根據(jù)所選的河流要素及緩沖區(qū)的尺寸建立Polyline緩沖區(qū),以獲得一個(gè)多邊形區(qū)域,再查詢?cè)摱噙呅螀^(qū)域與市級(jí)行政區(qū)域圖中各要素之間的空間關(guān)系。緩沖區(qū)的空間查詢操作借助了ITopologicalOperator接口,此接口主要是對(duì)已存在的一個(gè)或多個(gè)圖形進(jìn)行拓?fù)溥壿嬯P(guān)系運(yùn)算,繼而產(chǎn)生一個(gè)新的緩沖區(qū)圖形,借助該圖形再進(jìn)行空間查詢操作。
首先,創(chuàng)建QueryFilter對(duì)象時(shí)應(yīng)先查找和選擇河流要素riverFeature,再通過riverFeature的Geometry屬
性創(chuàng)建TopologicalOperator對(duì)象,選擇TopologicalOperator
對(duì)象的緩沖區(qū)大小。由于行政區(qū)圖的單位為角度,并且ITopologicalOperator接口中Buffer方法的單位與地圖單位一致,因此該緩沖區(qū)的距離單位也是角度。通過分析得到新的緩沖區(qū)圖形后,創(chuàng)建SpatialFilter對(duì)象,對(duì)該緩沖區(qū)與City要素查詢相交關(guān)系,顯示地區(qū)結(jié)果。
4 結(jié)束語(yǔ)
GIS系統(tǒng)采用自頂向下、逐步求精和模塊化的程序編寫原則,能夠?qū)崿F(xiàn)系統(tǒng)的整體功能,四個(gè)功能模塊層次清晰,用戶能夠便捷地使用本系統(tǒng)。通過灌區(qū)需水量預(yù)報(bào)系統(tǒng),用戶可以進(jìn)行以下操作:(1)進(jìn)行賬號(hào)注冊(cè)、賬號(hào)登錄;(2)利用加載圖層功能,向系統(tǒng)中添加地圖數(shù)據(jù),實(shí)現(xiàn)地圖數(shù)據(jù)縮放、平移、漫游、鷹眼等基本地圖顯示功能,并將查詢結(jié)果進(jìn)行展示、保存;(3)可以根據(jù)數(shù)據(jù)查詢功能對(duì)河流信息進(jìn)行屬性信息查詢和空間位置信息查詢;(4)可以根據(jù)空間數(shù)據(jù)的緩沖區(qū)查詢功能來查詢地區(qū)數(shù)據(jù),確定河流和緩沖區(qū)的大小,查詢哪些地區(qū)與該緩沖區(qū)相交。
參考文獻(xiàn)
[1] 羅彬源.結(jié)合GIS技術(shù)的河流健康多層次灰關(guān)聯(lián)評(píng)價(jià)研究[D].廣州:廣東工業(yè)大學(xué),2008.
[2] 楊宏鵬,王阿川,王妍瑋.GIS二次開發(fā)方法與實(shí)現(xiàn)[J].信息技術(shù),2008(8):65-67.
[3] 桂思英.GIS技術(shù)應(yīng)用現(xiàn)狀及進(jìn)展[J].世界有色金屬,2017 (8):269-270.
[4] 肖慶.組件GIS二次開發(fā)技術(shù)研究[J].軟件導(dǎo)刊,2008(11): 148-150.
[5] 王飛,謝小魁.ArcGIS二次開發(fā)綜述[J].農(nóng)業(yè)網(wǎng)絡(luò)信息, 2017(5):72-77.
[6] 王志恒,胡卓瑋,國(guó)巧真.GIS設(shè)計(jì)與開發(fā)課程中的組件式開發(fā)案例實(shí)現(xiàn)[J].測(cè)繪科學(xué),2015,40(7):164-168.
收稿日期:2024-10-22
作者簡(jiǎn)介:王喜華(1973—),女,山東莘縣人,工程師,研究方向?yàn)檗r(nóng)業(yè)氣象服務(wù)。#通信作者:張慶雷(1992—),男,山東陽(yáng)谷人,工程師,研究方向?yàn)檗r(nóng)業(yè)氣象服務(wù),E-mail:zql3550@126.com。