


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