畢業半年,又總結了一下之前的工作,發現很多知識不複習都忘記了。最近新聞總是報道北京的空氣污染,各種霧霾,各種PM X超标,然後想到以後我們有飯吃了(俺也算是搞環境的科班出身,大學環境科學專業),然後聯系到大學的畢業論文,剛好做的是大氣污染相關的,于是閑來和大家分享一下,也算是對自己的之前工作的一個總結。
論文主要做的一個基于Web和Windows Phone平台的污染預測和污染源管理的應用,大體的功能就是根據污染物的擴散模型,對大氣污染的擴散,濃度分布進行模拟和可視化表達,同時對排放污染物的污染源進行線上的管理和監測。
這裡分享一下我的Windows Phone部分的畢設内容,主要實作的就是污染源的管理,例如污染源資訊的增删改查。廢話少說,下面就進入正題:
本次的主要内容大緻有以下幾個部分:
1.GIS服務部分,如何搭建GIS服務環境,如釋出帶有關系類的要素服務,及其注意事項
2.ArcGIS API for Windows Phone中的資料綁定,如要素資訊的顯示。
3.ArcGIS API for Windows Phone中要素資訊的管理(添加要素,删除要素,編輯要素屬性,查詢屬性)
4.ArcGIS API for Windows Phone中如何查詢要素關聯的資料表(非要素本身)
首先看一下最終的效果:
主界面,及查詢頁面

要素資訊顯示:
點選跟多查詢污染源詳細資訊和排放口資訊
添加或删除要素:
以上的内容大緻就是畢設做的,其中還包括了GPS定位導航等,由于是模拟器,是以無法實作定位的功能。在此就不再多言。
一、ArcGIS API For Windows Phone 的地理要素屬性編輯
在這裡主要實作的功能是實作移動智能終端對污染源資料的通路及查詢。這裡采用中國ArcGIS Online所提供的中國地圖作為本程式的底圖,并在底圖上加載污染源資料圖層。污染源的資料圖層類型應為FeatureLayer,其Url位址應指向ArcGIS Server釋出的FeatureService中的地理要素資源。下面示例代碼聲明了一個FeatureLayer的圖層:
在ArcGIS API for Windows Phone 中可以通過Editor元件完成要素的編輯工作。Editor編輯的對象要求是FeatureService中的要素資源。
如下所示聲明了一個Editor:
Editor元件包含以下編輯指令:
功能名稱
功能說明
Add
繪制并添加一個Graphic
CancelActive
取消編輯功能中所有激活的操作
ClearSelection
取消選擇所有已選擇的Graphic
DeleteSelected
删除一個Graphic,如果此Graphic與可編輯的FeatureLayer關聯,則該Graphic也會從地理資料庫中删除
Cut
通過一個geometry service服務剪輯某一Graphic
EditVertices
編輯Graphic的頂點,該功能針對多變要素的編輯
Reshape
通過geometry service重新繪制某一標明的Graphic的形狀
Save
儲存所有的編輯操作
Union
通過geometry service連接配接所有標明的Graphic
Select
選擇一個Graphic
Editor中的每一個指令都包含了兩個方法,一個是 CanExecute,一個是Execute方法,前一個方法用來判斷該指令是否可以執行,當确認可以執行時,便開始執行相關操作。例如對于Add指令來說,其示例代碼如下:
這裡CanExecute以及Execute函數中的參數為編輯圖層中特定模版的名稱或者類型的ID值。圖5.15顯示了要素服務圖層中的Templates屬性。
其他操作類似于添加操作,不一樣的地方為函數的輸入參數不同,是以在此不再叙述。
在建立好編輯的圖層以及聲明了編輯的工具之後,下一步便是通過編輯工具對圖層的資訊進行檢視和編輯。下圖顯示了移動終端通路地理資料庫中相關要素的過程。
這裡實作通路和編輯的核心是GIS服務,所有的操作都是通過GIS服務來完成的,其中GIS服務包含了常用的FeatureService,GeometryService,MapService等。
下圖說明了移動終端通路的過程,以及Windows Phone手機上的操作界面。
在設定好Edior工具之後,本文還定義了一個ListBox的控件,用來将污染源的屬性綁定到ListBox的内容,這樣當修改ListBox的内容時,同時也會更改污染源的屬性,并将更改更新到背景的資料庫中,進而達到對污染源屬性進行編輯的效果。此外結合之前的Add方法以及删除方法,通過添加或删除一個污染源,那麼就可以很好的完成關于污染源資料編輯以及資料送出的功能。最後的效果圖如下所示:
二、ArcGIS API For Windows Phone 的地理要素屬性查詢
在本文中提供了兩種查詢方式,一種是按屬性查詢,一種是空間查詢。兩種查詢的基本原理是一緻。其查詢的過程和原理與ArcGIS API for Silverlight一緻。都是通過QueryTask來實作查詢的功能。
對于屬性查詢來說,是給定了查詢的屬性條件,例如我們隻查詢污染物排放量大于100kg的污染源,那麼隻需通過設定Query的where屬性即可。
對于空間查詢實際上是通過設定Query的Geometry屬性。首先通過一個Draw事件捕捉使用者繪制的圖形,然後将此圖形指派給Query的Geometry,最後執行查詢,代碼如下所示:
下圖顯示了按屬性條件查詢和按空間查詢的效果圖:
三、ArcGIS API For Windows Phone 的地理要素關聯屬性表查詢
在關聯屬性表查詢中和Silverlight同樣是類似的,都是通過指定RelationshipParameter,來進行查詢,例如下面聲明的一個RelationshipParameter :
最後即可查詢關聯的資料資訊,最後的示意圖:
PS:代碼上傳了好久沒有成功,蛋疼的校園網啊,有需要代碼的可以留言....我會将代碼和測試資料發送到您的郵箱,關于GIS服務的釋出,可以參見之前的系列博文,歡迎關注我的部落格.....您的支援是我堅持不懈的動力。