武汉大学本科毕业论文_4626

上传人:mg****85 文档编号:44686413 上传时间:2018-06-14 格式:PDF 页数:42 大小:1.23MB
返回 下载 相关 举报
武汉大学本科毕业论文_4626_第1页
第1页 / 共42页
武汉大学本科毕业论文_4626_第2页
第2页 / 共42页
武汉大学本科毕业论文_4626_第3页
第3页 / 共42页
武汉大学本科毕业论文_4626_第4页
第4页 / 共42页
武汉大学本科毕业论文_4626_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《武汉大学本科毕业论文_4626》由会员分享,可在线阅读,更多相关《武汉大学本科毕业论文_4626(42页珍藏版)》请在金锄头文库上搜索。

1、学号 200632660033 密级_ 武汉大学本科毕业论文 武汉大学本科毕业论文 市政 LBS 系统设计与实现 市政 LBS 系统设计与实现 院(系)名 称:国际软件学院 专 业 名 称 :空间信息与数字技术 学 生 姓 名 :李 芳 指 导 教 师 :谭喜成 副教授 二一年五月 BACHELORS DEGREE THESIS OF WUHAN UNIVERSITY The Design and Implementation of a LBS-based City Management System College: International School of Software Subj

2、ect: Spatial-Informatics mapService.Url = strURL; String mDtable = mapService.PDAGetDutyByTaskType(p_DutyType, mUserName, mPassword, mUserInfo); (2) Web 服务端 PDA.MapService.PDAGetDutyByTaskType: Web 服务将客户端传来数据进行转换,向数据库查询: mTable = “PublicTaskAndCheckedInfo“ /数据库查询条件 mWhere = “PDACheckedUserID=0 and T

3、askStatus=1“ Dim mPubTask As System.Data.DataTable = GetSelectResults(mTable, Nothing, mWhere, mParas) /获取查询结果 24 If mPubTask IsNot Nothing AndAlso mPubTask.Rows.Count 0 Then For Each mItem As DataRow In mPubTask.Rows Dim mRow() As String = mItem(“TaskID“), mItem(“IssueDes“), mItem(“AskFinishedTime“

4、).ToString, mItem(“DealRequest“), mItem(“IssueOrigin“), mItem(“LightNum“), mItem(“SendToPDATime“), mItem(“RecorderName“) p_List.Add(mRow) /添加进列表返回 (3) 数据库连接函数,专门负责,向数据库发送查询请求,获得并返回查询结果,主要代码如下: Dim result As System.Data.DataTable = Nothing Dim mSql As New DBParameter mSql.SqlType = SqlType.SqlSelect

5、mSql.SetTableNames(p_Table) mSql.SetFields(“*“) mSql.SetFields(p_Fields) mSql.WhereSql = p_Where mSql.SetParameters(p_Paras) /设置数据库查询需要的各种参数 If Me.ClientConnection.IClient.IClientBuffer.ExeSql(mServerTab, p_SQL) Then result = p_SQL.DataTable /获取查询结果 通过以上三个步骤,客户端可以实现通过 Web 服务获取服务器端数据库查询结果。 4.2.24.2.2

6、 地图操作 地图操作 地图操作需要用到的缩放、地理坐标与屏幕坐标的转换,都需要涉及到坐标变换的工作。在设计部分,介绍了本文用到的坐标变换的公式,在实现部分,主要以缩放为例,介绍地图操作在程序里面是如何实现的。主要思想是:获得选取框的屏幕坐标边界,转换为地理坐标边界,制作成边界盒,进行 WMS 请求。下面是地 web 服务端地图缩放操作的关键代码: (1) 缩放的代码: public String Zoom(string p_line1, string p_line2, int p_ZoomType, int x1, int x2, int y1, int y2) Geometry.MapEnv

7、elope mOldExtent = new Geometry.MapEnvelope(); mOldExtent.P_XMin = this.XMin ; System.Drawing.Size mWindowSize = new System.Drawing.Size(width, height); . double mwindowXmin = System.Math.Min(x1, x2); /根据画取的矩形框设置缩放的大小 25 System.Drawing.Rectangle mZoomRect = new System.Drawing.Rectangle(); mZoomRect.

8、X = (int)mwindowXmin; mZoomRect.Y = (int)mwindowYmin; mZoomRect.Width = (int)(mwindowXmax - mwindowXmin); mZoomRect.Height = (int)(mwindowYmax - mwindowYmin); Geometry.MapEnvelope mMapExtent; mMapExtent = GetMapEnvelope(mWindowSize, mZoomRect); /获取显示范围边界 switch (p_ZoomType) case 1: /放大的情况 mMapExtent

