分享一下我的部分畢設內容:基於Windows Phone平台的污染源管理應用


      畢業半年,又總結了一下之前的工作,發現很多知識不復習都忘記了。最近新聞總是報道北京的空氣污染,各種霧霾,各種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的圖層:

<esri:FeatureLayer
ID="ConverntionalSourceLayer" Url="http://qzj-pc/ArcGIS/rest/services/PollutionSourceInfo/FeatureServer/1"
AutoSave="True"
OutFields="*" MouseLeftButtonDown="FeatureLayer_MouseLeftButtonDown" />

       在ArcGIS API for Windows Phone 中可以通過Editor組件完成要素的編輯工作。Editor編輯的對象要求是FeatureService中的要素資源。

如下所示聲明了一個Editor:

<esri:Editor
x:Key="MyEditor"
LayerIDs="ConverntionalSourceLayer"
GeometryServiceUrl=
"http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer" EditCompleted="Editor_EditCompleted"/>

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命令來說,其示例代碼如下:

if (editor.Add.CanExecute("ConventionalSource"))
editor.Add.Execute("ConventionalSource");

這里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.Where="PS_PollutionQ >100";
queryTask.ExecuteAsync(query);

對於空間查詢實際上是通過設置Query的Geometry屬性。首先通過一個Draw事件捕捉用戶繪制的圖形,然后將此圖形賦值給Query的Geometry,最后執行查詢,代碼如下所示:

SpatialQuery.Geometry = e.Geometry;
queryTask.ExecuteAsync(SpatialQuery);

下圖顯示了按屬性條件查詢和按空間查詢的效果圖:

 

三、ArcGIS API For Windows Phone 的地理要素關聯屬性表查詢

在關聯屬性表查詢中和Silverlight同樣是類似的,都是通過指定RelationshipParameter,來進行查詢,例如下面聲明的一個RelationshipParameter :

 

 

 RelationshipParameter relationshipParameters = new RelationshipParameter()
                {
 //通過Source_ID字段來查詢關聯的數據
//需要注意的是用於查詢的字段必須為Integer類型的(String類型的將查詢不到結果)
                    ObjectIds = new int[] { Convert.ToInt32(_SelectedGraphic.Attributes["Source_ID"])},
                    RelationshipId = _relationshipId,
                    OutFields = outFildes,
                    OutSpatialReference = BaseMap.SpatialReference,
                    ReturnGeometry=true
                };
//UserToken指定為關聯的ID值,這樣可用來判斷查詢的結果是那一張表
queryTask.ExecuteRelationshipQueryAsync(relationshipParameters,_relationshipId);

 

最后即可查詢關聯的數據信息,最后的示意圖:

 

 

 

PS:代碼上傳了好久沒有成功,蛋疼的校園網啊,有需要代碼的可以留言....我會將代碼和測試數據發送到您的郵箱,關於GIS服務的發布,可以參見之前的系列博文,歡迎關注我的博客.....您的支持是我堅持不懈的動力。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM