原文:分享一下我的部分毕设内容:基于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服务的发布,可以参见之前的系列博文,欢迎关注我的博客.....您的支持是我坚持不懈的动力。

 

分享一下我的部分毕设内容:基于Windows Phone平台的污染源管理应用的更多相关文章

  1. 基于Windows 10平台的PM2.5检测器制作

    本篇文章详细讲解了如何利用SDS011激光式PM2.5传感器.HC-06蓝牙模块和Windows 10设备完成一个简单的PM2.5检测器及其应用程序的开发.该检测器使用蓝牙完成数据输出,方便设备连接, ...

  2. 编辑方法分享之如何编辑PDF文件内容

    我们现在在工作中会经常使用到PDF文件,还会有遇到需要编辑PDF文件的时候,PDF文件的编辑问题一直是个大难题.很多朋友在面对PDF文件的时候束手无策,不知道该怎么对它进行编辑.下面小编就教给大家一个 ...

  3. 内网穿透神器(ngrok)服务端部署【分享一台自己的ngrok服务器】【多平台】

    Ngrok为何物 “ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放.”这是百度百科上给Ng ...

  4. asp.net基于windows服务实现定时发送邮件的方法

    本文实例讲述了asp.net基于windows服务实现定时发送邮件的方法.分享给大家供大家参考,具体如下: //定义组件 private System.Timers.Timer time; publi ...

  5. 基于Windows 7(本地)和CentOS7.6(云端)的Minecraft服务器(无Forge/有Forge)搭建方法

    炎炎夏日中想和小伙伴们开黑的同学可以进来看一下了,本教程教你搭建基于两个平台的Minecraft服务器,这里我以Minecraft 1.11.2版本为例给大家讲解搭建流程.其中有Forge版本可以加入 ...

  6. 基于科大讯飞AIUI平台自定义语义库的开发

    说明:我写这篇文章的主要目的是因为我在做这块的时候遇到过一些坑,也是希望后来者能少走一些弯路. 科大讯飞AIUI开放平台地址 科大讯飞AIUI开放平台后处理地址 AIUI后处理开放平台协议 1. 科大 ...

  7. Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架

    最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包.比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个 ...

  8. Metronic – 超赞!基于 Bootstrap 的响应式后台管理模板

    Metronic 是一套精美的响应式后台管理模板,基于强大的 Twitter Bootstrap 框架实现.Metronic 拥有简洁优雅的 Metro UI 风格界面,6 种颜色可选,76 个模板页 ...

  9. 在使用Kettle的集群排序中 Carte的设定——(基于Windows)

    本片文章主要是关于使用Kettle的UI界面: Spoon来实现基于集群的对数据库中的数据表数据进行排序的试验. 以及在实验过程中所要开启的Carte服务的一些配置文件的设置, 还有基于Windows ...

随机推荐

  1. (转)mvn clean install 与 mvn install 的区别(为啥用clean)

    之前写代码的过程中曾经遇到过问题,用mvn install后,新改的内容不生效,一定要后来使用mvn clean install 才生效,由于之前没有做记录,以及记不清是什么情况下才会出现的问题,于是 ...

  2. [LeetCode328]Odd Even Linked List

    题目: Given a singly linked list, group all odd nodes together followed by the even nodes. Please note ...

  3. net搭建热插拔式web框架

    net搭建热插拔式web框架(重造Controller) 由于.net MVC 的controller 依赖于HttpContext,而我们在上一篇中的沙箱模式已经把一次http请求转换为反射调用,并 ...

  4. Java中使用Lua脚本语言(转)

    Lua是一个实用的脚本语言,相对于Python来说,比较小巧,但它功能并不逊色,特别是在游戏开发中非常实用(WoW采用的就是Lua作为脚本的).Lua在C\C++的实现我就不多说了,网上随便一搜,到处 ...

  5. Akka.NET是Java/Scala 流行框架Akka的一个 .NET 开源移植

    Akka.NET v1.0 已发布,支持Mono Akka.NET 是Java/Scala 流行框架Akka的一个 .NET 开源移植.可用于构建高并发,分布式和容错事件驱动的应用在 .NET 和 M ...

  6. C/S通信模型和相关技术要点

    差点儿全部的项目中,都会涉及到client和服务端.而client与server之间的通信又是一个非经常见但又有须要问题的技术问题. 首先,连接方式有长连接和短连接.先看看概念. 长连接短连接仅仅是一 ...

  7. XCL-Charts绘画面积图(AreaChart) 例1

    样本区域地图,发现区域图的时候把做向上注视位置图更具优势的管理.在改变. 区域图网格和轴是不一样的处理与其它图, 它是用来表示其影响范围的覆盖范围,车桥无段伸出. 在这里下处理. watermark/ ...

  8. Adb shell得到root才干

    于Adb shell我们希望用一些文件系统文件夹时,经常有在没有痛苦Root才干,系统会提示su: Permission Denied. su不是每个手机有一个.能不能在这里下载: http://do ...

  9. sdut 上机练习8面向对象编程(对象的数组)

    上机练习8面向对象编程(对象的数组) Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 利用类对象数组完毕N个学生数据(学号是字符串类型.成绩是整型)的输入 ...

  10. OC本学习笔记Foundatio框架集

        一.OC数组         OC数组是一个类,它也分不可变数组NSArray和可变数组NSMutableArray. 1➣不可变数组的创建 // 创建一个不可变数组.元素为一个OC字符串对象 ...