9、 = GetWindowExtent(mWindowSize, mMapExtent); /比例控制 this.XMax = mMapExtent.P_XMax; this.YMax = mMapExtent.P_YMax; this.XMin = mMapExtent.P_XMin; this.YMin = mMapExtent.P_YMin; /确定地图显示坐标 break; case 2: /缩小的情况 /方法类似 break; return p_line1+ XMin + “,“ + YMin + “,“ + XMax + “,“ + YMax + “ (2) 屏幕框选范围与地图范围转

10、换: public Geometry.MapEnvelope GetMapEnvelope(Size p_WindowSize, Rectangle p_Rectangle) Geometry.MapEnvelope mMapEnvelope = new Geometry.MapEnvelope(); mMapEnvelope.P_XMin = this.XMin + p_Rectangle.Left * (this.XMax - this.XMin) / p_WindowSize.Width; mMapEnvelope.P_XMax = this.XMin + p_Rectangle.Rig

11、ht * (this.XMax - this.XMin) / p_WindowSize.Width; mMapEnvelope.P_YMin = this.YMax - p_Rectangle.Bottom * (this.YMax - this.YMin) / p_WindowSize.Height; mMapEnvelope.P_YMax = this.YMax - p_Rectangle.Top * (this.YMax - this.YMin) / p_WindowSize.Height; return mMapEnvelope; (3) 在实现时,还需要住一个重要的问题,即,框选放大

12、时的比例如果与屏幕比例不匹配,需要做一定的转换处理匹配屏幕的长宽比例。根据选取框的长宽比例,然需要分类处理。调整的原则是,26 将超出比例的部分,两边分别减去一个定量,只取中间部分。由于 PDA 中屏幕长宽比例通常为 1:1,因此,选取框的长宽比大于屏幕比例则意味着长大于宽,下面以这种情况为例,介绍实现代码: double mMapWHB = p_MapEnvelope.width() / p_MapEnvelope.height(); double mWindowWHB = p_WindowSize.Width / p_WindowSize.Height; if (mMapWHB = mWi

13、ndowWHB) double mSubHeight = (p_WindowSize.Height * p_MapEnvelope.width() / p_WindowSize.Width - p_MapEnvelope.height() / 2; mExtent.P_XMin = p_MapEnvelope.P_XMin; mExtent.P_XMax = p_MapEnvelope.P_XMax; mExtent.P_YMin = p_MapEnvelope.P_YMin - mSubHeight; mExtent.P_YMax = p_MapEnvelope.P_YMax + mSubH

14、eight; 4.2.34.2.3 GPS GPS GPS 主要用到的是 GPS 相关的 API,下面是本项目中 GPS 模块应用这些 API 工作的的整个流程的关键代码: (1) GPS 开启: updateDataHandler = new EventHandler(UpdateData); gps.DeviceStateChanged += new DeviceStateChangedEventHandler(gps_DeviceStateChanged); gps.LocationChanged += new LocationChangedEventHandler(gps_Locati

15、onChanged); if (!gps.Opened) gps.Open(); HaveGetGps = true; (2) GPS 将数据传递给 ClsMap 类,使 PDA 可以利用 GPS 获取的坐标进行其他操作,主要实现的方式是设置计时器,每隔一段时间,将 GPS 的数据传递给 ClsMap 类。 4.34.3 系统功能运行界面 系统功能运行界面 系统界面是一个系统的重要部分,下面介绍系统的运行效果: 4.3.14.3.1 登陆和配置 登陆和配置 PDA 登陆界面和配置界面,如图 4.2,图 4.3 所示: 27 图 4.2 PDA 登陆界面 图 4.3 PDA 配置界面 登陆成功后

16、的功能列表界面,如图 4.4 所示: 图 4.4 PDA 功能列表界面 4.3.24.3.2 地图显示与操作 地图显示与操作 28 地图操作与显示界面,如图 4.5,图 4.6,图 4.7 所示: 图 4.5 PDA 地图操作界面 图 4.6 PDA 放大操作效果 图 4.7 PDA 定位效果 4.3.34.3.3 案件数据查看与提交 案件数据查看与提交 首先,在功能列表界面点击我的任务,进入我的任务界面,点击搜索,搜索所有待核查案件,点击案件列表中的一项,查看基本信息,点击定位可在地图上进行定位,点击任务反馈,即进入任务反馈界面,填写反馈信息,点击发送,进入问题上报界面,填写详细信息,点击发送,案件反馈成功。案件查看与提交的流程如图 4.8,图 4.9,图 4.10,图 4.11 所示: 图 4.8 任务列表及详细信息

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号