張云輝+張若飛+朱東旭+裴彪+黃猛
摘要:文章根據(jù)WEBGIS的工作原理,在WEBGIS基礎平臺上,采用計算機網(wǎng)絡和數(shù)據(jù)庫管理技術,對大慶市的基礎公共設施數(shù)據(jù)進行采集、存儲、管理、分析、計算和圖形處理顯示,以百度地圖作為互聯(lián)網(wǎng)地理系統(tǒng)的底圖進行開發(fā),設計大慶市災害預測信息平臺,實現(xiàn)對基礎公共設施數(shù)據(jù)的算法分析模擬情況。該系統(tǒng)的構建為大慶市的震害預測情況提供可靠的數(shù)據(jù)分析。
關鍵詞:GIS,地震,震害預測,研究
隨著社會經(jīng)濟的高速發(fā)展,人民生活質(zhì)量的提升,城市的建設也越來越趨于完善,在此社會現(xiàn)狀和背景下,迫切需要一套評定和提高城市抗震防災能力加強地震關鍵技術研究,采取有效措施減少地震損失,因此,我們決定采用IT+GIS的方式設計一套針對此情況的實時性信息系統(tǒng)。
廊坊市震害預測系統(tǒng)是本系統(tǒng)采用B/S系統(tǒng)架構,基于GIS空間數(shù)據(jù)庫、坐標轉換技術、GIS空間分析技術和PHP開發(fā)技術,應用震害因子算法預測不同強度地震災害條件下城市的受損程度及空間分布并進行二維可視化顯示、綜合查詢分析和高效的輔助決策功能,確定城市抗震薄弱環(huán)節(jié)并快速預警。本文詳細介紹了本系統(tǒng)的開發(fā)過程。
一、系統(tǒng)分析
大慶市震害預測系統(tǒng)的系統(tǒng)功能結構圖如圖1所示。它的工作流程是根據(jù)大慶市地質(zhì)災害分布及危險度、建筑物和建筑設施的基本情況(包括名稱、空間分布、結構類型、目前工作狀態(tài)等),建立了大慶市地震震害預測空間數(shù)據(jù)庫,采用MVC設計模式+CI框架,結合GIS空間分析應用模型和地震工作基本原理,對地震災害破壞程度及空間分布做出預測,實現(xiàn)城市防震減災工作中由靜態(tài)規(guī)劃到動態(tài)管理的轉變。
二、系統(tǒng)設計與實現(xiàn)
大慶市震害預測系統(tǒng)是基于PHP CI框架+MYSQL數(shù)據(jù)庫+百度地圖接口+ARCGIS Shp圖層(進行投影轉換)進行開發(fā)的,充分利用GIS工具軟件對空間數(shù)據(jù)庫的處理,分析功能,提高了應用系統(tǒng)的開發(fā)效率,開發(fā)出的系統(tǒng)具有良好的外觀效果,強大的底層數(shù)據(jù)庫,可靠性良好,移植性強,易于維護。
(一)CI框架的選取
如果在IT系統(tǒng)建設過程中缺乏總體架構和規(guī)劃,系統(tǒng)將在管理上面臨眾多的挑戰(zhàn)。比如:業(yè)務越來越復雜,IT系統(tǒng)越來越龐大,檢查一個錯誤就需要在整個項目中查找;不清楚IT系統(tǒng)中各個模塊的現(xiàn)狀,更談不上合理規(guī)劃新的功能;系統(tǒng)難以維護等問題。因此,一個適用的框架是非常重要的。
CodeIgniter(CI)是一個小巧但功能強大的 PHP 框架,作為一個簡單而“優(yōu)雅”的工具包,它可以為開發(fā)者們建立功能完善的 Web 應用程序。它有如下特點:
1. 小巧的框架,CodeIgniter 3包括用戶手冊的安裝包僅有 2MB 大小。
2. 出色的性能,CodeIgniter 的性能始終優(yōu)于大多數(shù)同類框架。
3. 沒有大規(guī)模集成類庫,CodeIgniter 不是一個大而全的框架。在保持簡潔的同時提供足夠強大的功能來提高你的生產(chǎn)力,在此基礎之上也有許多第三方擴展為你提供更多功能。
4. 幾乎 0 配置,CodeIgniter 奉行約定勝于配置的理念(例如把模型文件放到“models“文件夾中)。當用戶希望修改配置的時候,在“config“文件夾中有許多配置項供用戶修改。
5. 廣泛兼容各種主機環(huán)境,CodeIgniter
3只需 PHP 5.3.7 版,幾乎可以運行在任何虛擬主機或云平臺上。對于需要數(shù)據(jù)庫的 Web 應用來說,CodeIgniter 支持包括 MySQL 在內(nèi)的大多數(shù)常見數(shù)據(jù)庫。由于本系統(tǒng)經(jīng)過測試后要部署在大慶市自己的服務器上,因此兼容性強是選擇本框架的核心。
基于以上優(yōu)點,CI框架非常適合本系統(tǒng)的開發(fā)。
基于CI框架,系統(tǒng)的主界面通過選擇xx數(shù)據(jù)集,可以進行分類數(shù)據(jù)的相應的展示,這里用到了百度地圖的BMAP.POINT對后臺數(shù)據(jù)進行集成,使用icon類進行點顏色的選擇,并且設置了圖形的透明度等屬性,以求給用戶一個大方美觀的界面。
系統(tǒng)的主界面如圖2所示。
(二)空間數(shù)據(jù)庫設計
基于任何一個GIS系統(tǒng)的核心都是數(shù)據(jù)庫的建設,由于本系統(tǒng)要對城市的抗震能力進行分析,因此不僅要包含基礎的行政區(qū)劃圖、建筑物統(tǒng)計信息表等(其中包含了建筑物類型、空間分布、結構類型、抗震設防、目前工作狀態(tài)等30余項內(nèi)容)基礎地理信息,還要包含生命線(鐵路、公路、水系、橋梁、水管、電線、煤氣管線、暖氣管線)等基礎信息,經(jīng)過半年多的前期調(diào)研,整個基礎信息數(shù)據(jù)文件有13.4GB之多,這么多的數(shù)據(jù)如果不能給他們進行清晰的按類劃分,對于程序員的后期開發(fā)將會產(chǎn)生災難性的后果,因此項目組依據(jù)前期所調(diào)查出來的結果,把所有數(shù)據(jù)按照類型分為三大類(公共基礎數(shù)據(jù)、生命線數(shù)據(jù)、地理信息數(shù)據(jù))近200張表。如圖3、圖4所示。
三、數(shù)據(jù)查詢
有了數(shù)據(jù)庫,那么下一步就是提供給用戶方便的查詢功能,據(jù)百度大數(shù)據(jù)統(tǒng)計,在所有的IT用戶中,85%以上的用戶每天適用最頻繁的就是查詢功能。為了方便用戶本系統(tǒng)提供了精確查詢和模糊查詢2個功能。尤其是模糊查詢,是本系統(tǒng)的一個特色,為了在模糊查詢時能精確查找出所有匹配的建筑,項目組對數(shù)據(jù)庫中的建筑物所在位置字段進行了重新定義,把原來的一個字段分解為了5個字段(建筑物所在的(市)字段,(轄區(qū)/縣/胡同)字段,(街道/鄉(xiāng)鎮(zhèn))字段,(小區(qū)名/村名/單位名)字段,(樓號)字段。),并且重寫了search類進行實現(xiàn)。雖然增加了工作量,但是對于后期的系統(tǒng)開發(fā)卻大大提升了效率,效果如圖5所示。endprint
(一)地震烈度算法的選擇
本系統(tǒng)提供圓形模型和線性模型兩種烈度算法給用戶提供選擇,在進行相應的參數(shù)輸入后,進行計算,然后用戶選擇添加想要分析的數(shù)據(jù),系統(tǒng)經(jīng)過一系列的比對算法之后,會給用戶呈現(xiàn)出不同顏色的數(shù)據(jù)集。
此部分是整個系統(tǒng)的核心部分,在計算機行業(yè)中有一句話叫:數(shù)據(jù)的呈現(xiàn)是軟件,程序的靈魂是算法;為此專門設計了一個烈度圖的類intensityShow。
在此類中共有三個方法intensityRArray,drawOval, ovalPoint.
1. 根據(jù)烈度返回距離 intensityRArray方法
此方法根據(jù)沙海軍提出的衰減模型進行距離的選擇和判斷,根據(jù)相應計算出的烈度,然后進行距離的選擇,以確定長短軸。
2. 繪制橢圓 drawOval方法
此處調(diào)用百度地圖的BMAP. Polygon方法進行覆蓋物的繪制,這樣就可以和百度地圖進行對接,使得功能在百度地圖上展示出來。
3. 計算烈度圈的點 ovalPoint方法
此方法是核心的算法,因為百度地圖BMAP. Polygon方法要求的是一個裝有經(jīng)緯度數(shù)據(jù)點的數(shù)組,因此,計算相應的數(shù)據(jù)點就成為了此算法的核心部分,根據(jù)橢圓的標準公式和直線的點斜式公式,依次對橢圓上180度的點進行計算,分別在四個區(qū)間內(nèi)進行分別處理,這樣我們就可以得到經(jīng)過計算的360個點。
a^2=b^2+c^2長短軸之間的關系(1)
F1P+F2P=2a橢圓上任意一點到兩焦點之間的距離相等(2)
x^2/a^2+y^2/b^2=1 x軸的橢圓標準方程(3)
y=kx+b(默認過橢圓圓心,因此b值為0) (4)
我們模擬這條線從0度開始,持續(xù)選擇180度,在每一度進行計算,因此,我們沒一度都可以得到第一(第二)象限,第三(第四)象限的坐標點,逐次計算,最終得到360個橢圓的邊界點。
但是這里面還有兩個核心的問題沒有解決。
1. 如何得到這個長軸的點呢?因為它使用的是經(jīng)緯度的單位,所以就得使用經(jīng)緯度的坐標進行轉換,但是百度地圖的投影和我們?nèi)粘J褂玫耐队巴耆灰粯?,如果強行使用則會產(chǎn)生較大誤差,所以必須利用百度的相應接口進行間接的坐標計算,因此我使用了縮進方法,每次以極微弱的經(jīng)緯度差距在同一經(jīng)度(緯度)進行向前尋找,以距離為限制條件,一旦搜索到和距離相匹配的點,則就選中這個點,那么這個問題就解決了
for(vari=0.0000;i var bLat = centre.lat+i; bPoint = new BMap.Point(centre.lng,bLat); if(map.getDistance(centre,bPoint).toFixed(0)==b.toFixed(0)*1000){//在這個經(jīng)度下尋找距離為b的點 bPointLat = bLat; break; } } 2. 如何將繪制好的橢圓進行旋轉呢? 在線性代數(shù)中,坐標相對位置的轉換可以看成矩陣的變換,則使用向量法,將每一個點的坐標向同一方向進行偏移,最終實現(xiàn)了橢圓的旋轉。 var x=Math.abs(lng*Math.cos(angle)); var y=Math.abs( lng*Math.sin(angle))。 (二)建筑物震害評估 由于大慶市有數(shù)萬棟建筑,因此在計算時本系統(tǒng)采用基于網(wǎng)格計算的震害因子法。并基于不同的震級給出不同的建筑物受損情況。 如何在現(xiàn)有的極少的數(shù)據(jù)下進行拓展查詢呢?這些數(shù)據(jù)并沒有被調(diào)查到,只能最大程度的去模糊搜索這些數(shù)據(jù),策略是若某一棟被搜索的建筑并沒有數(shù)據(jù),那么我們就查找它在哪一個區(qū)域,因為這個區(qū)域的屬性應該是一樣的,我們就默認這個區(qū)域的宏觀屬性是所查找建筑的詳細屬性,這樣,即使數(shù)據(jù)不全,我們也可以對整個城市的建筑群,進行一個客觀的評估。 圖7是經(jīng)過計算分析的經(jīng)濟損失是否達到震害損失合格線的效果圖。 (三)圖表繪制 經(jīng)上述算法和相關計算,將各種破壞情況下的數(shù)據(jù)統(tǒng)計繪制出來。 此圖表的繪制主要使用EChart進行實現(xiàn),主要調(diào)用Echart的EChart.setOption()方法進行圖標繪制, EChart.title()設置標題,EChart.tooltip()設置工具信息,EChart.legend()設置x軸坐標信息,EChart.series設置數(shù)據(jù)比例值,這樣數(shù)據(jù)圖表就渲染和制作完成。 (四)截圖繪圖PPT&&WORD快速產(chǎn)出 在整個系統(tǒng)流程中我們設計了一套流程進行模擬分析,設置模擬地震,選擇分析數(shù)據(jù)集,進行餅狀圖繪制,導出PPT&&WORD,在此過程中,我們在關鍵流程位置進行自動截圖,這在我們點擊事件中點擊觸發(fā),但是并不影響用戶對本系統(tǒng)使用,截圖時是每次成圖的界面進行自動截圖,然后將這些圖片早生成word時自動導入到word中,這樣達到快速產(chǎn)出的功能。 此功能需要調(diào)用office的接口,為此我們專門寫了一個類,PowerPointExport進行實現(xiàn),在此類中,我們把引用office如下方法getProperties.createTemplatedSlide實現(xiàn)每一頁模版的創(chuàng)建;getProperties. createRichTextShape實現(xiàn)創(chuàng)建文本的樣式;getProperties. setHorizontal實現(xiàn)創(chuàng)建偏移量的設定;getProperties.createTextRun實現(xiàn)繪制文本框;getProperties.setPath實現(xiàn)路徑的保存;getProperties.setDescription實現(xiàn)背景的渲染等一系列近20種方法進行修飾,這里不再一一贅述。效果如圖10所示。 四、結論與展望 本系統(tǒng)利用IT+GIS技術,實現(xiàn)了對公共數(shù)據(jù)的分享,分析,與發(fā)布,方便業(yè)內(nèi)人士進行數(shù)據(jù)分析,該系統(tǒng)的開發(fā)希望可以讓業(yè)內(nèi)人士避免在數(shù)據(jù)的繁雜中尋找自己想要的可用數(shù)據(jù),方便了人們的日常工作,同時由于本系統(tǒng)在數(shù)據(jù)庫維護,GIS空間數(shù)據(jù)抽取算法中還有一些問題,在今后的研發(fā)過程中將做進一步的修改和優(yōu)化。 參考文獻: [1]汪素云.中國分區(qū)地震動衰減關系的確定[J].中國地震,2000(02). [2]姜開興.城市抗震減災策略[J].中國減災,2007(11). [3]李淑貞.地震災害評估[M].地震出版社,2006. *基金項目:2016年國家級大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目——基于GIS的大慶市震害分析模擬系統(tǒng)(201611775029);中央高校基本科研業(yè)務費專項資金創(chuàng)新團隊資助計劃項目(ZY20110102)。 (作者單位:防災科技學院)