<nav id="w0g0m"><code id="w0g0m"></code></nav>
  • <xmp id="w0g0m">
    <xmp id="w0g0m"><nav id="w0g0m"></nav><menu id="w0g0m"><strong id="w0g0m"></strong></menu>
  • <xmp id="w0g0m">
  • <nav id="w0g0m"></nav>
    <menu id="w0g0m"><menu id="w0g0m"></menu></menu>
    1. 網站地圖
    2. 設為首頁
    3. 關于我們
    ?

    滑坡危險區信息管理系統開發與應用

    發布時間:2023-07-06 10:20
    目 錄
    摘 要 I
    Abstract II
    1緒論 1
    1.1選題背景 1
    1.2研究現狀 4
    1.2.1國外研究現狀 4
    1.2.2國內研究現狀 5
    1.3研究區概況 6
    1.3.1地形地貌特點 6
    1.3.2氣候特點 7
    1.3.3滑坡特點 7
    1.3.4滑坡影響因子 9
    1.4研究意義 11
    1.5本文主要研究內容 11
    2滑坡危險區信息管理系統的結構設計 13
    2.1系統的需求分析 13
    2.1.1系統功能需求分析 13
    2.1.2實際應用需求分析 13
    2.2系統設計目標 14
    2.3系統功能框架 15
    2.3.1系統功能框架 15
    2.3.2系統界面設計 16
    2.4系統設計原則 18
    2.5系統開發方式的選擇 19
    2.5.1ArcObjects 和 ArcGIS Engine 的簡介 19
    252 桌面GIS應用軟件的四種開發方式 19
    2.5.3四種開發方式的比較 20
    2.5.4開發環境 21
    2.5.5數據存儲方式 22
    2.5.6開發平臺 22
    2.5.7開發工具 23
    2.6 本章小結 25
    3數據庫建設 26
    3.1地理信息系統數據庫的概念 26
    3.2數據預處理 26
    3.2.1大連市地理基礎數據處理 26
    3.2.2屬性數據處理 27
    3.2.3空間數據處理 30
    3.3數據庫結構設計 33
    3.4本章小結 34
    4系統功能的實現 35
    4.1系統開發環境設置 35
    4.1.1創建工程項目 35
    4.1.2添加ArcGIS引用項 36
    4.1.3添加控件 37
    4.1.4綁定控件 37
    4.2基礎功能 39
    4.2.1加載 mxd 文檔和 Shapefile 數據 40
    4.2.2地圖導出 44
    4.2.3地圖量測 47
    4.2.4小結 50
    4.3查詢功能模塊 50
    4.3.1根據屬性信息查詢 50
    4.3.2根據空間信息查詢 56
    4.3.3識別要素 59
    4.3.4小結 60
    4.43D 模型展示功能模塊 60
    4.4.13D模型展示功能實現 61
    4.4.2小結 64
    4.5滑坡預警功能模塊 64
    4.5.1降雨型滑坡預警理論 64
    4.5.2降雨型滑坡預警實現思路 68
    4.5.3降雨型滑坡預警實現方法 68
    4.5.4降雨型滑坡預警運行效果 75
    4.5.5預警模型實例驗證 80
    4.5.6小結 82
    5結 83
    文 獻 84
    附錄A 88
    攻讀碩士學位期間發表學術論文情況 95
    致 謝 96
    大連理工大學學位論文版權使用授權書 97
    1緒論
    1.1選題背景
    滑坡是部分巖土體在一定坡度的斜坡上沿著慣通的剪切面發生滑移的現象。我國幅 員遼闊、地形地貌極其復雜,據第一次全國地理國情普查公報顯示:山地、丘陵、臺地、 平原面積分別占國土面積的43.65%、20.39%、9.34%和26.62%[1]。由于山地面積廣闊且 分布廣泛,所以與山地有關的地質災害頻繁發生,其中滑坡便是其主要災害之一。
    滑坡作為一種難以完全避免、且后果嚴重的自然災害,一旦發生,將會給人們的生 產和生活帶來重大的損失。例如, 1963 年10月9日夜間,意大利瓦依昂水庫左岸發生 巨型滑坡,滑坡體量達2.75X 108m3,過壩水流沖毀了位于其下游數公里之內的一切物 體。龍熱羅涅、皮觸格、維拉諾瓦、里札里塔和法斯等市鎮被沖走,死亡人數近3000人。 這場災難從滑坡發生到大壩下游被毀滅不到7 分鐘[2];2014 年3 月22 日,位于美國華 盛頓州的斯諾霍米什縣發生巨型山體滑坡災害,巨大的泥石量淹沒了當地的奧索鎮近五 分之一的區域,事故最終造成大約100座房屋被摧毀,至少24人死亡, 176人失蹤和數 人受傷[3];2019 年3 月15 日傍晚,山西省臨汾市鄉寧縣棗嶺鄉一處衛生院北側出現山 體滑坡情況,最終導致 20 人死亡,受災人數超百余人,倒塌房屋接近 100 間,直接經 濟損失超2.1 X107元[4]; 2019年7月23日晚間,貴州省六盤水市水城縣雞場鎮坪地村 發生特大山體滑坡,導致受災人數接近1600人,房屋倒塌超百余間且另有2300余間房 屋遭到不同程度損壞,直接經濟損失達1.9X108元[4]。
    滑坡災害頻繁且影響嚴重,一次大型滑坡就會給社會造成極大的經濟損失,為了減 少滑坡帶來的損失,迫切需要了解滑坡的形成機理和觸發因素,所以針對滑坡的研究呈 現出井噴式的發展。通過國內外學者對滑坡災害的大量研究,總結出影響滑坡災害的因 素可歸為兩部分:一是內在因素,二是外在因素。內在因素主要有地質因素、地形因素 等;外在因素主要有水文、氣象、人類活動、地震、植被等。各影響因素具體描述如表
    1.1所述[5]。
    根據國家自然資源部統計,近年來,在已發生的地質災害總數中,滑坡災害占比高 達70%以上。而在已經發生的滑坡災害中,約有 90%的滑坡災害與降雨因素有直接或間 接關系。大量的研究表明,降雨因素是觸發滑坡災害尤其是淺層滑坡災害的主要因素[6- 9]。
    隨著科學技術的發展,當前對于滑坡的研究已不僅僅局限于觸發因素和觸發機理層 面。在積累了大量的研究成果后,人們更希望對某一地區的滑坡進行系統化、規范化的
    處理和總結,尤其是滑坡區往往涉及的面積較大,因此會產生難以處理的龐大數據。面 對紛繁復雜的海量數據,研究人員引入了 GIS技術,當前GIS技術正如火如荼的發展, 其涉及范圍之廣難以想象。GIS技術是以計算機技術為基礎,將表格中的數據以圖形方 式展現在使用者面前,從而實現復雜數據的可視化的一種高新技術。
    表 1.1 滑坡影響因子
    Tab. 1.1 Landslide influencing factors
    影響因子 具體描述
    地質 巖性、地質年代、距斷層距離、斷層密度
    地形 坡度、坡向、高程、坡面曲率、粗糙度
    水文氣象 河網密度、距離河流距離、單位匯水面積
    土壤植被 土壤類型、植被覆蓋度
    人類活動 土地利用、居民點密度
    地震 震中、地表破裂、宏觀震中、同震位移、地震動峰值加速度
     
    近年來,GIS技術已廣泛應用于農業、漁業、林業、能源、礦產、自然災害、城市 規劃之中。
    GIS 技術在土地適宜性評價方面的應用主要為構建土地使用情況數據庫,通過該數 據庫,相關部門可及時的了解各種類型土地的總量、位置、區域面積等信息,還可在土 地利用變更調查中進行數據的統計、匯總、上報等工作,或者以數據庫為基礎建立 GIS 應用系統實現對土地的利用現狀進行調查分析[10]。通過構建土地資源信息管理系統,可 對農田、草原、林區、河流湖泊、濕地等進行實時的監測,避免浪費土地,從而實現土 地的科學管理和精準利用。
    GIS技術在防災減災方面的應用具體表現為通過分析GIS中的空間數據,可對地質 災害高風險區進行及時的監測和預報,通過建立災情評定模型對災害進行影響性評估, 實現防災抗災和災后快速恢復的目的[11]。目前, GIS 技術在防災減災發展中的趨勢是與 RS、 GPS 相結合實現 GIS 應用系統數據的及時更新、深入到災害模型的構建和開發中 實現對自然災害全過程的模擬、與虛擬現實技術相結合實現在虛擬環境中對現實環境的 真實感受。
    運用 GIS 技術在三維分析中的功能,主要為建立空間三維模型,實現對目標區域的 三維可視化,或者對滑坡等自然災害進行空間分析或動態模擬,充分了解災害形成機理 和演變過程。例如,通過建立防洪預警系統,可實現對湖區的遠程監測、洪水預警分析, 從而快速對人民群眾提供預警信息和防災減災信息,極大幅度的減少社會經濟損失[12]。
    GIS 技術在土地監管方面的應用具體表現為,通過構建土地政務管理信息系統,實 現在國土資源管理的事前、事中、事后三個環節的指標監管、資源監測、災害監測、審 批監管、行政監察、應急指揮六種模式的建設和應用,解決了土地空間圖形信息的存儲、 傳輸、發布問題,實現了對土地資源的精準高效的管理[13]。例如,馬蘭俊等通過構建國 土資源執法監察立體網絡系統幫助長沙市國土資源局通過“天上看、地上查、網上管” 的全方位監管方式,實現了對土地的全面、及時、有效的監管[14]。此技術既大幅度節省了 政府部門的時間成本和經濟成本,又最大限度的保證了所需數據的準確性。
    GIS 技術對環境方面的影響最為顯著, GIS 技術不僅可以對空間屬性信息進行有效 的管理,也可以對資源環境的管理和實踐工作進行快速的分析,從而有利于使用者制定 合適的方案和進行科學性的研究。其中最重要的是可以對不同時期的環境變化進行深度 的分析比較,還可以將收集到的數據、空間分析的結果和政策的制定結合起來,形成一 個整體的信息產物。這將明顯提高工作效率,同時還給社會、企業帶來可觀的收益, GIS 技術為資源環境的可持續發展提供了重要的技術支持,與RS和GPS的結合在環境質量 評價、城市環境監測與管理、植被研究、土壤研究行生態環境保護方面有著巨大的應用 前景[15]。
    GIS 技術中最重要的一步就是要做研究區域的數據采集。在傳統的測量過程中,研 究人員需要去往研究區域進行實地考察測量,然后再對采集的數據進行分析,這樣的弊 端是采集數據的范圍較小,且由于測量人員的熟練程度和知識水平不同,導致采集的數 據誤差很大。針對這一情況,目前研究人員通過引入無人機傾斜攝影技術來加以解決。 傾斜攝影技術是近年來測繪行業在數據采集工作中的比較常用的技術。在實際應用中, 通過從傾斜、垂直等多個角度對目標區域進行影像、高程等數據的采集,再對采集到的 各種數據進行應用分析[16]。在測繪工作中引入無人機后,不但提高了測量數據的準確性, 而且大幅度提高了地形測繪的范圍,同時解決了很多地區由于地形復雜,人力很難前往 的困難。測量人員只需遠程遙控無人機在研究區域不斷飛行采樣,研究區域的高程、經 緯度和地形地貌圖片等數據便會傳遞回來。工作人員只需對傳遞回來的數據進行分析就 能得出準確的結果[17]。隨著攝影設備的不斷更新以及 GPS 設備的精度不斷提高,無人 機采集的數據也更加準確,拍攝的圖像也更加清晰,從而不僅使數據質量得到提升,同 時也大大提高了測繪工作的效率。
    1.2研究現狀
    地理信息系統是以計算機技術為基礎,融合多門學科內容,廣泛應用于各行各業的 一項新興技術。目前,GIS軟件的研究應用可分為兩種情況:一是利用GIS應用系統來 處理大量紛繁復雜的數據;二是利用現有GIS軟件的組件庫二次開發出專業地理信息系 統軟件[18]。在計算機技術的支持下,GIS系統可以對目標區域的地理信息數據進行有效 管理、分析,通過對多方面因素的綜合分析,可以迅速地以圖形或數據的形式展示研究 人員所需要的結果。
    1.2.1國外研究現狀
    國外對滑坡災害的研究可以追溯到上世紀60年代,但直到 80年代末期,才逐漸將 GIS 技術應用到滑坡地質災害的研究之中,之后,針對滑坡地質災害的險情評估、防災 評價以及預測模型的研究開始成為滑坡災害的主要研究內容。
    2006年,Keiko I.等使用Multiple regression analysis模型對影響滑坡災害的降雨因 素進行分析,結合各種類型的滑坡歷史數據,開發了電子政務信息系統,高效的完成 了滑坡信息的管理工作[19]。2009年,Francisco J.G.和Franco M.等通過GIS軟件開發平 臺,建立了滑坡信息數據網站用于發布滑坡分布圖等信息。其結果通過在 Olvera 地區 的驗證被認定效果良好[20]。2010 年, WiHiamB.Ouimet在對汶川地震的山體滑坡研究中, 通過分析不穩定地貌等因素對滑坡的影響作用,并結合高分辨率影像數據,成功繪制出 了用于體現滑坡密度的專題圖集,圖件結果經實際比對,效果顯示良好[21]。2015 年, Matebie Meten 使用 GIS 中的頻率比模型和邏輯回歸模型對 Debre Sina 地區進行地質環 境因素敏感性分析,通過在 SPSS 中建立訓練滑坡和滑坡因子之間的線性關系編制了滑 坡易感性地圖,頻率比模型的成功率和預測率分別為 74.8%和 73.5%,邏輯回歸模型則 分別為 75.7%和 74.5%,預測率和驗證率的密切相似性表明該模型是可以接受的[22]。
    在三維可視化領域,國外研究主要集中在三維GIS的數據模型的建模方面,典型的 有結構實體法(CSG)和邊界模型法(BR) [23-25]。在矢量模型和柵格模型集成方面,又 出現了三種新的模型,分別是FDS模型、混合模型和TEN模型[26-27]。在技術實現方面, DirectX和OpenGL的三維圖形應用接口已發展的比較成熟,VRML2已做到了支持動畫 和動態可視化表達,已成功適用到城市管理、氣象預測、海洋研究和地質探查等領域[28]。 在三維GIS技術的研究領域,國外GIS開發商的參與非常積極,并且已經推出了一定的 產品,如2005年美國Google公司推出的Google Earth瀏覽器,極大的推動了空間信息 可視化發展。
    1.2.2國內研究現狀
    同國外相比,我國將GIS技術引入到滑坡災害研究中的時間較晚,但發展非常迅速。
    2001 年,殷坤龍等[29]基于 GIS 技術,對有關滑坡災害空間區劃的理論體系進行了 有效探索,對災害風險評估的方法進行了深入研究,并通過MapGIS平臺開發出滑坡災 害信息分析系統,為 GIS 在滑坡災害中的研究應用做出了一定的探索。 2005年,楊佳等 [30]基于 WEBGIS 技術,實現了對湖北省進行地質災害的預警預報,解決了災害預報數 據遠程更新及發布的問題。 2007 年,殷坤龍等[31]從區域滑坡災害空間預測、時間預警預 報的角度提出了滑坡災害預測預報的分類和理論基礎,并通過 MAPGIS 平臺成功的構 建滑坡地質災害預報預警信息系統,實現了將預警信息通過Internet實時發布。2011年, 謝謨文等[32]基于ArcGIS Server平臺開發了滑坡實時監測網絡地理信息系統,該系統在 研究安全監測對象的空間和屬性數據建模及可視化網絡查詢的基礎上,完成滑坡監測信 息的斷面分析、平面分析及三維分析模塊,實現了監測信息在斷面、平面和三維視圖中 的圖形化表達及插值分析、趨勢圖分析等多種可視化分析功能。2015 年,李小根等[33]應 用剛體極限平衡法和有限元法對滑坡穩定性進行了分析研究,并開發了滑坡地質災害預 警預測系統,實現了對地質災害有關數據的統一管理和滑坡三維模型的展示。2018 年, 李俊燕等[34]基于GIS技術,采用層次分析法(AHP)和模糊綜合評價法(FUZZY)等方 法對房山區的滑坡危險性進行評價,評價結果將房山區域分為高危險區、中危險區和低危 險區。2019年,余國等[35]利用GIS (geographic information systems,地理信息系統)的 空間數據處理能力,將潘家錚法從二維擴展到三維,提出一個基于柵格柱體單元的庫岸 滑坡滑速計算方法。建立了基于柵格柱體單元的三維滑坡滑速計算分析模型,給出了模 型參數在 GIS 中的空間計算表達式。其次,通過對計算模型進行受力分析,結合牛頓運 動定律,選取了沿滑體滑動方向和垂直方向來建立動力平衡方程,從而解決了三維滑坡 滑速的問題。 2021 年,葉潤青等[36]利用不同時期(1987年、 2000年和2010年)衛星影 像,研究三峽庫首區秭歸至巴東段長江干流土地利用類型變化,采用滑坡面積模數比分 析滑坡發育與土地類型及變化的關聯性,得出在開展庫區滑坡風險評估時,需要考慮土 地利用類型變化這一因素。2021年,鄭潔等[37]以茂縣為研究區,運用GIS與遙感技術, 選取坡度、高程、水系等幾種不同的滑坡災害影響因子,利用層次分析法(AHP)計算 出每個影響因子對應的危險性權重,并通過加權疊加實現滑坡災害危險性評價,通過對 比分析得出茂縣滑坡災害極高危險區主要分布位置和滑坡災害點密度與滑坡災害危險 性等級的相關性。
    通過上述國內外研究現狀的分析可知,我國將GIS技術應用于滑坡地質災害中的研 究正在快速發展,與發達國家研究水平幾乎處于同一高度。但在GIS應用系統的研究方 面仍有欠缺,故將 GIS 技術應用于滑坡等地質災害信息系統的研究中仍需更多的努力。
    1.3研究區概況
    1.3.1地形地貌特點
    圖 1.1 為本文根據大連市的影像數據和高程數據制作的大連市地形基本輪廓圖,影 像數據和高程數據從BIGMAP地圖下載器中下載獲得,該圖展示的是大連市地形圖3D 模型,由圖可知,大連市地區為山地丘陵的地貌形態,其地形特征呈現從中央向東西兩 側依次階梯狀降低直至海濱的特點[38],整個地形為北高南低,北寬南窄,是典型的滑坡 災害頻發區突出特征。
     
    圖 1.1 大連地形基本輪廓圖
    Fig. 1.1 Basic outline of Dalian topographic map
    1.3.2氣候特點
    大連市地處遼東半島最南端,三面環海,海洋對氣候的調節作用十分顯著,屬于具 有海洋性特點的暖溫帶大陸性季風氣候。大連地區年平均氣溫10.5°C,年降水量550- 950mm,因受海洋氣候調節,夜雨多于日雨,尤以夏季為甚,夏季雨量集中,陰雨天數 較多,臺風、暴雨多出現在該季,其降水量在全年降水量的占比可達 60%至 70%,極易 出現局部洪澇災害現象[39]。大連獨特的地理條件和較多、較為集中的季降水量導致其較 易發生滑坡等自然災害,是典型的滑坡災害易發區。
    1.3.3滑坡特點
    表 1.1 為本文從中國地質調查局等收集到的大連市已發生的滑坡的部分數據,根據 表中信息可得出大連市滑坡特征為:災害等級以中小型為主,大多伴有各種類型的地下 水,對人口財產威脅較大,險情等級以中小型為主,且發生時伴有較大的地震烈度。圖 1.2 為本文根據收集到的大連市已發生的滑坡數據制作的大連市已發生滑坡分布圖,由 圖可知大連市滑坡分布特征為:滑坡主要分布在莊河市、瓦房店北部、普蘭店北部等大 連市北部山區,少量分布在大連市南部地區,總體呈現出集中于大連市北部、少量分布 于南部的特點。
     
     
    圖 1.2 大連市已發生滑坡分布圖
    Fig. 1.2 Distribution map of landslides that have occurred in Dalian
     
    表 1.1 大連市已發生滑坡數據
    Tab. 1.1 Landslide data has occurred in Dalian
    災害體名稱 災害等級 地下水類型 威脅人口 威脅財產 險情等級 地震烈度
    華夏總公司
    山體滑坡 中型 裂隙水 60 500 中型 VII
    砬子山鑫盛 石礦滑坡體 劉家村亂龍 巖溶水 30 100 中型 VII
    路東側滑坡 小型 裂隙水 9 80 小型 VI
    后三楊頭村 滑坡體 小型 裂隙水$潛
    9 90 小型 VI
    廟北溝滑坡 孔隙水$承
    壓水 6 6 小型 V
    二里溝西山 滑坡 小型 13 20 中型 V
    同益鄉政府 東滑坡
    和平村宮家 小型 孔隙水$裂 隙水$潛水 9 18 小型 Mil
    爐崔韭線滑 小型 裂隙水 5 60 小型 Mil
    沙河村吳家 隈子滑坡 小型 孔隙水 8 3 小型 M
    栗寺小學后 山滑坡 小型 孔隙水$裂 隙水$潛水 8 12 小型 M
    橫道河子福 凌屯滑坡 4 8 小型 V
    橫道河子蔣 西屯滑坡
    桂云花鄉崔 小型 4 5 小型 V
    家屯 22km 3 2 小型 V
    滑坡 桂云花嶺東 屯崔桂線滑 小型 3 2 小型 V
     
     
    表 1.2 續
    Tab. 1.2 Cont
    災害體名稱 災害等級 地下水類型 威脅人口 威脅財產 險情等級 地震烈度
    北房身婁道
    賀家房后滑 小型 4 5 小型 VI
    吳屯邱煥波 家滑坡 小型 5 4 小型 VI
    栗子房下屯 道旁滑坡
    關家溝關增 3 5 小型 V
    祥家房后滑 4 5 小型 V
    丹莊高速公 路滑坡 小型 裂隙水 5 2 小型 V
    災害體名稱 災害等級 地下水類型 威脅人口 威脅財產 險情等級 地震烈度
    暖水屯西山 公園滑坡 小型 5 10 小型 V
    食品有限公
    司 2 號滑坡 0 200 小型 V
    三勝村神佛 溝滑坡 裂隙水$潛
    4 15 小型 V
    王家島后灘
    滑坡 5 20 小型 V
     
    1.3.4滑坡影響因子
    本課題組尹常銘的論文《基于SVM的滑坡易發性區劃及基于Mask R-CNN的滑坡 快速識別》針對大連莊河地區滑坡的影響因子進行了深入分析,本文對其內容進行提煉, 得出影響大連地區滑坡的影響因子主要為8種,分別是高程、坡度、剖面曲率、地形起 伏度、土地利用類型、坡向、路網緩沖區和水系緩沖區,各影響因子對大連地區滑坡的 影響程度分布如圖 1.3 所示。
     
     
     
    ■O:
    J
    東北
    東南
    四南
    西北
    ■縣道、其他道路
    >圖例
    '剖血曲率(。)
    I 10-0.88
    I 10.89-1.79
    I 11.80-2.84 =□ 2.84-4.07 二]4.07-5.57 L3 5.57-7.51 d 7.52-10.28 口 10.28-17.25 17,28-50.17
    30.3-36.8
    36.8-53
    圖例 河流網絡 緩沖區(m)
    I~~3"
    圖例
    土地利用類型 □水田灘地類
    二草地類 ■林地類 ■建設用地類
    二|旱地類
    ■水庫類
    圖例 地形起伏度(m)
    |^| 0-3
    I 3.1-&7
    I I &8-15.7
    I I 15.8-23.4
    I 23.4-30.3
    百’圖例
    二1 17.7-32.8
    卜心 二1 32.9-48.2
    二1 48.343.8 匚二1 63.9-96.S 196.6-152.4
    二]152.5-214.9
    ■215.0-345.7
    ■345.8-1099.4
    .圖例
    路網類型
    高速、國道、級道路
    U耳“ ■鐵路
    圖例 坡度(。)
    ■0-2.05
    ■2.06-4.35 口 4.36-7.06 EZl7.O7-IO.l2 匚二110.13-13.53
    I 113.54-17.42
    EZJ 17.43-21.87
    ■21.87-27.13
    ■27.134L00 ^■43.18-79.88
    圖 1.3 各影響因子影響程度分布圖
    Fig. 1.3 Distribution map of landslides that have occurred in Dalian
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    1.4研究意義
    近年來,計算機技術、測繪技術、GIS技術、BIM技術,特別是無人機技術和移動 測量技術的飛速發展,研究人員已經開始采用 3D 立體模型這種更加直觀、便捷、細致 的方式去解決抽象模糊的問題。無人機傾斜攝影技術、 3D 建模技術、大數據處理技術、 計算機技術和 3D-GIS 可視化技術的發展,為數字化分析、前期規劃設計及信息化管理 提供了可靠的技術支持。通過在無人機設備上安裝高精度 GPS 和九相機全方位高清晰 傾斜攝影系統,可快速高效的對數據進行采集,然后將采集到的高精度數據和高清晰度、 高分辨率影像處理成可視化 3D 模型。這樣不但能提取研究區域的 3D 模型,還可以進 行可視化量測、標注、查詢和統計分析。這種信息化技術對區域滑坡危險評估、滑坡災 害的防范預演、緊急情況處理、規劃管理等都有極大的指導意義。
    目前大連地區尚缺乏能體現出大連區域地理、地質條件、氣象條件等與滑坡相關聯 的區域性影響因素基礎數據的科學采集和管理、分析和預警系統,未有在滑坡危險區 3D 數據獲取和危險性區劃領域開展相關工作的先例,但滑坡災害每年都頻繁發生,對人們 的生活和生存帶來極大的影響,在科技減災的發展道路上愈發體現出開展此項工作的緊 迫性和必要性。為此,本文將基于 GIS 技術,以及不同減災平臺開發建設經驗,探索開 發一套滑坡地理信息系統,實現對滑坡相關的數據快速存儲、查詢、展示、滑坡分析和 預警等功能,為防災減災提供技術支持和保障,將有助于更準確、更方便、更及時地為 相關部門提供滑坡危險區綜合分析、動態預測和管理規劃等服務,從而為人民群眾的生 命財產安全提供一定的基礎保障。
    1.5本文主要研究內容
    針對國內外將 GIS 技術應用于各種災害管理中的現狀,結合大連市滑坡災害的特 點、分布特征以及應急管理的需求,本文的主要研究內容為:
    (1) 總結現有基于GIS技術構建的滑坡災害管理系統的優缺點,結合大連滑坡災 害特征,開展基于無人機傾斜攝影技術的滑坡危險區現場數據采集、滑坡數據管理、以 及滑坡危險區信息管理系統的總體設計。
    (2) 對所收集的滑坡危險區的屬性數據和3D模型數據規范化處理,基于數據庫 技術、 GIS 三維可視化技術和計算機軟件科學技術研究建立滑坡危險區屬性信息數據庫 和3D模型數據庫。
    (3) 對用戶需求進行分析,明確用戶所需功能,確立系統設計目標,并基于對GIS 應用系統開發所需的開發平臺、開發方式和開發工具的分析,建立更適合滑坡災害管理 的功能模塊。
    ( 4) 基于數據庫技術、 GIS 三維可視化技術、計算機軟件科學技術研究并建立滑 坡危險區信息管理系統,開發用戶所需功能,實現滑坡災害管理系統的適用性和實用性。
    2滑坡危險區信息管理系統的結構設計
    本章將根據用戶的實際需求,對滑坡危險區信息管理系統的結構設計、系統的目標、 設計原則和如何選擇開發方式等進行詳細的介紹。
    2.1系統的需求分析
    軟件開發是開發人員根據用戶實際需求,采用某種程序設計語言,通過某種軟件開 發工具,對目標軟件進行設計和開發的過程。軟件開發的一般過程是:對軟件進行需求 分析、對軟件進行總體結構設計、對軟件的功能進行設計、編程和調試、程序測試、提 交程序[40]。軟件開發的基礎是對用戶進行需求分析,下面分別從系統的功能需求和系統 的實際應用兩個方面對滑坡危險區信息管理系統做詳細的需求分析[41]。
    2.1.1系統功能需求分析
    通過對大連市內滑坡區域的分布情況、災害特點等進行調查分析,得出本文所開發 的滑坡危險區信息管理系統需滿足用戶如下幾點需求:
    (1) 建立滑坡危險區信息管理系統的數據庫。數據庫分為屬性數據庫和 3D 模型 數據庫。屬性數據庫中包含大連市滑坡危險區的信息數據,包括災害體類型、災害體名 稱、災害等級、地理位置、經度、緯度等等,以及大連市地圖基礎數據,包括大連市的 交通線路、水系、縣界、鄉界等等。3D模型數據庫包含滑坡危險區的3D模型。數據庫 的建立是系統軟件開發的基礎。
    (2) 該系統需具有屬性信息查詢功能,使用人員通過可視化界面上的操作可方便 的查詢到每個要素的相關信息數據。此功能有利于使用人員快速了解所查詢的滑坡區域 的相關信息,為相關的應急管理工作做出科學合理的決策。
    (3) 該系統需具有滑坡危險區 3D 模型展示功能,使用人員可通過可視化界面查 看滑坡危險區3D模型,從而更加直觀的了解滑坡危險區的地形地貌。
    (4) 該系統需具有降雨型滑坡災害預警功能,通過此功能使用人員可及時為災情 做出預判,及時提醒人民群眾進行防災減災工作。
    2.1.2實際應用需求分析
    目前, GIS 正朝著一個分布式的、網絡化的、可運行的、共享開放的模式發展。 GIS 與其他學科領域的結合越來越緊密,應用也越來越廣泛,其與 RS、 GPS、 DPS、 ES 的 結合使得地理、測繪、制圖、計算機、遙感、管理等學科相互融合,成為一種為研究人 員進行空間數據分析、為管理人員做決策的重要的支持工具[42-43]。
     
    GIS技術因其強大的數據處理能力得以在眾多工程領域中被大范圍的推廣。在總結
    大量的GIS應用案例后,得出GIS應用系統所具有的功能一般為如圖2.4所示。
    地理信息系統數據庫
     
     
    圖 2.4 GIS 軟件結構功能圖
    Fig. 2.4 GIS software structure function diagram
    本文同樣將強大的GIS技術應用于滑坡災害的研究之中,建立基于ArcGIS的滑坡 危險區信息管理系統,為政府做防災減災工作提供一定的科學支持,為人民群眾的防災 減災工作提供合理的應對措施建議。
    2.2系統設計目標
    依據 GIS 專業軟件建立的滑坡危險區信息管理系統,將以往的滑坡災害預測方法與 ArcGIS 信息技術相結合,實現在大型滑坡災害發生前,通過本系統,能及時的做出科學 有效的應急響應,為應急管理部門快速制定應急預案提供方便;在大型滑坡災害發生后, 可根據歷史災害信息對總體滑坡區域受災情況進行快速評估,便于快速組織應急救援工 作。總結本文所做的需求分析,制定了該應用系統的總體目標如下:
    (1) 實現對滑坡危險區域的屬性信息進行規范化管理。該系統需能對平面地圖進 行加載、瀏覽、保存、導出和量測等基礎操作。使用人員需通過該系統能隨時隨地觀看 了解各滑坡區域的具體信息,以便于在防災減災工作中能夠合理調配救災物資。
    (2) 實現滑坡危險區域屬性信息數據庫的建立,并且基于滑坡危險區屬性信息數 據庫,實現對大連市范圍內滑坡危險區的屬性信息的查詢。通過對大連市滑坡區域的大 量調查,收集大量寶貴的滑坡區域信息資料,建立大連市滑坡危險區域信息數據庫,其 中包括災害體位置、災害體名稱、災害體類型、坡度、坡向、地層巖性、地質構造、災 害體面積、地下水類型、目前穩定程度、險情等級、災害等級、隱患點、今后變化趨勢、 威脅財產、威脅人口、破壞房屋、破壞道路、破壞溝渠情況以及防治建議和監測建議等 等,既可以滿足各研究機構和企業相關信息的查詢獲取,也可以滿足政府部門基于空間 位置查詢的地理查找服務需要。
    (3) 實現滑坡危險區 3D 模型數據庫的建立,并且基于滑坡危險區 3D 模型數據 庫,實現對大連市范圍內滑坡危險區域的三維可視化。以往的關于滑坡的三維模型研究 多針對于單個滑坡的動態發生過程,本文對于滑坡區域的三維可視化研究期在實現大面 積、大范圍的多個滑坡危險區的三維可視化。通過觀看 3D 模型可以直觀的了解到滑坡 區域具體的地形地貌,并確定滑坡災害程度,從而根據滑坡地形地貌特點對當地居民的 受災害情況做出合理判斷。
    (4) 實現對大連市范圍內降雨型滑坡的預警。以往的滑坡預警研究多集中在對單 個滑坡的預警方法上的研究,本文結合以往大量的降雨型滑坡預警模型研究成果,結合 軟件工程技術,將其應用于本系統之中,以期實現根據降雨量大小對大范圍、大面積的 多個滑坡區域進行預警。通過此功能,政府部門可及時的了解和監測大連區域內各地區 滑坡危險區域的險情等級,便于未雨綢繆。
    2.3系統功能框架
    2.3.1系統功能框架
    (1) 如圖 2.1 所示滑坡危險區信息管理系統結構框架圖,由圖可知,本系統可劃 分為三個部分,分別是底層的數據層、用于操作的功能層和是可視化顯示的應用層。功 能層又可分為基礎功能模塊、屬性查詢模塊、 3D 模型展示模塊和滑坡預警模塊四個部 分。基礎功能模塊主要是指實現對地圖的加載、測量、保存等基礎操作功能,屬性查詢 主要是完成對滑坡危險區屬性信息的快速查詢功能, 3D 模型展示是指完成對目標滑坡 區域的3D模型的查看功能,預警模塊是指完成對大連區域內滑坡的預警功能。
    在系統框架中,數據層主要由滑坡區的屬性數據和空間數據以及大連市的地理基礎 圖層數據組成,是整個系統建立和運行的數據基礎。功能層主要就是建立系統功能模塊 以及對數據庫數據進行處理分析操作。應用層是可視化界面,用于對數據庫信息進行可 視化展示。
     
    圖 2.1 系統框架圖
    Fig. 2.1 System frame diagram
     
    2.3.2系統界面設計
    GIS應用系統的界面設計在GIS開發中是一項重要的工作,用戶對于軟件的評價基 本全部來源于對軟件界面操作時的感受,即用戶界面設計的如何很大程度上影響軟件的 命運。
    GIS 應用系統的界面是人機交互的媒介,其作用是接收人向系統發出的命令然后向 用戶反饋信息。用戶界面的設計要做到友好簡潔,便于用戶人員操作學習。GIS應用系 統的應用要涉及到處理大量的地理信息數據,需要很好的視覺體驗,因此,本文將采用 圖形用戶界面(Graphical User Interface,GUI)的設計方法進行界面設計。
    GUI 的優點如下[44-48]:
    (1)易操作性和實用性
    開發人員通過設計具體的用戶界面來表達晦澀難懂的編程語言,用戶通過觀看圖形 即可理解編程語言表達的內容。用戶可通過窗口中菜單按鈕的方式對應用系統發出指令 進行操作時,而不再需要記住大量的復雜的編程語言命令。圖形化的操作方式以其超強 的易操作性獲得了廣泛的認可并得得了快速的推廣使用,非常易于非專業人員操作學習, 極大的提高了應用系統的使用效率。GUI的推出使陌生得電子產品走出實驗室,進入到 廣大民眾的生活。開發人員通過對應用系統界面的不斷優化,使數據信息的傳輸更加高 效,使用戶對界面的操作更加便捷,可以說,GUI的推出應用是當今計算機發展的重大 成就之一。
    (2) 可視化
    GUI的圖形集成功能可以把實際的地理地形地貌體現到用戶界面上,用戶通過可視 化界面即可了解到實際的場景。
    (3) 表達信息復雜多樣 應用系統的每個界面都表達了不同的信息,窗口可以互相切換交替使用方便尋找目 標信息。
    設計GIS應用系統的界面時,應遵循以下原則[49-50]:
    ①減少用戶的認知負擔。
    ②保持界面的一致性。
    ③滿足不同目標用戶的創意需求。
    ④用戶界面友好性。
    ⑤圖標識別平衡性。
    ⑥圖標功能的一致性。
    ⑦建立界面與用戶的互動交流。
    本系統的登陸界面和主界面設計介紹如下:
    ①登陸界面:如圖 2.2所示為本系統的登陸界面布局設計,登陸界面展示的信息有 系統名稱、用戶名、密碼以及制作單位等。選擇大連標志性旅游景點星海廣場作為界面 背景,整體看起來簡潔美觀。
     
    圖 2.2 系統登陸界面
    Fig. 2.2 System login interface
    ②系統主界面:如圖 2.3 所示為系統主界面,主界面包括菜單、主平面地圖、和圖 層信息等,整體看起來簡單易懂。
    E:«»»eis«esaK« - o
    M S5B透剜I Mtt 3D«JB 亍,»WBS WMBft
    «< 4 I*' O ♦• ♦) ?"*<«o 二 ODtJJO
     
    圖 2.3 系統主界面
    Fig. 2.3 System main interface
     
    2.4系統設計原則
    結合GIS應用系統的開發原則以及用戶人員的實際需求,本系統在開發過程中需要
    遵守的原則具體如下[51]:
    (1) 穩定性原則。軟件開發需選擇業內成熟穩定的技術,保證開發出的系統運行 穩定良好,系統內信息保證不會被隨意生成、修改和刪除。
    (2) 安全性。對數據庫有一定的保護措施,保證系統編碼不會對數據庫造成毀壞。 保證系統內數據庫準確有效,對滑坡區的屬性信息記錄真實可靠,并且可根據實際變化 進行及時更新,保證為使用人員提供的信息具有真實的參考價值。
    (3) 易操作性原則。各功能模塊要操作簡單、便于人機交互,系統操作界面要美 觀簡潔、不要過于復雜,操作界面要易于使用人員理解掌握,便于操控,尤其適合政府 等非專業人員使用。
    (4) 系統的功能結構要合理。系統的功能模塊設計要邏輯結構清晰、便于開發者 理解。
    (5) 功能需完整。最終發布的系統既要有專業需求的功能,又需具有像ArcGIS同 樣的基礎功能,比如放大縮小、移動、保存、加載地圖等。
    (6) 可擴展性。系統的可擴展性是指應用系統可根據用戶的現實需要的變化進行 擴展的程度。它包含兩個方面的內容:一個是性能上的可擴展性;另一個是功能上的可 擴展性。當前,關于防災減災方面的研究正處于快速發展中,其研究理論和研究結果處 于不斷的變化更新之中,系統開發過程需充分考慮此點。
    (7) 開放性。系統的開放性體現在系統從設計到開發再到測試的全過程,做到不 管是集成到其他平臺上,還是對該系統進行優化擴展上,都能順利進行。
    2.5系統開發方式的選擇
    在明確了滑坡危險區信息管理系統的設計目標后,本節對 GIS 應用系統的開發方 式、開發環境、開發平臺以及開發工具的選擇等做一個詳細的介紹。
    2.5.1ArcObjects 和 ArcGIS Engine 的簡介
    在GIS的發展領域內,Esri公司處于行業發展的前沿。ArcObjects是Esri公司推出 的構建 ArcMap、ArcScene、ArcCatalog 等系列產品的組件庫,其中包含著大量的用于 GIS開發的功能函數,開發人員正是通過使用這些功能函數去構建用戶所需的GIS應用 軟件[52]。 ArcObjects 作為 GIS 組件庫具有很強的開放性和可擴展性。開放性體現在可以 在多種開發環境中進行GIS應用軟件開發,ArcObjects可以通過多種支持COM標準的 語言工具(例如VBA、VB、C++、C#等)開發,因此,開發人員可以任意選擇一種開 發語言進行GIS應用程序的二次開發。可擴展性主要體現在開發人員可對ArcObjects組 件庫中沒有的功能進行補充擴展[53]。
    在早期GIS領域的開發中,Esri公司并未能提供獨立的開發組件,因此,所開發的 應用程序并不能脫離“母體”存在。這樣導致二次開發系統的部署難度和分發成本都比 較大。因此,ESRI公司從ArcGIS10.0開始推出了一個獨立的開發工具包,里面封裝著 ArcObjects 的核心部分。這樣一來,基于此工具包所開發的 GIS 應用程序便可以脫離 ArcGIS 桌面程序獨立運行,這個開發工具包就是 ArcGIS Engine[54]。
    2.5.2桌面GIS應用軟件的四種開發方式
    (1)使用VBA進行桌面軟件開發
    VBA (Visual Basic for Application)是VB語言的子集,可以理解為是一種簡化的 VB 語言,它主要應用于對支持 VBA 的 Windows 程序進行擴展開發[55]。使用 VBA 進 行系統擴展是一種輕量級的開發方式,也是最簡單的 GIS 軟件開發方式。開發者對于 ArcGIS 提供的工具只需直接調用使用即可,這樣開發者可以省去大量的時間,把精力只 專注于 ArcGIS 不能提供的功能上。
    (2)使用 DLL 進行桌面軟件開發
    DLL (Dynamic Link Library)是動態鏈接庫文件,作為一種類文件編譯格式,可以 被所有支持COM的語言所調用[56]。DLL開發方式的特點是[57-60]:
    ①開發人員開發軟件時可以脫離ArcGIS Desktop,使用自己熟悉的開發語言進行 開發,比如Java、C#等。
    ②通過DLL開發的功能相比于VBA開發方式更加強大和靈活。
    ③DLL方式編譯的結果是DLL文件,封裝性更好。
    ④通過 DLL 開發的軟件,功能分發只需傳遞 DLL 文件即可,功能分發更加簡單 靈活。
    (3)使用Add-in進行桌面軟件開發
    Add-in是一種高效擴展應用程序的方式,由ArcGISlO.O推出。它的特點為[6i-64]:
    ①創建比較容易。創建容易體現在 ArcGIS10.0 提供了很多模板用于 Add-in 的創 建。
    ②安全性。應用相對較安全,具體體現在開發人員可以對Add-in文件進行數字簽 名。
    ③共享性。 Add-in 從本質上來講就是一個由配置文件、程序集和資源三項構成的 Zip 壓縮文件,非常易于網絡傳輸和共享。
    ④容易部署和管理。安裝ArcGIS Desktop環境的系統可自動識別Add-in文件,若 想安裝部署,只需雙擊鼠標即可。ArcGIS 10.0提供的Add-in管理工具可對其進行非常 便捷的管理。
    (4)使用 ArcGIS Engine 組件庫構建獨立的應用程序
    ArcGIS Engine 方式進行 GIS 軟件開發特點是[65]:
    ①可以脫離ArcGIS Desktop獨立部署安裝,或者集成到第三方軟件中。
    ②可以讀取ESRI推出的所有數據格式。
    ③使用的C#語言更加高效強大。
    2.5.3四種開發方式的比較
    本小節對四種開發方式進行簡單的比較:
    (1)VBA是VB (Visual Basic)的子集,采用VB的語言規范,開發人員只需要 專注于開發 ArcGIS 沒有提供的功能。 VBA 開發方式簡單易學, ArcGIS 開發人員通過 很少的編程語言就能達到使工作簡單自動化的目的,尤其適合針對空間數據的處理工作, 因此,此種開發方式對于能熟練使用 ArcGIS 但開發能力較弱的人員非常友好[52,66-68]。 此外,VBA開發方式還擁有添加模塊、類模塊和用戶窗體等基本功能,可以大大減少開 發人員的勞動量。總體來講,VBA開發方式適于中小規模的GIS應用系統開發。
    (2)VBA 開發方式雖然較為簡單,但在存在很多缺點,比如安裝部署較為麻煩, 不能脫離 ArcGIS Desktop 獨立運行。在很多時候,每個 GIS 軟件產品需要承擔更多具 有行業特色的數據處理工作,這時使用DLL (Dynamic Link Library,動態鏈接庫)開發 方式是一種更可取的選擇。
    DLL 開發方式的特點是:可以擴展界面操作功能,構建的 GIS 應用系統也比通過 VBA 方式構建的 GIS 系統稍大一些。只需提供 DLL 文件就可對 GIS 應用系統進行開 發,開發人經過注冊就可在ArcGIS Desktop上使用。相比于VBA開發方式,通過DLL 開發方式開發的軟件部署更加靈活,其專業性也比較強。
    (3)Add-in開發方式是一種輕量級的GIS軟件開發方式。相比于DLL方式,它 提供的擴展類型更加豐富,開發的程序也更易于分發,同時 ArcGIS 提供了很多模板供 開發人員使用,因此,Add-in開發方式普遍被開發人員所喜歡,更有不少開發人員將其 作為替代VBA開發方式和DLL開發方式的首要選擇。
    (4)以上三種開發方式的共同特征是:開發的GIS軟件必須在ArcGIS Desktop上 運行。而在實際應用中,由于軟件版權、軟件的獨立性、以及軟件部署成本和難度等原 因,目前市場上應用最廣的還是基于ArcGIS Engine的開發方式[52]。ArcGIS Engine作為 基于COM的集合,可以被C#、C/C++、Java、Visual Basic等開發語言所調用,適用于 中大型規模的 GIS 二次開發[69]。此開發方式的優點是其構建的應用程序可以脫離母體 獨立部署和運行,既可以調用ArcGIS Engine提供的功能組件,又可以充分發揮可視化 開發語言高效方便的優點,不僅提高開發效率,還能使程序外觀更美觀、數據庫更方便 維護。 ArcGIS Engine 開發方式能更好的滿足不同行業的不同 GIS 功能的需求,具有很 強的靈活性和可擴展性,因此,本文選擇ArcGIS Engine開發方式[52]。
    2.5.4開發環境
    由于滑坡危險區信息管理系統數據庫涉及到海量數據的存儲,系統需要對海量數據 的加載處理做出快速反應,所以為了避免出現卡頓或反應異常等情況,對電腦硬件配置 要有較高要求。
    標準配置: CPU: Intel(R) Core(TM) i5-10200H CPU @ 2.40 GHz 2.40 GHz
    內存: 16 GB
    硬盤: 512 GB
    顯示適配器: NVIDIA GeForce GTX1650 操作系統: Windows 10 家庭中文版
    最低配置: CPU: Intel(R) Core(TM) i5-10200H CPU @ 2.40 GHz 2.40 GHz 內存: 8 GB 硬盤: 256 GB
    顯示適配器: NVIDIA GeForce GTX1650 操作系統: Windows 10 家庭中文版
    2.5.5數據存儲方式
    Shapefile文件作為一種主流的GIS數據存儲方式有很強的靈活性,主要體現在它可 以轉化為各種數據格式[52],可以說,Shapefile文件既能滿足存儲海量數據的要求,還具 有一定的靈活性。因此,根據滑坡危險區信息管理系統對數據量的要求,本文采用 Shapefile文件格式來存儲與滑坡相關的數據。一個Shapefile文件最少包括三個文件,分 別是主文件(存儲地理要素圖形數據的文件)、索引文件(存儲圖形數據信息和屬性信 息關系的文件)和屬性文件(存儲圖形要素的屬性數據的文件)I70】。Shapefile文件作為 一種通用的數據格式能很好的儲存滑坡主體屬性信息。
    2.5.6開發平臺
    基于滑坡危險區信息管理系統功能的要求,在確定ArcGIS Engine的開發方式后, 本文采用Esri公司的ArcGISlO.O提供的ArcEngine (即ArcGIS Engine)作為組件開發 平臺(ArcGIS Engine 是 ArcGISlO.O 推出版本,在 ArcGISlO.O 之前并無 ArcGIS Engine 二次開發),下面對 ArcGIS Engine 開發平臺做簡要介紹[71-72]。
    ( l) ArcEngine 的組成
    ArcEngine分為兩部分:一是開發工具包(ArcGIS Engine Developer Kit),主要用 于為GIS應用程序的開發提供相關組件;二是基礎運行環境(ArcGIS Engine Runtime) [52], GIS 應用程序需在此環境中運行。
    ArcGIS Engine 開發工具包是 ArcObjects 核心功能封裝起來的部分,其中包含了大 量的GIS功能函數,是開發GIS應用系統的組件庫。基于ArcGIS Engine的GIS開發, 就是開發人員根據用戶需求采用某種語言,對ArcGIS Engine的組件不斷進行調用,進 行GIS應用系統開發的討程。ArcGIS Engine開發工具包包括幾下幾方面的內容:
    ①基本操作組件。指的是地理要素的操作、地圖文件的顯示等 ArcObjects 的核心 組件,是本系統實現對地圖進行基本操作時必須調用的組件。
    ②數據存取。包含本系統在訪問mxd文檔和Shapefile數據等數據文件時需調用的 組件和接口。
    ③地圖的顯示。包含本系統實現滑坡數據的顯示和地圖制作等功能的組件和接口。
    ④用于 GIS 二次開發的組件。包括本系統實現滑坡信息可視化的各種可視化控件 和 ToolbarControl 控件調用的按鈕、工具等。
    ArcGIS Engine 運行時是基于 ArcGIS Engine 開發的 GIS 軟件運行所需要的基礎環 境。
    ( 2) ArcEngine 的功能
    ArcEngine的功能非常豐富和強大,開發人員可通過ArcEngine實現如下功能:
    ①對地圖進行基礎操作。包括加載數據,瀏覽地圖,保存地圖,繪制地圖等。
    ②信息查詢。主要指通過SQL語句形式或圖形選中方式對目標進行屬性信息查詢。
    ③繪制專題圖。指通過點密度渲染、分級渲染等渲染方式繪制圖層。
    ④數據編輯。指編輯矢量數據、屬性數據等操作。
    ⑤網格分析。指對幾何網絡進行空間分析。
    ⑥空間統計分析。指對空間數據進行空間關系和空間特征的分析。
    ⑦三維模型分析。 指對空間數據實現三維可視化。該功能的主要控件是 SceneControl 和 GlobeControl。
    本系統建立的目標主要是實現以上功能中的對地圖進行基礎操作、滑坡屬性信息查 詢、滑坡空間統計分析以及三維模型分析等。
    2.5.7開發工具
    基于本系統的開發條件要求, 本文以 Microsoft Visual Studio 為開發工具, 在 Microsoft.NET Framework框架下,使用C#語言進行GIS應用系統開發。下面分別對 Microsoft Visual Studio 開發工具、Microsoft.NET Framework、C#語言進行簡單介紹。
    Microsoft Visual Studio (簡稱VS)是美國微軟公司推出的一套用于構建擁有強大功 能的應用程序的開發工具集。 VS 包含軟件開發及運行過程中所需要的大部分工具(如 UML工具、代碼管控工具、集成開發環境(IDE)等)卩習,其所寫的代碼均可用于微軟 支持的平臺(如Microsoft Windows、Microsoft.NET Compact Framework、Windows Mobile、 Windows CE、Microsoft.NET Framework 等)。
    本文選擇 VS 作為本系統開發工具,是因為其有以下幾大優點:
    (1)擁有強大的數據庫開發工具 數據庫建立過程所需要的開發工具包括概念工具、邏輯工具和設計工具等。概念工
    具可通過對象角色建模方法將專業知識引入程序設計過程,如此,開發的應用程序能很 好的滿足本系統的專業需求。邏輯數據庫設計所需的業界標準模型具有對Microsoft SQL Server™數據庫的完全往返工程功能,從而使在開發本系統時對概念、邏輯或實體等某 一層次上的修改在其他層次上也能反映出來。
    ( 2) 軟件建模功能強大
    支持標準統一的建模語言,為通過 Microsoft.NET Framework 構建的模型提供了通 用的元模型。這樣,開發本系統時在某一張圖表中的修改即可自動反映在其他的圖表中。
    ( 3) 錯誤檢查 語義錯誤檢查功能非常強大,可快速準確檢查出本系統程序設計中的錯誤。
    (4)提供眾多的結構指導
    Microsoft.NET Framework提供了大量的關鍵基礎結構,本文作者在開發本系統時省 去了大量時間去構建程序的基礎內容。此特點對開發人員非常友好,即使經驗不足,也 能輕松開發自己所需的程序,本文作者專業背景并非專業計算機人員,此特點在開發GIS 應用系統時非常重要。
    (5)擁有強大的測試功能 用于對程序的性能進行測試,本文作者在開發本系統時通過此功能在開發初期就可
    找出應用程序中的問題。
    ( 6 ) 回歸測試 本系統在開發時可方便的進行回歸測試,可確保不會再引入已修正的錯誤。
    Microsoft.NET Framework 是在 Microsoft Visual Studio 下的底層框架庫,廣泛用于 VS開發的各種windows應用程序。它主要包括兩個組件:一是公共語言運行時(CLR), 用于處理運行的應用程序的執行引擎;二是 Microsoft.NET Framework 類庫,向開發人 員提供所需要的可重用代碼庫。Microsoft.NET Framework的特點如下[74]:
    ( l) 提供標準的面向對象開發環境。
    (2)提供的代碼執行環境兼容性極好,一臺計算機可兼容不同版本的 Microsoft. NET Framework。
    (3)通過使用JIT (Just In Time)技術可大大提高代碼的運行速度。
    Microsoft.NET Framework的推出對計算機軟件學科的發展起到了重要的推進作用, 依賴于計算機軟件科學的 GIS 應用系統的開發也因此受益。
    C#是由在C和C++基礎上衍生出來的一種編程語言,其性能安全穩定、簡單易懂, 是編寫Microsoft.NET Framework框架的語言。它既繼承了 C和C++的強大功能,又去 掉了 C和C++的一些復雜特性[75]。C#兼具可視化操作和運行效率較高的特點,并且以 其簡單易懂的語法特點和便捷的面向組件編程的支持等眾多優點成為 Microsoft.NET Framework開發的首選語言。本文在Microsoft.NET Framework框架基礎上進行GIS應 用系統的開發,同樣選擇C#作為本系統的開發語言。
    2.6本章小結
    本章通過對用戶進行需求分析確定了本系統的設計目標以及設計時需要遵守的設 計原則,進而勾畫了本系統的功能框架結構。通過對現有不同GIS應用系統開發方式的 特點進行比較,確定了最適合本系統的開發方式為通過ArcGIS Engine開發方式進行GIS 應用系統開發,且進一步針對ArcGIS Engine開發方式做了對本系統開發所需的開發環 境、數據庫中數據存儲格式、開發平臺和開發工具的介紹。本章的意義在于完整的描述 了一個 GIS 應用系統開發前所應做的基礎工作。
    3數據庫建設
    本章對滑坡危險區信息管理系統數據庫的建設做詳細介紹。
    3.1地理信息系統數據庫的概念
    數據庫技術誕生于 20 世紀 60 至 70 年代,是信息技術的核心,是現代信息科學技 術的重要組成部分,它的主要目的就是研究如何高效的組織、存儲、獲取和處理大量的 數據。學習數據庫技術就是通過研究數據庫的結構、存儲、設計的理論,然后利用這些 理論實現對海量數據進行處理、分析、管理和應用的過程[76]。
    數據庫技術以其高效處理數據的優點獲得了快速的發展。目前,數據庫的應用已廣 泛應用到各行各業當中,從一般事務信息的處理到各種專業化數據信息的存儲管理,都 可以建立對應的數據庫。地理信息系統的數據庫就是一種專業化的數據庫,它與一般事 務信息數據庫的區別就是不僅要處理地理屬性信息還要對地理空間數據進行專業化管 理、分析和使用[77-79]。因此, GIS 數據庫比一般事務數據庫更加復雜,功能也要更加強 大。
    數據庫設計的目標是[76,78]:
    (1)滿足用戶要求。數據庫既要滿足用戶的數據需求、安全性及完整性要求。又 要能支持用戶對數據的所有處理功能。
    (2)高效性。數據庫的高效性體現在對數據的存儲效率和存取效率上。要盡可能 減少冗余數據,滿足用戶對數據的高效處理。
    ( 3) 準確性。數據庫數據要有可靠來源,盡量保證數據準確無誤。
    3.2數據預處理
    3.2.1大連市地理基礎數據處理
    大連市地理基礎數據來源眾多,其數據質量、內容等各有差別,適用性各不相同。 本文基于多維度的比較分析和研判后,采用了如圖3.1所示從BIGEMAP地圖下載器中 下載獲得的大連市地理基礎數據,將其加載到ArcMap后,經處理后以Shapefile文件格 式儲存。本文收集到的大連市地理基礎數據共有 26 個圖層,在 ArcMap 中按照圖層類 型分為點圖層數據、線圖層數據、面圖層數據。點圖層數據所包含的信息有大連市危險 點、收費站、火車站、汽車站、機場、山峰點、村名、鄉鎮名稱、縣名稱等。線圖層數 據包含的信息有城市快速路、縣道、省道、國道、高速、鐵路、地鐵等。面圖層數據包
    括的信息有島嶼、碼頭區域、高速服務區域、旅游勝地區域、森林、水系、市界、縣界、
    鄉鎮邊界等。上述收集的地理數據基本描述了大連市的地理情況。
     
    圖 3.l 大連市地理基礎數據
    Fig. 3.l Dalian City Geographic Basic Data
     
    3.2.2屬性數據處理
    與大連市地理基礎數據選取相同,本文通過對不同來源的大連滑坡數據系統性比較 分析后,選取了如表3.1所述的大連市滑坡危險區屬性信息作為滑坡危險區屬性信息庫。 本文從中國地質調查局和地質云等相關網站中共收集到23處滑坡和1109處不穩定斜坡 的屬性數據。關于滑坡危險區屬性信息(如災害類型、災害名稱、災害等級、威脅人口 和財產數等)本文將其進行規范化處理后以 Excel 表格形式儲存。
    表 3.1 大連市滑坡危險區屬性信息
    Tab. 3.1 Information on the properties of landslide hazard areas in Dalian
    災害體類型 災害體名稱 經度(°) 緯度(° 威脅人口(人) 威脅財產(萬元)
    不穩定斜坡 大山村南斜坡 121.7 39.3 10 30
    滑坡 廟北溝滑坡 122.0 40.0 6 6
    滑坡 丹莊高速滑坡 123.4 39.8 5 2
    滑坡 王家島后灘滑坡 123.1 39.5 5 20
    滑坡 二里溝西山滑坡 122.1 40.0 13 20
    滑坡 吳屯邱煥波家滑坡 122.8 39.9 5 4
     
     
     
    滑坡危險區屬性數據處理的關鍵在于如何將滑坡區域位置以圖形形式體現出來,且 屬性數據要和滑坡點位置有效結合。本文采取的辦法是:在ArcMap中將存有滑坡點坐 標信息和屬性信息的Excel表格以“添加X,Y數據”的形式進行添加,選擇合適的地 理坐標系后,再導出為Shapefile文件格式,這樣即可實現簡單的滑坡空間位置和屬性數 據的一體化。具體操作如下:
    第一步,如圖3.2所示在ArcMap中將Excel表格中的滑坡點以“添加X,Y數據” 的方式進行添加,操作步驟:【文件】一【添加數據】一【添加X,Y數據】。
    Q 無標題-ArcMap - Arcinfo
    文件(F)躺(E)視圖(V)書簽(B)攝入⑴卻(S)地理處理(G)目走義(C)窗口 (W)
    :Z國O專
    □ Wr^(N)...
    打開(O)...
    目保存(S) 另存為(A)...
    保^81本(6“
    Ctri+N
    Ctd+O
    Ctrl+S
    添 WSCD
    ArcGIS Online(R)...
    頁EI和打印iSB(U)...
    打印預覽(V)...
    打印(P)...
    創建地圖包(O..
    港力KJWT)...
    □S添加J嗣(B)...
    BS 從 ArcGIS Online 港力陂E(0)... |主 添加XY數摒(A)..?
    標 渤0路徑事件(V)??.
    盤 添力ns詢圖層(Q...
    導出地WE)...
    er 性(M)...
    110.o.mxd
    2雨模型底凰.mxd
    3C:\U...\X^m降甫模型底圖.mxd
    4C:\U...\>芯市降雨模型底圖.mxd
    5C:\Users\l»inzhu\D...晦習.mxd
    6C:\Us...\OOOOOOOOOOOOOO.mxd
    7降雨模型底圖.mxd
    圖 3.2 添加滑坡點數據第一步
    Fig. 3.2 The first step in adding landslide point data
    第二步,在彈出的如圖3.3所示的【添加XY數據】窗體中,選擇如圖3.1所示的 Excel屬性表,X字段選擇經度,Y字段選擇緯度(如圖3.3所示紅色虛線框處),坐標 系選擇 GCS_WGS_1984 坐標系(如圖 3.4所示紅色虛線框處),點擊確定。如此,如圖 3.5所示的滑坡點分布情況即以點圖層形式出現在ArcMap中。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    圖 3.3 添加滑坡點數據第二步
    圖 3.4 選擇坐標系
    Fig. 3.4 Select coordinate system
    Fig. 3.3 Step 2 of adding landslide point data
    圖 3.5 滑坡點分布情況
    Fig. 3.5 Distribution of landslide points
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    第三步,將滑坡點數據導出為Shapefile文件格式,操作方法如圖3.6中紅色虛線框 處所示:鼠標右擊滑坡點圖層—【數據】—【導出數據】,彈出【導出數據】窗體(如 圖 3.7所示)。在【導出數據】窗體紅色虛線框處輸入“輸出文件地址”、“文件名稱”, 選擇保存類型為Shapefile,這樣,大連市滑坡危險區屬性信息Excel表格即轉變成點圖 層的 Shapefile 文件格式,滑坡點和其屬性信息做到了圖形—屬性一體化。將 Shapefile 文件格式的大連市滑坡區加載進ArcMap中,鼠標右擊滑坡點圖層即可查看其屬性信息
     
    (圖3.8為Shapefile文件格式的滑坡危險點屬性信息表)。這樣滑坡危險區域屬性信息 處理即可完成。將滑坡危險區屬性信息與大連市基礎圖層信息一同以 Shapefile 文件格 式進行儲存,并置于同一文件夾中,則本系統屬性信息數據庫建立完成。
     
    3.2.3空間數據處理
    對于滑坡危險區地形地貌 3D 模型原始數據,本文引入無人機技術和傾斜攝影技術 進行數據采集。 2020 年9 月本文作者與課題組人員前往大連莊河市潘屯、呂屯和下坎三 處滑坡現場進行相關數據的采集,采集方法是在滑坡區域現場采用圖 3.9 所示搭載傾斜 鏡頭的四旋翼無人機按照事先規劃好的航線開展航拍活動。該無人機搭載 3 臺 SONY DX1000M5相機,有效像素數為2100 萬,在200m飛行高度時的分辨率為4-5cm。無人 機采用機載電池進行供電,單次最大飛行時間為15min,續航里程約為6km。通過機載
     
    天線可以向地面接收設備(圖3.10為地面控制設備軟件界面)傳輸飛行參數和電量等信 息,地面設備的控制半徑即無人機飛行半徑,約 2km。
    圖 3.1O 地面控制設備軟件界面
    Fig. 3.1O Ground control equipment software interface
    無人機在飛行過程中采集的數據有三維正射影像圖切片、PO I點位信息(包括名稱、 經度、緯度、高程等),采集到的數據通過無人機系統可生成DEM和三維正射影像圖。 DEM 是用一組有序數值陣列形式表示地面高程的實體地面模型,可以很好的描述滑坡 危險區域的高程信息。三維正射影像圖是由影像數據經過拼接而成。
     
    3D建模所需數據主要是矢量影像數據和DEM數據,如圖3.11所示為3D建模具體 過程:將處理好的影像數據和DEM數據加載到ArcScene中,在ArcScene中將兩種數 據的地理坐標系設為同一坐標系,在影像數據圖層屬性的“基本高度”界面中選擇“浮 動在自定義表面上”,基表面選擇DEM圖層,點擊應用完成3D建模。最終3D模型效 果如圖 3.12-3.13 所示,圖 3.12 為建好的大連市潘屯滑坡區域 3D 模型,圖 3.13 為利用 ArcScene 建好的大連市整體 3D 模型。將建好的所有滑坡危險區 3D 模型以 sxd 文檔形 式保存在于同一文件中,則本系統滑坡危險區3D模型數據庫建立完成。
     
    圖 3.11 滑坡危險區 3D 建模操作
    Fig. 3.11 Landslide hazard zone 3D modelling operations
     
     
     
    圖 3.12 大連市潘屯滑坡區域 3D 模型
    Fig. 3.12 3D model of the landslide area in Pantun, Dalian
     
     
     
    圖 3.13 大連市 3D 模型建模效果 Fig. 3.13 Dalian 3D model modeling effect
     
    3.3數據庫結構設計
    GIS數據庫的建立是開發GIS應用系統的基礎和前提,建立數據庫的關鍵技術問題 是數據庫的圖層設計和數據庫數據的標準化設計。因此,建立數據庫要遵循的兩個原則 是:一是要根據數據庫的服務來選擇數據結構,二是要遵循最小冗余原則[41,79]。
    目前,最常見的數據存儲方式是基于文件的數據存儲方式。一套以文件形式存儲的 完整的數據庫并非單一文件,而是由多個文件組成的文件組,這些文件組記錄了地物的 圖像信息、屬性信息、坐標信息、位置信息以及各種信息之間的關聯等。這些文件組放 在一起共同組成 Shapefile[8O-81]。
    基于ArcEngine建立的滑坡危險區信息管理系統所需要的數據庫,既需要存有大量 的空間數據,又需要存有大量的屬性信息,還要處理它們之間的關聯問題。因此,本文 選擇Shapefile文件作為本系統的數據庫。本系統采用的Shapefile文件由6個文件組成 來完成地圖信息的存儲工作,它們分別是[80]:
    (1)主文件(.shp):在滑坡區空間數據中,.shp是圖形文件,記錄的是滑坡區空 間數據中的圖形信息,是Shapefile文件中最主要的數據文件。
    (2)dBASE表文件(.dbf): .dbf記錄的是圖形文件的屬性信息。通過.dbf可以 查看滑坡區域的屬性信息。
    (3)索引文件(.shx): .shx是存儲圖形信息和屬性信息的關系的文件。從前面了 解到,.shp文件和.dbf文件分別記錄了滑坡區空間數據的圖形信息和屬性信息,但它們 之間并未發生聯系,需要.shx文件對它們進行關聯,實現對圖形要素的各項屬性的查詢 和鏈接。
    (4)投影信息文件(.prj):記錄的是各個要素的坐標信息。如果刪除,滑坡區各 要素的坐標信息將會丟失。
    (5)幾何體的空間索引文件(.sbn):儲存地物空間特征的索引文件。此文件在 本系統中并不重要,只有在進行地物間的空間關系查詢、空間聯接和對Shape字段進行 索引時才會用到。
    (6).sbx文件:與.sbn —樣同為幾何體的空間索引文件。
    3.4本章小結
    本章實現了滑坡危險區信息管理系統數據庫的建立。數據庫是一個GIS應用系統建 立和應用的基礎, GIS 應用系統對于地圖的操作,信息的查詢以及空間數據的分析都需 通過數據庫來完成,本章在建立數據庫過程中的特點在于提出基于數據庫技術將無人機 傾斜攝影技術與 GIS 三維可視化技術結合實現建立 GIS 應用系統 3D 模型數據庫的方 法。本章數據收集的特點在于通過引入無人機傾斜攝影技術豐富了 3D 模型數據庫的原 始數據的采集方法,提高了數據采集的效率和準確性。
    4系統功能的實現
    本系統的主要功能模塊共分為四個,分別是基礎功能模塊、對滑坡的屬性信息進行 查詢功能模塊、滑坡的 3D 模型展示功能模塊以及滑坡預警功能模塊。本章將分別介紹 系統開發環境的設置方法和四個功能模塊的構建及其理論方法和關鍵代碼。
    4.1 系統開發環境設置
    依據本系統開發的實際情況,本文最終采用以 Visual Studio 2O15 為開發工具,在 Microsoft.NET Framework4.5框架下,使用C#語言進行本系統開發。
    Visual Studio 2015是微軟公司2014年推出的版本。選擇Visual Studio 2015為開發 工具,是因為相比于以往的 VS 版本,它有以下幾個優點:
    (1)可以自定義窗口布局。可以在不同設備上自由切換開發環境的布局來適應當 前的設備類型。
    (2)對代碼可以進行智能提示。可對關鍵函數、變量、方法的應用等進行智能提 示。
    (3)擁有更加優秀的代碼編輯器。當要修復代碼的時候,會自動提供一系列修復 代碼的方案。
    (4)擁有強大的診斷工具。能在調試時及時的監控CPU、內存的變化,可以方便 的跟蹤程序的性能。
    可以說, Visual Studio 2015 作為應用程序的開發工具相較于以往版本,其性能更加 強大。
    Microsoft.NET Framework4.5 是 Visual Studio 2015 上搭載的 Microsoft.NET Framework 版本。
    開發者在系統開發前需要完成軟件開發環境的相關設置,在新建立的工程中進行基 礎控件的添加和ArcGIS引用項的引用。
    4.1.1創建工程項目
    在Visual Studio 2015的C#語言環境下新建一個項目:選擇【文件】下拉菜單中選 擇【新建項目】,界面將彈出如圖 4.1 所示【新建項目】窗體。在按照菜單從大到小級 別依次點擊【VisualC#】一【ArcGIS】一【Extending ArcObjects】按鈕,選擇【Windows Application(Engine)】選項,在圖4.1中紅色虛線框處輸入項目名稱,選擇保存地址,單 擊確定,創建一個新的工程。
     
     
    Fig. 4.1 Create a new project
    4.1.2添加ArcGIS引用項
    在彈出的如圖 4.2 所示【解決方案資源管理器】窗體中選擇開發所需的 ArcGIS 引 用項,鼠標右鍵單擊【引用】按鈕,點擊【添加引用】按鈕,在彈出的【引用管理器】 窗體中(如圖 4.2所示紅色虛線框處)選擇需要的引用進行添加。
    添加的類庫主要有System類庫、SystemUI類庫、Display類庫、Output類庫、Geometry 類庫、DataSourcesFile 類庫、Geodatabase 類庫、3DAnalyst 類庫、Carto 類庫、Controls 類庫、 Geometry 類庫、 GlobeCore 類庫、 Version 類庫等。
     
    圖 4.2 添加 ArcGIS 引用
    Fig. 4.2 Adding ArcGIS references
    4.1.3添加控件
    從【工具箱】中添加 LicenseControl 控件對所開發軟件進行授權,添加 MapControl 控件、 TOCControl 控件和 ToolbarControl 控件到窗體中并調整好布局,三個控件的作用 分別是用于地圖顯示、圖層樹控制和地圖工具的添加。最終系統開發界面顯示如圖 4.3 所示。
     
    圖 4.3 系統開發界面
    Fig. 4.3 System development interface
     
    4.1.4綁定控件
    ( 1 ) 綁定 ToolbarControl 控件和 MapControl 控件。選中 ToolbarControl 控件,鼠 標右鍵單擊,再單擊【屬性】按鈕,彈出如圖 4.4所示【屬性】窗體。在【屬性】窗體 的【General】選項下的【Buddy】下拉列表中選擇MapControl地圖控件,點擊確定,這 樣就將 ToolbarControl 控件和 MapControl 控件進行了綁定。在如圖 4.5 所示【屬性】窗 體【Items】選項子窗口中單擊【Add…】按鈕,彈出如圖4.6所示子窗體。在此窗體中 可見大量用于地圖操作的工具,可按需求任意將其添加到ToolbarControl工具條中。在 開發的GIS應用程序中,可任意使用這些工具進行簡單的地圖操作。ArcEngine組件庫 提供的這些基礎工具大大縮短了開發人員開發程序的時間,由于這些工具的使用與 ArcMap 中的工具使用方式相同,所以也極大的方便了能對 ArcMap 進行熟練使用的用 戶。
     
     
    ( 2) 綁定 TOCControl 控件和 MapControl 控件。選中 TOCControl 控件,單擊鼠 標右鍵,選擇【屬性】,彈出如圖4.7所示TOCControl控件屬性對話框。在【General】 選項卡的【Buddy】選擇MapControl控件進行綁定,這樣,程序運行時TOCControl控 件和 MapControl 控件將會進行聯動反應。
    ( 3) 綁定 TOCControl 控件和 ToolbarControl 控件。與上述( 2)中操作同理,可 將 TOCControl 控件和 ToolbarControl 控件進行綁定,或者通過程序代碼實現,具體代 碼如下:
    axTOCControl1.SetBuddyControl(axMapControl1); axToolbarControl1.SetBuddyControl(axMapControl1);
    至此,一個基于ArcGIS Engine的應用系統框架已經初步搭建完成。
     
    圖 4.7 TOCControl 控件屬性選項
    Fig. 4.7 TOCControl Control property options
     
    4.2 基礎功能
    用戶通過基礎功能實現了對平面地圖進行簡單查看和基礎操作。如圖 4.8 所示為大 連市總平面圖,其中綠色點為滑坡危險點。
    在這個子系統中,我們為用戶設定的可實現內容包括:
    (1) 整個大連市總平面圖顯示和滑坡危險點分布情況展示。
    (2) 地圖操作基本功能。本系統的基礎功能有加載數據、地圖瀏覽、保存、地圖 導出、地圖量測等功能。加載數據包括加載Shapefile數據和mxd文檔;地圖瀏覽包括 地圖放大縮小移動等功能;地圖導出包括區域導出功能和全域導出功能;地圖量測包括 對面積進行量測和對距離進行量測。
    上述保存和瀏覽功能可從系統工具欄中添加獲得,無需自編代碼實現,其他加載數 據、地圖導出、地圖量測是ArcMap已有功能,但本文所開發系統為脫離ArcMap而存 在的獨立應用程序,無法調用ArcMap功能,所以仍需通過自編代碼進行實現。下面介 紹除地圖瀏覽外的基礎功能的實現方法。
     
    圖 4.8 大連市總平面圖
    Fig. 4.8 Dalian City Map General Plan
     
    4.2.1加載mxd文檔和Shapefile數據
    在考慮實現對文檔進行加載的功能時,本文采用 IMapControl 接口的方法,使用其 LoadMxFile 對文檔進行加載,其實現思路為:
    (1)在 Microsoft.NET Framework 框架類中尋找有關組件,目的是用于打開文件 窗體,進而選擇目標地圖文檔。
    (2)使用 IMapControl 接口提供的 CheckMxFile 方法檢查要打開的地圖文檔是否 有效。
    (3)若經上述方法檢查,認定地圖文檔有效,則調用LoadMxFile方法加載文檔。 此部分功能實現的核心技術就是OpenFileDialog類的使用和利用if語句對文檔的有 效性進行檢驗。實例化OpenFileDialog類可以彈出一個文件對話框,然后對 OpenFileDialog 類的 title、Filter、Multiselect 等屬性進行相應設置。實現加載 mxd 文檔 功能的關鍵代碼及其解釋詳見附錄A中圖1。
    在考慮實現對Shapefile文件進行加載時,本文采用MapControl控件的AddShapefile 的方法加載 Shapefile 文件。調用該方法需要傳入文件路徑和不帶擴展名的文件名兩個 參數,調用方法為:mainMapControl.AddShapefile(stringPath, string filename);
    最終,實現加載 mxd 文檔操作分別如圖 4.9和如圖 4.10 所示,具體操作如下:
     
    (1) 如圖 4.9所示為加載 MXD 文檔第一步,點擊“加載數據”按鈕,選擇“加 載MXD”,將會顯示三種加載方法,任選其一即可,以“LoadMxFile方法”進行加載 為例,點擊“ LoadMxFile 方法”按鈕。
     
     
    圖 4.9 加載 MXD 文檔
    Fig. 4.9 Load MXD document
    (2) 彈出要加載的文檔地址,選擇好文檔,點擊“打開”按鈕。如圖 4.10所示為 選擇地圖文檔界面。
     
     
    圖 4.10 選擇地圖文檔
    Fig. 4.10 Select a map document
    3) 地圖文檔加載完畢。如圖 4.11 所示為加載進系統的大連市地圖,也是系統的
     
    主界面。
     
     
    圖 4.11 系統主界面
    Fig. 4.11 System main screen
    加載Shapefile文件數據實現操作分別如圖4.12和如圖4.13所示,具體操作如下。
    (1 )點擊“加載數據”按鈕,選擇加載Shapefile數據。如圖4.12所示為加載Shapefile 數據操作第一步。
     
     
    圖 4.12 加載 Shapefile 數據
    Fig. 4.12 Load Shapefile data
     
    (2) 彈出要加載的文件地址,選擇好文件,點擊“打開”按鈕。如圖 4.13 所示為 選擇目標Shapefile數據界面。
    F打開Shape文件
     
    刁 Shape文件(*.shp)
    圖 4.13 選擇 Shapefile 數據
    Fig. 4.13 Select Shapefile data
    (3) 數據文件加載完畢。如圖 4.14 所示為目標 Shapefile 數據展示,從圖中,我 們可以看到加載到程序里的大連市地圖的基本輪廓。
     
    圖 4.14 加載 Shapefile 數據效果
    Fig. 4.14 Load Shapefile data effect
    4.2.2地圖導出
    本小節將介紹地圖導出為圖片的實現方法,這里開發“區域導出”和“全域導出” 兩種功能。區域導出,顧名思義,就是將鼠標在地圖中畫一個閉合區域,導出的圖片內 容只含有這個閉合區域;全域導出,就是將整個界面上顯示出的地圖區域進行導出。地 圖導出為圖片的功能,可使用戶方便的對敏感區域進行快速查看瀏覽。
    具體實現方法如下:
    (1)創建一個【圖片導出】窗體,窗體布局如圖 4.15所示,設置窗體用到的控件 包括Label控件、Button控件、ComboBox控件。在【圖片導出】窗體FormExportMap (如圖 4.16所示為【圖片導出】屬性窗體)中對導出的圖片進行相關參數的設置,本文 只對圖片的輸出寬度和輸出高度設置為固定數值。
     
    (2) 如圖4.17所示在“區域導出”菜單按鈕Click事件中填入如下代碼,驅動“區 域導出”功能。
    mainMapControl.CurrentTool = null;
    mainMapControl.MousePointer = esriControlsMousePointer.esriPointerCrosshair; pMouseOperate = "ExportRegion";
    如圖4.17所示在“全域導出”菜單按鈕Click事件中填入如下代碼,驅動全域導出 功能。
    if (frmExpMap == null || frmExpMap.IsDisposed)
    {
    frmExpMap = new FormExportMap(mainMapControl);
    }
    frmExpMap.IsRegion = false;
    frmExpMap.GetGeometry = mainMapControl.ActiveView.Extent; frmExpMap.Show();
    frmExpMap.Activate();
    (3)如圖4.15所示,在“瀏覽”按鈕Click事件中填入代碼,通過定義ExportMap 文件的 DefaultExt、 Filter、 OverwritePrompt、 Title 等屬性來實現圖片格式和圖片的輸出 路徑等的設置。
    SaveFileDialog sfdExportMap = new SaveFileDialog(); sfdExportMap.DefaultExt = "jpg|bmp|gig|tif|png|pdf";
    sfdExportMap.Filter = "JPGE 文件(*.jpg)|*.jpg|BMP 文件(*.bmp)|*.bmp|GIF 文件
    (*.gif)|*.gif]TIF 文件(*.tif)|*.tif]PNG 文件(*.png)|*.png|PDF 文件(*.pdf)|*.pdf";
    sfdExportMap.OverwritePrompt = true;
    sfdExportMap.Title = "保存為";
    txtExPath.Text = "";
    if (sfdExportMap.ShowDialog() != DialogResult.Cancel)
    {
    pSavePath = sfdExportMap.FileName;
    txtExPath.Text = sfdExportMap.FileName;
    }
     
    (4) 如圖 4.15 所示,在紅色虛線框處的 ComboBox 控件中寫入事件用于實現輸 出圖片分辨率的設置,輸出圖片的像素是隨著分辨率的改變而改變的,本事件對于輸出 圖片的高度和寬度的設置方法通過公式(4.1)完成。
     
    關鍵代碼如下:
    double num =(int)Math.Round(pActiveView.ScreenDisplay.DisplayTransformation.Re solution);
    if (cboResolution.Text == "")
    {
    txtWidth.Text = "";
    txtHeight.Text = "";
    return;
    }
    if (bRegion)
    {
    IEnvelope pEnvelope = pGeometry.Envelope;
    tagRECT pRECT = new tagRECT();
    pActiveView.ScreenDisplay.DisplayTransformation.TransformRect(pEnvelope, ref pRECT, 9);
    if (cboResolution.Text != "")
    {
    txtWidth.Text = Math.Round((double)(pRECT.right * (double.Parse(cboRes olution.Text) / (double)num))).ToString();
    txtHeight.Text = Math.Round((double)(pRECT.bottom * (double.Parse(cbo Resolution.Text) / (double)num))).ToString();
    }
    }
    else
    {
    txtWidth.Text = Math.Round((double)(pActiveView.ExportFrame.right * (doubl e.Parse(cboResolution.Text) / (double)num))).ToString();
    txtHeight.Text = Math.Round((double)(pActiveView.ExportFrame.bottom * (dou ble.Parse(cboResolution.Text) / (double)num))).ToString();
     
    }
    (5)如圖4.15所示,在“導出”按鈕Click事件中寫入代碼,用于最終實現導出 功能。該事件的關鍵技術是利用 if 語句對圖中紅色虛線框處 ComboBox 控件中的分辨 率進行判定,然后根據分辨率導出對應高度和寬度的圖片,關鍵代碼詳見附錄A中圖2。
    最終“區域導出”和“全域導出”實現效果分別如圖 4.18 所示和如圖 4.19 所示。 從圖 4.18 中可看到大連市部分地區的地圖,從圖 4.19 中可以看到大連市面貌的基本輪 廓。
     
     
     
    4.2.3地圖量測
    首先建一個小窗體進行測量結果顯示,如圖 4.20 所示為測量結果顯示窗體。
     
    距離量測時主要用兩個接口,分別是 INewLineFeedback 接口和 IScreenDisplay 接 口。實現方法為:
    (1) 點擊鼠標時,判斷 INewLineFeedback 接口的實例化對象是否為空,若為空, 則將其實例化并將當前鼠標點為 pNewLineFeedback 的起始點;反之,則把并前鼠標點 添加到 pNewLineFeedback 中。
    (2) 鼠標移動時,實時計算鼠標當前點與鼠標上一點擊點的距離以及所畫線的總 長度。
    (3) 鼠標雙擊時,停止繪制并清空 pNewLineFeedback 對象。其中的難點是移動 鼠標時測量結果的實時顯示。
    實現距離測量詳細步驟如下,實現該功能的關鍵代碼詳見附錄A中圖3。
    (1) 在主菜單“距離測量”按鈕 Click 事件中填入代碼,實現初始化相關變量, 彈岀【測量結果】窗體。
    (2) 鼠標點擊時,會觸發數據視圖的 mainMapControl_OnMouseDown 事件,實現 追蹤線的開始繪制或點的添加。
    (3)鼠標移動時,會觸發數據視圖的mainMapControl_OnMouseMove事件,實現 測量結果的實時顯示。
    ( 4) 雙擊左鍵時,觸發 mainManContrnl OnDoubleClick 事件,本次距離結算結 束,結果顯示在【測量結果】窗體中。
    最終實現對距離量測的結果如圖 4.21 所示,從圖可以看岀,折線總長度的量測結果 為 1000.357 米。
     
    圖 4.21 距離量測結果
    Fig. 4.21 Distance measurement result
    面積量測需要鼠標在地圖之中繪制閉合多邊形,需通過 INewPolygonFeedback 接口 實現,此方法與使用 INewLineFeedback 方法類似,區別在于其顯示的幾何特征為多邊 形,這樣起點成為終點,且最少有三個點要添加到幾何對象中。
    面積測量的實現思路如下:
    (1)鼠標點擊時,對 INewPolygonFeedback 接口的實例化對象 pNewPolygonFeed back進行判斷。如果為空,則將其實例化,并設當前鼠標點所在位置為pNewPollygonF eedback的起始點;如果不為空,則把當前鼠標點添加到pNewPolygonFeedback中。
    (2)鼠標移動時,通過函數判斷所繪制的多邊形的頂點個數,如果超過3 個,則 由點集構建IPolygon接口、IArea接口,計算出所繪制多邊形的總長度和面積。
    ( 3 ) 鼠標雙擊時,停止多邊形繪制,并清空 pNewPolygonFeedback 對象。面積量 算按鈕(btnMeasureArea_Click)事件觸發時則打開測量結果窗體,并設置bMeasureArea 為true,以便從數據視圖的鼠標(點擊、移動、雙擊)事件中判斷面積量算功能是否開啟。
    面積測量功能具體實現步驟與距離測量實現步驟相似,關鍵代碼詳見附錄 A 圖 4, 詳細步驟如下:
    (1)初始化相關變量,彈出【測量結果】窗體。
    (2)鼠標點擊時,觸發 mainMapControl_OnMouseDown 事件,即實現多邊形面的 繪制和點的累積添加。
    ( 3) 鼠標移動時,觸發觸發 mainMapControl_OnMouseMove 事件,實現測量結果 的實時顯示。
    ( 4)在雙擊鼠標左鍵時,觸發 mainMapControl_OnDoubleClick 事件,結束此操作。
    最終實現對面積量測的結果如圖 4.22所示,從圖中可以看出,圖中四邊形總面積的 量測結果為 146792.688 平方米。
     
    圖 4.22 面積量測結果
    Fig. 4.22 Area measurement result
    4.2.4小結
    本節所開發的功能實現了使用人員對平面地圖進行加載、查看、保存、測量、導出 等基礎操作的目標,功能雖簡單,但在地圖操作中相當重要,是一個GIS應用系統的基 礎。此功能模塊的開發滿足了使用人員對滑坡危險區地圖進行基礎操作的需求。
    4.3查詢功能模塊
    在 GIS 應用系統中,常常涉及到對某個地區的具體信息要進行快速了解,但數據庫 中海量的數據卻讓人無從下手,因此,對于目標信息的查詢功能是一個完整的GIS應用 系統中不可或缺的重要部分。為了使用戶對目標滑坡區域能進行快速查找,進而快速了 解目標區域的具體情況,本節將介紹查詢功能的實現方法。查詢功能分為屬性查詢和空 間查詢,目的是根據目標的屬性信息和空間特征關系查找到目標要素,然后再通過系統 提供的識別功能查詢到目標要素的各種信息。在本節所開發的功能中,要素識別功能由 ArcEgine 組件提供,在開發時直接調用即可,通過要素識別功能,可清楚的查看目標要 素的屬性信息。屬性查詢和空間查詢功能雖為 ArcMap 已有功能,但其功能較為復雜, 操作也較繁瑣,致使 ArcEgine 組件提供的工具欄控件中并未提供此功能供開發人員直 接調用,所以仍需通過自編代碼加以實現。
    4.3.1根據屬性信息查詢
    屬性查詢功能涉及到的類主要有Cursor類、QueryFilter類、QueryDef類、 FeatureCursor 類、FeatureLayer 類、FeatureClass 類,涉及的接口有 ICursor、IQueryFilter、 IQueryDef 、 IFeatureCursor、 IFeatureSelection 等。其中 IFeatureSelection 接口位于 ESRI.ArcGIS.Carto 命名空間中,以上其他的類和接口都位于 ESRI.ArcGIS.Geodatabase 命名空間中。另外,屬性查詢、空間查詢功能還將使用FeatureLayer類IFeatureLayer接 口和 FeatureClass 類 IFeatureClass 接口。
    屬性查詢為實現思路為:
    (1)在實現主窗體的基礎上添加【根據屬性信息查詢】窗體,在【根據屬性信息 查詢】之中設置查詢條件,窗體布局可參考ArcMap中的【按屬性選擇】窗體。
    (2)在【根據屬性信息查詢】窗體中編寫用來完成屬性查詢操作的各種事件。
    (3)用戶根據主窗體中的屬性查詢菜單來打開【根據屬性信息查詢】窗體來完成 屬性查詢操作。
    屬性查詢實現方法如下:
    (1) 參考 ArcMap 中【按屬性選擇】窗體,通過添加 Label 控件、 ComboBox 控 件、 TextBox 控件和 Button 控件設置【根據屬性信息查詢】窗體,窗體布局如圖 4.23 所 示。
     
    圖 4.23 【根據屬性信息查詢】窗體
    Fig. 4.23 [query according to attribute information] form
     
    (2)在“屬性查詢”菜單按鈕 Click 事件中填入代碼,使其鼠標單擊時觸發事件 響應彈出【根據屬性查詢】窗體。關鍵代碼如下:
    //新創建屬性查詢窗體
    FormQueryByAttribute formQueryByAttribute = new FormQueryByAttribute();
    //將當前主窗體中 MapControl 控件中的 Map 對象賦值給 FormQueryByAttribute 窗 體的 CurrentMap 屬性
    formQueryByAttribute.CurrentMap = axMapControl.Map;
    //顯示屬性查詢窗體
    formQueryByAttribute.Show();
    (3)如圖 4.23 所示,在【根據屬性信息查詢】窗體紅色虛線框處的 ComboBox 控 件的事件中填寫如下代碼用于實現對目標要素所在圖層的選擇。
    //首先將字段列表和字段值列表清空
    listBoxFields.Items.Clear();
    listBoxValues.Items.Clear();
    IField field; 〃設置臨時變量存儲使用IField接口的對象
    for (int i = 0; i < currentMap.LayerCount; i++)
    {
    if (currentMap.get_Layer(i) is GroupLayer)
    {
    ICompositeLayer compositeLayer = currentMap.get_Layer(i) as IComposite Layer;
    for (int j = 0; j < compositeLayer.Count; j++)
    { //判斷圖層的名稱是否與 comboBoxLayerName 控件中選擇的圖層名稱 相同
    if (compositeLayer.get_Layer(j).Name == comboBoxLayerName.Selecte dItem.ToString())
    {
    //如果相同則設置為整個窗體所使用的 IFeatureLayer 接口對象 currentFeatureLayer = compositeLayer.get_Layer(j) as IFeatureLayer; break;
    }
    }
    }
    else
    { //判斷圖層的名稱是否與 comboBoxLayerName 中選擇的圖層名稱相同
    if (currentMap.get_Layer(i).Name == comboBoxLayerName.SelectedItem.T oString())
    {
    〃如果相同則設置為整個窗體所使用的IFeatureLayer接口對象 currentFeatureLayer = currentMap.get_Layer(i) as IFeatureLayer; break;
    }
    }
    }
    〃使用IFeatureClass接口對該圖層的所有屬性字段進行遍歷,并填充listBoxFields控 件
    for (int i = 0; i < currentFeatureLayer.FeatureClass.Fields.FieldCount; i++)
    {
    //根據索引值獲取圖層的字段
    field = currentFeatureLayer.FeatureClass.Fields.get_Field(i);
    //排除 SHAPE 字段,并在其它字段名稱前后添加字符"和字符"
    if (field.Name.ToUpper() != "SHAPE")
    listBoxFields.Items.Add("\"" + field.Name + "\"");
    }
    //更新 labelwhere 控件中的圖層名稱信息
    labelwhere.Text = currentFeatureLayer.Name + " WHERE:";
    //將顯示where語句的文本框內容清空 textBoxWhere.Clear();
    (4)在如圖4.23所示【根據屬性信息查詢】窗體的“選擇方式”下的ListBox控 件的事件中填入如下代碼以實現對目標所在圖層的字段屬性的顯示和選擇。
    //首先將 listBoxValues 控件中的字段屬性值清空
    listBoxValues.Items.Clear();
    //將 buttonGetUniqeValue 按鈕控件置為可用狀態
    if (buttonGetUniqeValue.Enabled == false) buttonGetUniqeValue.Enabled = true;
    //設置整個窗體可用的字段名稱
    string str = listBoxFields.SelectedItem.ToString();
    //使用 string 類中的方法將字段名稱中的兩個"字符去掉
    str = str.Substring(1);
    str = str.Substring(0, str.Length - 1); currentFieldName = str;
    (5)在如圖 4.23 所示【根據屬性信息查詢】窗體的各運算符 Button 事件中分別 填入如下代碼用于實現在點擊鼠標時可以觸發各運算符事件。
    “=” Button: textBoxWhere.Text += " " + buttonEqual.Text + " ";
    “<>” Button: textBoxWhere.Text += " " + buttonNotEqual.Text + " ";
    “Like” Button: textBoxWhere.Text += " " + buttonLike.Text + " ";
    “>”Button: textBoxWhere.Text += " " + buttonGreater.Text + " ";
    “>=”Button: textBoxWhere.Text += " " + buttonGeaterEqual.Text + " ";
    “And”Button: textBoxWhere.Text += " " + buttonAnd.Text + " ";
    “<”Button: textBoxWhere.Text += " " + buttonLess.Text + " ";
    “<=”Button: textBoxWhere.Text += " " + buttonLessEqual.Text + " ";
    “Or”Button: textBoxWhere.Text += " " + buttonOr.Text + " ";
    “-”Button: textBoxWhere.Text += " " + buttonUnderLine.Text + " ";
    “%”Button: textBoxWhere.Text += " " + buttonPercent.Text + " ";
    “( )”Button: textBoxWhere.Text += " " + buttonBrackets.Text + " ";
    “Not”Button: textBoxWhere.Text += " " + buttonNot.Text + " ";
    “Is”Button: textBoxWhere.Text += " " + buttonIs.Text + " ";
    (6)在如圖 4.23所示【根據屬性信息查詢】窗體的“確定”和“應用”按鈕 Click 事件中填入如下代碼用于鼠標單擊時,觸發根據屬性信息查詢功能。
    //在點擊“確定”或“應用”按鈕時發生
    try
    {
    //執行屬性查詢操作,并關閉窗體
    SelectFeaturesByAttribute();
    this.Close();
    }
    catch { }
    (7)在如圖 4.23 所示【根據屬性信息查詢】窗體中寫入本函數,在窗體事件觸發 時執行本函數。該事件的關鍵技術是if語句和for語句的組合使用,關鍵代碼詳見附錄 A 圖 5 。
    最終,根據屬性信息查詢功能實現的效果是:事件觸發時,符合條件的要素將以高 亮色形式展現出來,如圖 4.26所示為目標要素的高亮色顯示。運行后的【根據屬性信息 查詢】窗體如圖 4.24 所示。此功能事件觸發前和觸發后效果對比如圖 4.25 和圖 4.26 所 示,通過對比發現,符合屬性信息查找條件的要素相比于事件觸發前,其顏色更加鮮亮, 用戶通過肉眼即可輕松的找到所有符合查詢條件的要素。此功能的開發完好的滿足了用 戶根據屬性信息對目標要素進行查找的需求。
     
     
     
     
     
     
    囹層名稱:|大連市皴點
    □只顯示可選圖層
    選擇方式:|鱷新選蘇 q
    = <> Like
    I > I I X | | 2 ]
    I ~l I <■ I I Or I
     
     
    圖 4.24 【根據屬性信息查詢】窗體運行效果
     
    圖 4.25 “根據屬性信息查詢”事件觸發前
    Fig. 4.25 Before the "query based on attribute information" event is triggered
     
     
     
    "i?根據屬性信息查詢
    X
    唐除
    確走 應用 關閉
    圖 4.26 “根據屬性信息查詢”事件觸發后
    Fig. 4.26 After the event of "query based on attribute information" is triggered
    圖層辭I大商危險點—
    □只顯示可選圏層
    迭擇方式:I創健新選擇集 5
    "災害體類型“ r 坡‘I
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    4.3.2根據空間信息查詢
    根據空間位置查找是通過目標空間要素和該目標要素與其他要素的幾何關系進行 查找。此功能開發中涉及到跟空間查詢相關的類主要是 SpatialFilter 類,為空間關系過 濾類,實現的接口主要為ISpatialFilter接口,此接口的成員主要用于返回和修改數據過 濾器所使用的空間關系。ISpatialFilter接口繼承自IQueryFilter接口,包含空間和屬性兩 種查詢約束。
    此功能實現思路如下:
    (1) 參考 ArcMap 中【按位置選擇】窗體創建一個【根據空間信息查詢】窗體。
    (2) 實現【根據空間信息查詢】窗體中各種事件,完成對查詢條件的設置和查詢 操作執行的設置。
    (3) 在主菜單“空間查詢”按鈕中填寫事件,用于彈出【根據空間信息查詢】窗 體。
    具體實現方法如下:
    (1) 通過添加Label控件、ComboBox控件、TextBox控件和Button控件創建如 圖4.27所示【根據空間信息查詢】窗體,窗體布局參考ArcMap中空間查詢窗體。
    (2) 在【根據空間信息查詢】窗體事件中寫入代碼用于完成空間查詢功能,此部 分是實現該功能的核心代碼,核心代碼詳見附錄A圖6。
     
     
    圖 4.27 【根據空間信息查詢】窗體
    Fig. 4.27 [query according to spatial information] form
     
    (3)在如圖 4.27所示的“確定”和“應用”按鈕中添加代碼用于點擊該按鈕時可 執行上述(2)中所填寫的根據空間信息查詢事件。
    try
    {
    SelectFeaturesBySpatial(); this.Close();
    }
    catch
    { }
    (4)在主菜單“空間查詢”按鈕中填入代碼用于點擊時彈出【根據根據空間信息 查詢】窗體。核心代碼及詳細解釋如下:
    //新創建空間查詢窗體
    FormQueryBySpatial formQueryBySpatial = new FormQueryBySpatial();
    〃將當前主窗體中MapControl控件中的Map對象賦值給FormSelection窗體的Curr entMap 屬性
    formQueryBySpatial.CurrentMap = axMapControl.Map;
    //顯示空間查詢窗體
    formQueryBySpatial.Show();
    最終,根據空間信息查詢功能實現的效果是:事件觸發時,符合條件的要素將以高 亮色形式展現出來,如圖 4.30 所示為以高亮色展示的目標要素。運行后的【根據空間信 息查詢】窗體如圖 4.28所示。此功能事件觸發前和觸發后效果對比如圖 4.29 和圖 4.30 所示,通過對比發現,符合空間關系查找條件的要素相比于事件觸發前,其顏色更加鮮 亮,用戶通過肉眼即可輕松的分辨出所有符合查詢條件的要素。此功能的開發完好的滿 足了用戶根據空間信息對目標要素進行查找的需求。
     
    圖 4.28 【根據空間信息查詢】窗體
    Fig. 4.28 [query according to spatial information] form
     
    圖 4.29 “根據空間信息查詢”事件觸發前
    Fig. 4.29 Before the "query based on spatial information" event is triggered
    4根據空間信息查詢 X
    飜軟讓黔譬爵驢擁蠶輻霹孚柱間關系(
    源圖層:
    I大連市勻§邊畀—
    (當前有0個要秦被選擇)
    空間迭擇方法:
    I目標圖層的要素與源圖層的離厳(intemct)
    □對源圖層便用緩沖區遊行查詢。緩沖區大小:| ]
    (單位與地圏單儉相同)
    圖 4.30 “根據空間信息查詢”事件觸發后
    Fig. 4.30 After the event of "query according to spatial information" is triggered
    4.3.3識別要素 在“根據屬性信息查詢”或“根據空間信息查詢”查找到目標要素之后,若要查閱
    目標要素的屬性信息,可通過ArcEngine提供的識別工具對目標要素進行屬性信息的查
    看。識別要素結果如圖4.31所示,圖中左側紅色虛線框處為目標要素識別結果,識別結 果顯示的是目標要素的所有屬性信息,圖中右側紅色虛線框處為目標要素。識別工具很
    好的滿足了用戶對目標要素進行屬性信息查看的需求。
     
    圖 4.31 要素識別結果
    Fig. 4.31 Result of feature recognition
     
    4.3.4小結
    本節中開發的“根據屬性信息查詢”和“根據空間信息查詢”兩種查詢方法以及 ArcEngine 提供的“識別要素”功能一起實現了對目標要素的查找及對目標要素的屬性 信息進行查詢的目標。可以說,此功能模塊滿足了使用人員對目標滑坡區的屬性信息進 行快速查詢的需求。
    4.43D 模型展示功能模塊
    為了讓用戶更好的了解滑坡區域的地形地貌具體特征,本系統需實現對滑坡區域的 三維可視化。相比于2D模型,3D模型能更好的描述滑坡區域的具體情況,因此,在 GIS 應用系統中實現對目標區域的三維可視化是目前比較流行的研究內容。在總結大量 的歷史研究結果后,總結出歷史上對滑坡的三維可視化研究主要集中于對于單個滑坡的 三維可視化或者對于單個滑坡的動態發生過程進行模擬的研究,如何對大范圍、大數量 的滑坡實現三維可視化是目前研究人員尚未觸及的研究內容。大連市內地域廣泛、滑坡 眾多,是該研究內容的重要研究對象。本節將結合大連市內滑坡區域的實際情況和用戶 的實際需求,通過研究開發3D模型展示功能著重解決這一問題。
    441 3D模型展示功能實現
    3D展示功能的實現思路為:
    (1)創建一個【3D模型瀏覽】窗體,用于展示滑坡區域的3D模型。
    (2)創建一個【選擇危險點】窗體,用于選擇目標要素所在圖層。
    (3)在主菜單“3D模型展示”按鈕中填入代碼,用于鼠標點擊時彈出【選擇危險 點圖層】窗體。
    具體實現方法如下:
    (1)創建如圖4.32所示【3D模型瀏覽】窗體,創建該窗體所需控件有TOCControl、
    ToolbarControl 和 SceneControl。TOCControl 用于圖層的控制。ToolbarControl 為工具欄 控件,包含系統提供的工具,用于對3D模型簡單操作。SceneControl用于對3D模型的 顯示。三個控件均可用鼠標從VS開發界面左側工具欄中直接拖入。
     
    圖 4.32 【 3D 模型瀏覽】窗體布局
    Fig. 4.32 [3D Model View] Window Layout
     
    (2)創建【選擇危險點】窗體,創建該窗體所需控件有Label、ComboBox、和Button。 在該窗體中要實現的事件有對圖層的選擇和目標要素3D模型展示功能的實現。本窗體 自身事件主要是通過if語句實現對地圖中所有圖層的獲取,核心代碼如下:
    if (FormMain.gMapControl.LayerCount > 0)
    {
    for (int i = 0; i < FormMain.gMapControl.LayerCount; i++)
    {
     
    ILayer pLayer = FormMain.gMapControl.Layer[i]; this.comboBox1.Items.Add(pLayer.Name);
    }
    }
    (3)在【選擇危險點】窗體的“確定”按鈕中寫入代碼用于實現目標要素圖層的 選擇,實現方法主要是通過if語句實現對【3D模型瀏覽】窗體的彈出。
    if (this.comboBox1.SelectedItem != null)
    {
    string name = this.comboBox1.SelectedItem.ToString();
    FormMain.gLayer3D = FormMain.GetLayerByName(name);
    }
    this.Close();
     
    (4)在主菜單“3D模型展示”按鈕中填入代碼,實現【選擇危險點圖層】窗體的 彈出。核心代碼如下:
    gFlag = "選擇危險點";
    Frm3D frm = new Frm3D();
    frm.Show(this);
    (5)在【3D模型瀏覽窗體】中填入代碼用于實現將數據庫中目標3D模型加載進 該窗體中。實現方法是將目標要素與數據庫中的 3D 模型按相同字段屬性進行匹配,定 義加載的文件類型和路徑,然后選中與目標要素相同的名稱的 3D 模型進行加載。核心 代碼如下:
    this.fName = "FlyScene";
    string filepath = FormMain.gFilePath3D + this.fName + ".sxd";
    //string filepath = @"E:\MyDoc\GIS\20210527 三維\FlyScene.sxd";
    if (File.Exists(filepath))
    {
    this.axSceneControl1.LoadSxFile(filepath); this.axSceneControl1.Refresh();
    }
    最終,該實現該功能的應用操作如圖4.34所示:點擊主菜單“3D模型展示”按鈕, 彈出【選擇危險點圖層】窗體,選擇危險點圖層,鼠標單擊確定,然后在總平面圖圖選 擇目標要素單擊。該要素的3D模型即可在新的窗體中顯現出來,實現效果如圖4.35所 示。
     
    圖 4.34 “ 3D 模型展示”操作圖
    Fig. 4.34 Operation diagram of "3D model display"
     
     
     
    圖 4.35 3D 模型展示效果 Fig. 4.35 3D model display effect
     
    4.4.2小結
    本節開發的 3D 模型展示功能完成了對滑坡危險區域實現三維可視化的目標,用戶 可通過可視化界面觀看滑坡區域的 3D 模型,進而直觀的了解滑坡區域地形地貌的具體 特征。本節工作的特點在于本系統所開發的3D模型展示功能不再局限于單個滑坡的3D 模型展示,而是將無人機傾斜攝影技術、GIS三維可視化技術、數據庫技術和計算機技 術相結合實現在市級范圍內對目標滑坡危險區進行快速查找和3D模型展示的功能。理 論上只要計算機硬件配置足夠高、數據庫存儲空間足夠大,本系統不僅可以完成市級范 圍內滑坡區域 3D 模型的展示,甚至可以完成對省級乃至全國范圍級滑坡區域的 3D 模 型展示。而且本系統不局限于滑坡的 3D 模型的展示,還可以通過擴展完成其他要素空 間模型的展示,只要建立相應的 3D 模型數據庫,本系統就可以實現對港口、建筑、湖 泊等任意空間要素 3D 模型的展示。可以說,本系統的開發完好的滿足了使用人員對目 標區域進行3D模型查看的需求。
    4.5滑坡預警功能模塊
    對滑坡災害進行預警是防災減災工作中非常重要的內容,準確有效的預警能大幅度 的減少災害區人民群眾的生命財產損失。因此,政府的相關部門對準確高效的降雨型滑 坡預警方法有著很大的現實需求。其巨大的現實需求促使著針對降雨型滑坡預警的研究 成為目前防災減災學科中比較熱門的方向。如何在面積廣闊的大連市內實現對多個滑坡 區域的預警是本文的重要研究內容。本節將通過介紹降雨型滑坡預警功能的實現方法及 相關理論,來實現系統中降雨型滑坡的預警功能,為政府部門的防災減災及災后應急管 理工作提供有效的數據支持。
    4.5.1 降雨型滑坡預警理論
    降雨型滑坡預警模型的建立過程主要分為三部分:一是對降雨量模型的建立,二是 對研究區域針對滑坡的影響因子進行敏感性分析,三是將降雨因素與其他影響因子進行 疊加實現針對降雨因素的預警模型建立。通過眾多降雨型滑坡預警模型的比較,本文決 定在降雨型滑坡動態預警中引入李芳等學者的研究成果[82]。通過實際數據回代驗證,李 芳等學者建立的滑坡預警模型預警準確率可達81.8%,在眾多可行性預測模型中屬于最 好的效果。該模型基本原理為:
    ( 1) 建立有效降雨量模型
    n
    RjR。+町=1 aR 式中:Rc:為有效降雨量(mm) ; Ro:為當天預報降雨量(mm) ; R”:第"日降雨量(mm); a:衰減系數,取值0.84[76]。
    (2) 確定降雨誘發指數
    R= (m-1) +沁 (4.3)
    Rn-R1
    式中:R:為降雨誘發指數,當Rc過大而超過Rn的最大值時,取R=^max; Rc:為有效降雨 量(mm);加:為有效降雨量所處的降雨區間對應的降雨量等級級別值(加=1, 2, 3, 4, 5…);R1:為有效降雨量Rc所處臨界值區間的下限;Rn:為有效降雨量Rc所處臨界 值區間的上限。
    ( 3) 確定地質環境敏感性指數( Z)
    針對大連地區滑坡的地質環境敏感性分析由本課題組尹常銘論文《基于SVM的滑坡 易發性區劃及基于Mask R-CNN的滑坡快速識別》研究得出,圖4.36為該論文研究得出的 大連莊河市滑坡易發性區劃結果圖,該結果由高程、坡度、剖面曲率、地形起伏度、坡 向、土地利用類型、距水系的距離、距路網的距離等與滑坡有關的8個影響因子根據相應 權重進行疊加而成。表4.1為本文根據大連莊河市滑坡易發性區劃結果,以鄉鎮為單位制 定的大連莊河市各鄉鎮的地質環境敏感性指數表,根據模型理論,本文選取各鄉鎮區劃 結果的平均值作為地質環境敏感性指數(Z)。
     
    圖 4.36 莊河市滑坡易發性區劃結果
    Fig. 4.36 Zoning of landslide risk area in Zhuanghe City
     
     
    表4.1各鄉鎮地質環境敏感性指數(Z)
    Tab. 4.1 Sensitivity index of geological environment in villages and towns (Z)
    序號 名稱 網格數 平均值(Z)
    1 鞍子山鄉 23172 -0.2412
    2 太平嶺滿族鄉 10673 -0.1063
    3 步云山鄉 21488 -0.8307
    4 桂云花滿族鄉 23571 -0.7817
    5 蘭店鄉 3470 0.1584
    6 吳爐鎮 11857 0.0268
    7 黑島鎮 4278 0.3437
    8 青堆鎮 14245 -0.0747
    9 栗子房鎮 13537 -0.0280
    10 塔嶺鎮 19732 -0.2945
    11 大營鎮 14347 -0.1814
    12 徐嶺鎮 8169 0.2823
    13 蓉花山鎮 21985 -0.4979
    14 光明山鎮 25245 0.1135
    15 長嶺鎮 16564 -0.5695
    16 荷花山鎮 16477 -0.8356
    17 城山鎮 20227 -0.0352
    18 大鄭鎮 12444 0.3498
    19 明陽鎮 10158 0.1855
    20 仙人洞鎮 34018 -0.8149
    21 城關街道 357 -0.4885
    22 新華街道 1544 -0.4820
    23 興達街道 422 0
    24 昌盛街道 2241 0.2458
     
    ( 4) 構建滑坡預警模型 本預警模型在考慮了上述8個影響因子基礎上再運用公式(4.4)進行降雨因素的疊 加以實現對降雨型滑坡危險區域的預警分析。
    H= (10-Z)XR (4.4)
    式中:H:為預警指數,代表發生滑坡的危險性大小;R:為降雨誘發指數;Z:為地質 環境敏感性指數。
    (5)降雨型滑坡動態判別等級
    本文從地理遙感生態網收集到大連地區 2010-2020 年共 11 年的日降雨量數據,本 文將每年的日降雨量數據從小到大進行排序,在去除了斷層較大的極端數據后提取出各 年內最大日降雨量數值制成如表 4.2 所述的各年內最大日降雨量表。通過觀察表 4.2 發 現 2018 年屬于極端年份,為了結果的合理性,本文將其剔除。計算剩下十年中最大日 降雨量的平均數為:(49+77.6+53.9+56+49.2+52.9+48.6+53.2+47.9+61.2) /10=60.34mm, 本文對結果進行四舍五入取整為60mm,即以60mm降雨量為最大值進行有效降雨量等 級的劃分。
    表 4.2 各年內最大日降雨量
    Tab. 4.2 Maximum daily rainfall in each year
    序號 年份 最大日降雨量
    ( mm) 序號 年份 最大日降雨量
    ( mm)
    1 2010 49 7 2016 4&6
    2 2011 77.6 8 2017 53.2
    3 2012 53.9 9 2018 23.7
    4 2013 56 10 2019 47.9
    5 2014 49.2 11 2020 61.2
    6 2015 52.9
     
    根據有效降雨量模型,并結合大連地區實際情況,在統計分析了本地區 2010-2020 年的日降雨量數據后,建立了如表4.3所述的有效降雨量判別等級,表中以60mm降雨 量為最大值進行有效降雨量判別等級的劃分,有效降雨量判別等級共劃分為 5 個級別。
    表 4.3 有效降雨量判別等級
    Tab. 4.3 Effective Rainfall Judgment Level
    有效降雨量判別等級
    降雨等級 1級 2級 3級 4級 5級 5級以上
    有效降雨量(mm) 0-20 20-30 30-40 40-50 50-60 >60
     
    根據預警模型和有效降雨量模型,結合本課題組尹常銘對本地區進行的地質環境敏 感性分析,建立了如表4.4所述的降雨型滑坡危險性動態判別等級,表中結果為根據 H 值進行的降雨型滑坡危險性動態判別等級劃分,預警結果劃分為低、中等、較高、高、 極高共5 個等級,不同等級對應不同的預警顏色。
     
    表 4.4 降雨型滑坡危險性動態判別等級
    Tab. 4.4 Rainfall type landslide hazard dynamic discriminating grade
    降雨型滑坡危險性判別等級
    預警等級 中等 較高 極咼
    預警指數(H) <20 20-30 30-40 40-50 >50
    預警顏色 原色 黃色 橙色 紅色 深紅色
     
    4.5.2降雨型滑坡預警實現思路
    (1)創建【預警】窗體,用于輸入自變量降雨量值和顯示預警結果。
    (2)在窗體事件中寫入公式(4.2)、(4.3)和(4.4)用于最終計算預警指數。
    (3)在窗體事件中將得出的降雨指數與如表4.4所述內容進行比對,各鄉鎮地區 根據降雨指數顯示對應的預警顏色。
    4.5.3降雨型滑坡預警實現方法
    (1)如圖4.37所示創建【預警】窗體,創建該窗體需要四種控件,分別是Label 控件、TextBox控件、Button控件和MapControl控件。Label控件用于降雨量的解釋說 明,TextBox控件用于輸入降雨量,Button控件用于預警事件的執行,MapControl控件 用于預警結果的顯示。
     
    圖 4.37 【預警】窗體布局 Fig. 4.37 [Warning] Form layout
    (2)在【預警】窗體中寫入代碼用于獲取大連市底圖。關鍵技術是通過 MapControl 的 LoadMxFile 方法實現對大連市降雨模型底圖的加載。關鍵代碼如下:
    this.axMapControl.LoadMxFile(@". ./. ./. ./. ./大連市降雨模型底圖\大連市降雨模型底 圖.mxd");
    this.axMapControl.Extent = this.axMapControl.FullExtent;
    (3)在【預警】窗體中寫入事件用于降雨量數據的確定,關鍵技術是使用if語句 實現對當日降雨量和前7日降雨量數值的確定,核心代碼詳見附錄A圖7。
    (4)在【預警】窗體中寫入公式(4.2)事件用于計算有效降雨量,并對衰減系數 進行賦值。關鍵代碼如下:
    double a = 0.84;//衰減系數
    double Rc = rainCur + rain1 * Math.Pow(a, 1) + rain2 * Math.Pow(a, 2) + rain 3 * Math.Pow(a, 3) + rain4 * Math.Pow(a, 4) + rain5 * Math.Pow(a, 5) + rain6 * Math.Pow(a, 6) + rain7 * Math.Pow(a, 7);//有效降雨量
    (5)在【預警】窗體中寫入如下代碼用于確定降雨誘發指數,關鍵技術是使用 if 語句對有效降雨量進行判別等級的劃分,然后寫入公式(4.3)進行降雨誘發指數的計算。 關鍵代碼如下:
    double R = 0;
    //降雨等級:有效降雨量 1: 0-20 2: 20-30 3: 30-40 4: 40-50
    5: 50-60 >5: >60
    double Rn = 0.0;
    double R1 = 0.0;
    double m = 0.0;
    if (Rc > 0 && Rc <=20)
    {
    m = 1;
    R1 = 0;
    Rn = 20;
    R = (m - 1) + (Rc - R1) / (Rn - R1);
    }else if (Rc > 20 && Rc <= 30)
    {
    m = 2;
    R1 = 20;
    Rn = 30;
    R = (m - 1) + (Rc - R1) / (Rn - R1); }
    else if (Rc > 30 && Rc <= 40) {
    m = 3;
    R1 = 30;
    Rn = 40;
    R = (m - 1) + (Rc - R1) / (Rn - R1); }
    else if (Rc > 40 && Rc <= 50) {
    m = 4;
    R1 = 40;
    Rn = 50;
    R = (m - 1) + (Rc - R1) / (Rn - R1); }
    else if (Rc > 50 && Rc <= 60) {
    m = 5;
    R1 = 50;
    Rn = 60;
    R = (m - 1) + (Rc - R1) / (Rn - R1); }
    else if (Rc > 60) {
    m = 6;
    R1 = 60;
    Rn = double.MaxValue;
    R = (m - 1) + 1;// (Rc - R1) / (Rn - R1); }
    (6)在【預警】窗體中寫入如下代碼用于確定地質環境敏感性指數Z。關鍵技術 是通過for循環語句和if條件語句實現對大連市降雨模型底圖中要素平均值的提取,平 均值即為地質環境敏感性指數Z。
    IFeatureLayer pFeaLayer = null;
    for (int i = 0; i < this.axMapControl.LayerCount; i++)
    {
    ILayer pLayer = this.axMapControl.get_Layer(i); pFeaLayer = pLayer as IFeatureLayer;
    if (pFeaLayer != null && pFeaLayer.Name.IndexOf("鄉鎮邊界")!= -1)
    {
    break;
    }
    }
    if (pFeaLayer != null)
    {
    IFeatureCursor pFeaCursor = pFeaLayer.FeatureClass.Search(null, false); int index = pFeaLayer.FeatureClass.FindField ("平均值”); int indexH = pFeaLayer.FeatureClass.FindField("H");
    if (index == -1)
    {
    MessageBox.Show("鄉鎮邊界數據中不含有:平均值字段”); return;
    }
    if (indexH == -1)
    {
    MessageBox.Show(”鄉鎮邊界數據中不含有:H字段”); return;
    }
    (7) 在【預警】窗體中寫入公式(4.4)用于計算預警指數H。關鍵技術代碼如下: IFeature pFea = pFeaCursor.NextFeature();
    while (pFea != null)
    {
    double H = 0;//預警指數
     
    double Z = Convert.ToDouble(pFea.get_Value(index)); if (Z == 0)
    {
    Z = 1;
    }
    H = (10-Z) * R; pFea.set_Value(indexH,H);
    pFea.Store();
    pFea = pFeaCursor.NextFeature();
    }
    (8) 在【預警】窗體中寫入如下代碼用于根據預警指數進行圖層中鄉鎮邊界區域 的渲染。關鍵技術有兩個,一是通過RGB模型進行表4.4中預警顏色的設置,RGB是 ArcGIS Engine 的 Color 顏色體系下最常用的顏色模型,此模型通過紅色、綠色、藍色 三原色的混合來顯示目標顏色。二是通過 Renderer 體系的功能對目標符號進行渲染。關 鍵代碼如下:
    List<IColor> gListColor = new List<IColor>();
    IRgbColor pRGB = null;
    IColor Color = null; gListColor.Clear();
    pRGB = new RgbColor() { Red = 190, Color = pRGB as IColor;
    gListColor.Add(Color);
    pRGB = new RgbColor() { Red = 238, Color = pRGB as IColor;
    gListColor.Add(Color);
    pRGB = new RgbColor() { Red = 236, Color = pRGB as IColor;
    gListColor.Add(Color);
    pRGB = new RgbColor() { Red = 237, Color = pRGB as IColor;
    gListColor.Add(Color);
    pRGB = new RgbColor() { Red = 136, Color = pRGB as IColor;
    Green = 232, Blue = 255 };
    Green = 236, Blue = 105 };
    Green = 148, Blue = 15 };
    Green = 80, Blue = 80 };
    Green = 13, Blue = 13 };
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    gListColor.Add(Color);
    pRGB = new RgbColor() { Red = 136, Green = 13, Blue = 13 }; Color = pRGB as IColor; gListColor.Add(Color);
    List<double> fValue = new List<double>();
    fValue.Add(20);
    fValue.Add(30);
    fValue.Add(40);
    fValue.Add(50);
    string strPopField = "H";
    IGeoFeatureLayer pGeoFeatureL;
    ITable pTable;
    IClassifyGEN pClassify;
    ITableHistogram pTableHistogram;
    IBasicHistogram pHistogram;
    object dataFrequency;
    object dataValues;
    double[] Classes;
    int ClassesCount;
    IClassBreaksRenderer pClassBreaksRenderer;
    IHsvColor pFromColor;
    IHsvColor pToColor;
    IAlgorithmicColorRamp pAlgorithmicCR;
    IEnumColors pEnumColors;
    bool ok;
    IColor pColor;
    ISimpleFillSymbol pSimpleFillS;
    int lbreakIndex;
    int numDesiredClasses = 5;
    IMap pMap = this.axMapControl.Map;
    pMap.ReferenceScale = 0;
    pGeoFeatureL = (IGeoFeatureLayer)pFeaLayer;
    pTable = (ITable)pGeoFeatureL.FeatureClass;
    pTableHistogram = new BasicTableHistogramClass();
    pHistogram = (IBasicHistogram)pTableHistogram; pTableHistogram.Field = strPopField;
    pTableHistogram.Table = pTable; pHistogram.GetHistogram(out dataValues, out dataFrequency); //下面是分級方法,用于根據獲取的值計算出符合要求的數據 pClassify = new EqualIntervalClass();
    try
    {
    pClassify.Classify(dataValues, dataFrequency, ref numDesiredClasses); }
    catch (Exception ex)
    { MessageBox.Show(ex.Message);
    }
    //返回一個數組
    Classes = (double[])pClassify.ClassBreaks;
    fValue.Add(Classes[Classes.Length - 1]);
    Classes = fValue.ToArray();
    ClassesCount = fValue.Count;//Classes.GetUpperBound(0); pClassBreaksRenderer = new ClassBreaksRendererClass(); pClassBreaksRenderer.Field = strPopField;
    //設置著色對象的分級數目 pClassBreaksRenderer.BreakCount = ClassesCount; pClassBreaksRenderer.SortClassesAscending = true;
    〃分類著色對象中的symbol和break的下標是從0開始
    for (lbreakIndex = 0; lbreakIndex <= ClassesCount - 1; lbreakIndex++) {
    pSimpleFillS = new SimpleFillSymbolClass(); pSimpleFillS.Color = gListColor[lbreakIndex];
    //這里是構造不同顏色著色的方法 pClassBreaksRenderer.set_Symbol(lbreakIndex, (ISymbol)pSimpleFillS); //著色對象的斷點
    pClassBreaksRenderer.set_Break(lbreakIndex, Classes[lbreakIndex]);
    }
    pGeoFeatureL.Renderer = (IFeatureRenderer)pClassBreaksRenderer;
    this.axMapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography , null, null);
    MessageBox.Show ("渲染完成");
    至此,滑坡預警功能完成。
    4.5.4降雨型滑坡預警運行效果
    降雨型滑坡預警運行操作及預警效果如下:
    如圖 4.38 所示為運行后的【預警】窗體,在該窗體左側紅色虛線框處輸入降雨量, 點擊“確定”,【預警】窗體右側根據H值即可顯示出對應顏色以表示危險程度,顏色 越深,則該地區越危險。在該窗體中可根據當日降雨量對滑坡進行預警,也可根據前 1 日、前2日、前3日、前4 日、前5日、前6 日和前7日降雨量分別對滑坡進行預警, 或者根據前7日內任意天數降雨量組合情況對滑坡進行預警。
    本文做的是大連區域內滑坡危險等級的預警,但由于受到數據資料來源的制約和課 題時間的限制,目前只有莊河市數據可供展示。大連全區域的降雨型滑坡預警工作,可 基于本文現有成果和系統,通過添加數據后即可實現。也就是說只要添加進某一地區數 據,該模型即可完成該地區預警功能,顏色越深,預警等級越高。如圖 4.39-4.41 所示的 預警結果,分別展示累計當日 10mm 降雨量、累計前 3 日 10mm 降雨量、累計前 5 日 10mm 降雨量的預警圖。由圖可知,累計降雨量天數越多,顏色越深,預警等級越高。
    圖 4.42-4.46 分別展示為累積當日 15mm、30mm、40mm、50m m、60mm 降雨量的 預警圖。由圖可知,累計當日降雨量越大,顏色越深,預警等級越高。
    由圖 4.36可知,莊河市內滑坡危險區分布呈現從南到北(對應圖中從下到上)風險 等級逐漸升高的現象,即高風險性滑坡主要分布在莊河市北部地區,低風險性滑坡主要 分布在莊河市南部地區。而圖 4.39-4.41 的變化過程和圖 4.42-4.46 變化過程也呈現出降 雨發生后莊河市內北部滑坡風險等級普遍要比南部滑坡風險等級要高的情況。可以說, 滑坡預警的效果與滑坡風險區分布的實際情況基本相符,即預警效果良好。
     
     
     
    圖 4.38 運行后的【預警】窗體
    Fig. 4.38 The [Warning] form after running
     
     
    圖 4.39 累計當日 10mm 降雨量預警圖
    Fig. 4.39 Cumulative same-day 10mm rainfall warning map
     
     
     
    圖 4.40 累計前 3 日 10mm 降雨量預警圖
    Fig. 4.40 Cumulative first 3 days 10mm rainfall warning map
     
     
    圖 4.41 累計前 5 日 10mm 降雨量預警圖
    Fig. 4.41 Cumulative first 5 days 10mm rainfall warning map
     
     
    圖 4.46 累計當日 60mm 降雨量預警圖
    Fig. 4.46 Cumulative daily 60mm rainfall early warning chart
     
    圖 4.47 為本文依據本課題組的莊河市滑坡易發性區劃研究結果,制定的各鄉、鎮、 街道內滑坡危險區的風險等級面積百分比。其表示未發生降雨時,各鄉、鎮、街道內滑 坡危險區各風險等級面積占各鄉、鎮、街道內滑坡危險區總面積的百分比。本文將其以 文字表達形式體現在預警系統中,其結果體現如圖 4.48 所示。從圖中可以看出各鄉、鎮、 街道內極低、低、中、高、極高五個風險區的面積占總風險區面積的百分比。以圖中紅 線虛線框處為例,其文字表示為長嶺鎮內極高風險區占 18%、高風險區占 25%、中風險 區占26%、低風險區占 20%、極低風險區占11%。一旦由于大范圍的降雨而導致多地發 生大面積滑坡災害,用戶可根據各鄉鎮的滑坡危險區風險等級面積百分比來合理分配救 援力量和救災物資。可以說,如此直觀的文字表達形式為用戶制定防災減災工作安排提 供了非常便捷的數據支持。
    各鄉/鎮內部各風險區的面積百分比(%)
     
    0 10 20 30 40 50 60 70 80 90 100
    ■極高風險區■高風險區■中風險區■低風險區■極低風險區
    圖 4.47 各鄉 / 鎮 / 街道內部各風險區的面積所占百分比
    Fig. 4.47 Percentage of area within each commune/town/street for each risk area
     
    圖 4.48 各鄉/鎮/街道內部各風險區的面積百分比展示
    Fig. 4.48 Display of area percentage of risk areas within townships / towns / streets
     
    4.5.5預警模型實例驗證
    2020 年 8 月 31 日降雨后,大連市下轄莊河市北部發生多起山體滑坡事件,滑坡災 害發生后本課題組人員第一時間前往現場調查,收集到潘屯、呂屯、下坎共三處滑坡災 害數據,本小節將以這三處實際滑坡災害對本文滑坡預警模型的準確性進行檢驗。
    表 4.5 為本文通過地理遙感生態網收集到的 2020 年 8 月 24 日至 2020 年 8 月 31 日 的日降雨量數據,通過該表可得出公式(4.2)中的 R0、R1、R2、R3、R4、R5、R6、R7 分 另U為 23.7mm、Omm、0mm、0mm、6.1mm、67.9mm、2.3mm、35.3mm,進而可計算出 2020 年 8月 31 日滑坡的有效降雨量為:
    Rc=23.7+ 丈=1 anRn =66.35828mm (4.5)
    將有效降雨量Rc=66.35828mm與表4.3中內容進行比對,可得出有效降雨量處于5 級以上區域。通過公示( 4.3)和表 4.3 可得出 m=5, Rn 的最大值為 60mm, Rc=66.35828mm>60mm。進而可計算出降雨誘發指數為:
    R=mmax = 5 ( 4.6)
    圖 4.49 為潘屯、呂屯、下坎三處滑坡分布圖,三處滑坡分別位于( 39°58'39"N, 122°39'20"E)、(39°57'3"N, 122°51'31"E)、(40°6'l"N, 122°45'58"E)周圍區域,莊 河市地圖是由332104個100mX100m的網格組成,每個網格危險性由本課題組尹常銘 對莊河市滑坡危險區域進行敏感性分析得出,本文根據網格的危險性指數為其賦予Z值。 提取位于潘屯滑坡區域的 881 個網格進行數值分析,得出潘屯滑坡區域的地質環境敏感 性指數Z潘=-0.50001266165;提取位于呂屯滑坡區域的88個網格進行數值分析,得出 呂屯滑坡區域的地質環境敏感性指數 Z 呂= -1.01892817386;提取位于下坎滑坡區域的 116個網格進行數值分析,得出下坎滑坡區域的地質環境敏感性指數Z下=-1.12777590000。
     
    圖 4.49 潘屯、呂屯、下坎三處滑坡分布圖 Fig. 4.49 Distribution of three landslides in Pantun, Lutun and Haikan
     
    通過公式(4.4)可得出潘屯、呂屯、下坎三處滑坡區域的預警指數(保留一位小數) 分別為:
    H潘=(10-Z潘)xR=(10-(-0.50001266165))x5=52.5 (4.7)
    H呂=(10-Z呂)xR=(10_(_1.01892817386))x5=55.1 (4.8)
    H下=(10-Z下)xR=(10_(_1.12777590000))x5=55.6 (4.9)
    將三處滑坡的預警指數與表4.4中內容進行比對,可知H潘、H呂、H下均大于50, 即累計2020年8 月24日至2020年8 月31 日的降雨后,潘屯、呂屯、下坎三處滑坡區 域均處于極高預警等級狀態,事實是2020年8月31 日降雨后,潘屯、呂屯、下坎三處 均發生不同程度的滑坡,預警結果與事實相符,證明該預警模型的準確性良好。
    表 4.5 2020 年 8 月 24 日 -2020 年 8 月 31 日日降雨量 Tab. 4.5 Daily rainfall from August 24, 2020 to August 31, 2020
    序號 時間 降雨量
    (mm) 序號 時間 降雨量
    (mm)
    1 2020.8.24 35.3 5 2020.8.28 0
    2 2020.8.25 2.3 6 2020.8.29 0
    3 2020.8.26 67.9 7 2020.8.30 0
    4 2020.8.27 6.1 8 2020.8.31 23.7
     
    4.5.6小結
    本節通過對滑坡預警子系統的開發實現了對滑坡危險區域進行快速預警的目標。本 節的主要工作是將降雨型滑坡預警模型與GIS可視化技術、數據庫技術和計算機軟件科 學技術相結合實現對大范圍內滑坡危險區進行可視化預警應用。以往對于滑坡預警的研 究大量集中于對單個滑坡預警模型上的探索,由于具體到各滑坡之間的觸發因素和滑坡 內部的結構不盡相同,所以盡管滑坡研究歷史上所建模型眾多,但都無法大面積進行實 際應用。本系統從宏觀上考慮采用信息量法對滑坡進行預警應用就目前來講是實現大范 圍、大面積滑坡預警的最佳選擇,同時李芳等學者的研究區域地形特征與大連滑坡區域 特征又高度相似,所以將其成果在大連地區進行應用是目前本系統的最優選擇。本系統 在各鄉/鎮/街道區域均標明各風險區的面積百分比,風險等級分有極高、高、中、低、極 低五個級另,一旦發生大面積災害,政府人員可根據各鄉/鎮/街道的風險區百分比合理 調度救援力量和分配救災物資。可以說,本系統的開發成功的滿足了用戶對于縣級市級 這種大范圍、大面積降雨型滑坡區域進行預警的需求。
    5結 論
    基于 ArcGIS 的滑坡危險區信息管理系統的建立,可以對滑坡區屬性信息進行規范 化管理,可以對降雨型滑坡的發生進行科學預警,可以對未來可能發生的滑坡對人民群 眾的人員傷亡和財產損失情況做出正確估計,為政府部門開展防災減災工作提供科學的 依據,并有利于災后各部門的應急救援工作的快速展開。
    綜合本文的研究成果,可以得出以下結論:
    (1)本文針對大連滑坡地區的實際情況將無人機傾斜攝影技術、數據庫技術和GIS 可視化技術相結合建立了滑坡危險區屬性信息數據庫和滑坡危險區 3D 模型數據庫,實 現了對混亂繁雜的滑坡危險區有關信息進行了規范化處理的目的,且詳細介紹了滑坡危 險區屬性信息數據庫和3D模型數據庫的建立過程。
    (2)本文基于滑坡危險區屬性信息數據庫,建立了滑坡危險區屬性信息的查詢系 統,用戶可通過此系統對目標滑坡區域的屬性信息進行快速準確的查詢。
    (3)本文基于滑坡危險區 3D 模型數據庫的建立,將計算機軟件科學技術與 GIS 可視化開發平臺相結合開發出滑坡危險區 3D 模型展示系統,解決了針對市級范圍內大 面積、大數量的滑坡危險區 3D 模型進行可視化展示的問題。相比于 2D 圖形,用戶通 過滑坡危險區3D模型的展示系統能夠更加直觀的了解滑坡危險區地形地貌特征。
    (4)本文根據以往滑坡研究工作的總結,結合計算機軟件科學技術、數據庫技術 和GIS可視化開發平臺研究建立了降雨型滑坡預警系統。此系統可以根據區域降雨量大 小對大范圍、大面積的滑坡危險區域進行有效預警。通過此系統,用戶可對縣級、市級 區域的滑坡險情進行快速了解。
    (5)本文通過滑坡危險區信息管理系統的開發,詳細介紹了一個將無人機傾斜攝 影技術、數據庫技術、GIS可視化開發平臺和計算機軟件科學技術相結合建立GIS應用 系統的過程。
    參 考 文 獻
    [1]自然資源部.全國各省第一次全國地理國情普查公報[EB/OL]. (2020-03-25)[2022-04-17]. http: //gi.mnr.gov.cn/202003/t20200325_2502918.html.
    [2]鐘立勛.意大利瓦依昂水庫滑坡事件的啟示[J].中國地質災害與防治學報,1994, 5(2): 77-84.
    [3]家俊輝.國內外重特大山體滑坡災害盤點[J].中國減災,2017(13): 32-35.
    [4]應急管理部救災和物資保障司.應急管理部公布2019年全國十大自然災害[EB/OL]. (2020-01- 12)[2022-04-19]. https://www.mem.gov.cn/xw/bndt/202001/t20200112_343410.shtml.
    [5]王娜.巴州區降雨型滑坡預警研究[D](碩士學位論文).成都:電子科技大學,2019.
    [6]朱云波.淺表層土質滑坡起動地形、降雨因素分析[D](碩士學位論文).成都:成都理工大學, 2015.
    [7]李寧,劉冠麟,陳有亮,等.降雨誘發淺層滑坡影響因素的解析分析J].上海理工大學學報, 2018, 40(1): 65-75.
    [8]李曜男,張龍飛,廖康,等.降雨因素對滑坡穩定性影響分析[J].山西建筑,2017, 43(13): 63-64.
    [9]魏寧,茜平一,傅旭東.降雨和蒸發對土質邊坡穩定性的影響[J].巖土力學,2006, 27(5): 778- 781+786.
    [10]張博航.GIS技術在土地適宜性評價中的應用[J].中國科技信息,2022(4): 125-126.
    [11]胡曉東.GIS技術在防災減災中的作用研究[J].內江科技,2009, 30(6): 73.
    [12]趙志岐.基于GIS技術的鄱陽湖區防汛抗洪信息系統研究[D](碩士學位論文).贛州:江西理工 大學, 2012.
    [13]方從剛.信息技術支撐下的國土資源監管技術體系研究與應用[D](博士學位論文).成都:成都 理工大學, 2013.
    [14]馬蘭俊.基于GIS的長沙市國土資源執法監察立體網絡系統設計[D](碩士學位論文).長沙:湖 南農業大學, 2009.
    [15]唐以杰.“3S ”技術在生態環境保護方面的應用[J].生物磁學,2004(1): 44-46.
    [16]李安福,曾政祥,吳曉明.淺析國內傾斜攝影技術的發展[J].測繪與空間地理信息,2014, 37(9): 57-59+62.
    [17]楊帆.無人機傾斜攝影技術在地質災害調查中的應用[J].云南水力發電,2022, 38(2): 41-43.
    [18]徐春平.地理信息系統在國內外應用現狀[J].中小企業管理與科技(上旬刊),2008(5): 194.
    [19]Keiko Inagaki, Satoru Sadohara. Slope Management Planning for the Mitigation of Landslide Disaster in Urban Areas[J]. Journal of Asian Architecture and Building Engineering, 2006, 5(1): 183-190.
    [20]Franco Mantovani, Francisco Javier Gracia, Pietro Domenico de Cosmo. A new approach to landslide geomorphological mapping using the Open Source software in the Olvera area (Cadiz, Spain)[J]. Landslides, 2010, 7(1): 69-74.
    [21]William B. Ouimet. Landslides associated with the May 12, 2008 Wenchuan earthquake: Implications for the erosion and tectonic evolution of the Longmen Shan[J]. Tectonophysics:International Journal of Geotectonics and the Geology and Physics of the Interior of the Earth, 2009, 491(1): 244-252.
    [22]Matebie Meten, Netra Prakash Bhandary, Ryuichi Yatabe. GIS-based Frequency Ratio and Logistic Regression Modelling for Landslide Susceptibility Mapping of Debre Sina Area in Central Ethiopia[J]. Journal of Mountain Science, 2015, 12(6): 1355-1372.
    [23]朱良峰,孫建中,張成娟.沉積地層系統三維實體模型構建方法J].巖土力學,2012, 33(11): 3243-3250.
    [24]劉紀平,常燕卿,李青元.空間信息可視化的現狀與趨勢[J].測繪學院學報,2002, 19(3): 207- 210.
    [25]陳紅華,徐云和.一種地礦3維數據模型集成方法的研究[J].中國礦業,2003, 12(12): 60-61+69.
    [26]陳少強,李琦,苗前軍,等.矢量與柵格結合的三維地質模型編輯方法J].計算機輔助設計與 圖形學學報, 2005, 17(7): 1544-1548.
    [27]馬永久,邢利娟,趙志飛.基于矢量光柵數據的3D地質勘探研究J].電子設計工程,2017, 25(7):6-9+14.
    [28]楊慧.OpenGL和DirectX在技術和應用上的區別及聯系[J].電腦知識與技術,2009, 5(24): 7064,7067.
    [29]殷坤龍,朱良峰.滑坡災害空間區劃及GIS應用研究[J].地學前緣,2001, 8(2): 279-284.
    [30]楊佳,羅顯剛,黃菊,等.基于WEBGIS的湖北省地質災害預警預報圖的實現[J].工程地球物 理學報, 2005, 2(5): 380-386.
    [31]殷坤龍,陳麗霞,張桂榮.區域滑坡災害預測預警與風險評價[J].地學前緣,2007, 14(6): 85-97.
    [32]謝謨文,柴小慶,賈寧,等.滑坡實時監測網絡地理信息系統研發及應用J].巖石力學與工程 學報, 2011, 30(10): 2090-2102.
    [33]李小根,王安明.基于GIS的滑坡地質災害預警預測系統研究J].鄭州大學學報(工學版),2015, 36(1): 114-118.
    [34]李俊燕.基于GIS的房山區滑坡災害危險性評價研究[D](碩士學位論文).北京:中國地質大學 (北京), 2018.
    [35]余國,謝謨文,胡慶忠,等.基于GIS的庫岸滑坡滑速計算方法[J].巖土力學,2019, 40(7): 2781-2788.
    [36]葉潤青,李士垚,郭飛,等.基于RS和GIS的三峽庫區滑坡易發程度與土地利用變化的關系 研究[J].工程地質學報,2021, 29(3): 724-733.
    [37]鄭潔,孫姣姣,楊力成,等.基于GIS的滑坡災害影響因子危險性評價一一以茂縣為例J].科 學技術創新,2021(1): 49-51.
    [38]大連市人民政府.地理位置[EB/OL]. (2021-04-06)[2022-04-19]. https://www.dl.gov.cn/art/2021/ 4/6/art_3553_548815.html.
    [39]大連市人民政府.大連氣候特征[EB/OL]. (2021-02-08)[2022-04-19]. https://www.dl.gov.cn/art/ 2021/2/8/art_3558_525646.html.
    [40]戚帥,梅斌.淺談軟件開發流程及實踐[J].郵電設計技術,2015(12): 24-28.
    [41]宋一玲.基于ARCGIS的城市震害預測系統的建立[D](碩士學位論文).大連:大連理工大學, 2012.
    [42]桂思英.GIS技術應用現狀及進展[J].世界有色金屬,2017(8): 269-270.
    [43]石云.ArcGIS專題應用[M].北京:陽光出版社,2019.
    [44]熊玉.一個嵌入式的圖形用戶界面(GUI)系統的研制與實現[D](碩士學位論文).成都:電子科 技大學, 2008.
    [45]詹瑾瑜.基于嵌入式操作系統的圖形用戶界面(GUI)系統的研究與實現[D](碩士學位論文).成 都: 電子科技大學, 2003.
    [46]Li Bill.嵌入式GUI應用程序快速入門[J].中國集成電路,2019, 28(3): 90-92.
    [47]趙正旭,徐棚,張慶海.基于國產操作系統獨立GUI應用研究[J].計算機系統應用,2021, 30(9): 98-103.
    [48]黃小旭.嵌入式系統圖形用戶界面開發技術研究[D](碩士學位論文).南京:南京郵電大學, 2014.
    [49]黎革女.基于Linux的嵌入式GUI的研究與開發[D](碩士學位論文).大連:大連海事大學,2008.
    [50]百度文庫.簡述用戶界面設計應該遵循的原則[EB/OL]. (2020-05-25)[2022-04-17]. https://wenk u.baidu.com/view/f03a4d4050d380eb6294dd88d0d233d4b14e3ff3.html.
    [51]博客園.系統設計原則[EB/OL]. (2017-07-17)[2022-04-17]. https://www.cnblogs.eom/seer/p/719 7852.html.
    [52]49牟乃夏.ArcGIS Engine地理信息系統開發教程[M].北京:測繪出版社,2015.
    [53]50韓鵬.地理信息系統開發ArcEngine方法[M].武漢:武漢大學出版社,2008.
    [54]51湯國安.地理信息系統教程(第二版)[M].北京:高等教育出版社,2019.
    [55]郝光前,周立新.淺談VBA在工作中的應用[J].山東國土資源,2014, 30(8): 80-84.
    [56]黃振業.淺談動態鏈接庫及其應用[J].福建電腦,2017, 33(1): 154-155.
    [57]Michael Legutke, Sabine Rotberg. Deutsch Lehren Lernen (DLL) 一 das weltweite Fort - und Weiterbildungsangebot des Goethe-Instituts[J]. Informationen Deutsch Als Fremdsprache, 2018, 45(05): 605-634.
    [58]Garlepp B W, Donnelly K S, Kim J, et al. A portable digital DLL for high-speed CMOS interface circuits[J]. IEEE Journal of Solid-State Circuits, 1999, 34(5): 632-644.
    [59]Vankeerberghen P, Van den Bogaert B, Massart D L. Dynamic link libraries I. Introduction[J]. TrAC Trends in Analytical Chemistry, 1996, 15(6): 206-208.
    [60]丁浩洪.動態鏈接庫技術的應用探討[J].信息系統工程,2019(1): 40.
    [61]Manchado Cristina, RoldanValcarce Alejandro, JatoEspino Daniel, et al. ArcDrain: A GIS Add-In for Automated Determination of Surface Runoff in Urban Catchments[J]. International Journal of Environmental Research and Public Health, 2021, 18(16): 8802.
    [62]P.L. Iglesias-Rey, F.J. Martinez-Solano, J.V. Ribelles-Aquilar. Extending EPANET Capabilities with Add-In Tools[J]. Procedia Engineering, 2017, 186: 626-634.
    [63]張玉群,朱道壯.基于Python語言的Add-In開發應用[J].測繪與空間地理信息,2014, 37(10): 168-169.
    [64]張春義,程鋼,張振輝.基于Python的ArcGIS Add-In開發及案例應用[J].地理空間信息,2019, 17(8): 50-54+107.
    [65]豆丁網.通過 ARCGIS ENGINE 構建 GIS 應用[EB/OL]. (2011-04-08)[2022-04-17]. https://ww w.docin.com/p-186162320.html.
    [66]雷福民,劉建智.VBA統計軟件的設計與應用[J].西安體育學院學報,2003, 20(5): 40-41.
    [67]Wei Cheng, Ke Wang, Xiuying Zhang. Implementation of a COM-based decision-tree model with VBA in ArcGIS[J]. Expert Systems with Applications, 2009, 37(1): 12-17.
    [68]Di Liang, Feng Rong Zhang. Design and Achievement of Work Measurement System Based on VBA[J]. Advanced Materials Research, 2011, 1289(268-270): 2048-2053.
    [69]金靖.基于ArcGIS Engine的地理信息系統二次開發原理和方法[J].測繪與空間地理信息, 2012, 35(3): 46-49.
    [70]百度文庫.shapefile 翻譯[EB/OL]. (2011 -02-27)[2022-04-07]. https://wenku.baidu.com/view/605 d316eb84ae45c3b358c49.html.
    [71]劉磊.基于ArcEngine的遷安礦山管理信息系統部分功能的設計與實現[D](碩士學位論文).北 京: 中國地質大學(北京), 2009.
    [72]黃杏元,馬勁松.地理信息系統概論(第三版)[M].北京:高等教育出版社,2008.
    [73]劉鋒.南昌市體育局辦公信息系統的設計與實現[D](碩士學位論文).南昌:南昌大學,2016.
    [74]李春葆,曾平,喻丹丹.C#程序設計教程(第三版)[M].北京:清華大學出版社,2015.
    [75]明日科技.C#從入門到精通(第四版)[M].北京:清華大學出版社,2017.
    [76]宋德周.大數據背景下數據庫技術應用分析[J].軟件,2022, 43(1): 99-101.
    [77]Zhang Yi, Li Xiaoyan. An Empirical Study on the Course of “Database Principle and Application” Based on the Mixed Teaching Mode of “Massive Course”[J]. Creative Education, 2020, 11(10): 2027-2037.
    [78]張皓.GIS數據庫設計與實現研究[J].科技資訊,2017, 15(24): 33-34.
    [79]王珊,薩師煊.數據庫系統概論(第五版)[M].北京:高等教育出版社,2014.
    [80]馬文濤,陳宜金,王淼淼,等一種Shapefile文件的剖析及讀寫方法[J].北京測繪,2018, 32(12): 1517-1521.
    [81]張麗莉,吳健生,王家林.地學數據文件向Shapefile文件的轉換[J].物探化探計算技術,2004, 26(1): 78-84.
    [82]李芳, 梅紅波, 王偉森, 等. 降雨誘發的地質災害氣象風險預警模型:以云南省紅河州監測示范 區為例[J].地球科學,2017, 42(9): 1637-1646.
    【本文地址:http://www.bzhlmm.com//guanlilei/gongshangguanli/xixinguanli/8772.html

    上一篇:遼寧省職業健康信息管理平臺建設設計研究

    下一篇:沒有了

    相關標簽: