首页 宋丁丁毕业设计说明书

宋丁丁毕业设计说明书

举报
开通vip

宋丁丁毕业设计说明书山东建筑大学 本科毕业设计说明书 题 目:基于SuperMap的交通救援GPS 实时定位数据采集技术研究 院 (部): 土木工程学院 专 业: 地理信息系统 班 级: 地理062 姓 名: 宋丁丁 学 号: 2006011135 指导教师: 蔡菲 完成日期: 2010年6月 11日 目 录 TOC \o "1-3" \h \z \u 摘 要 II ABSTRACT IV 1.1 本文研究的背景和意义 1 1.1.1 背 景 1 1.1.2 意 义 1 1.2地理信息系统开发方式的种类和比较 2 1.3 全球定位系统...

宋丁丁毕业设计说明书
山东建筑大学 本科毕业设计说明书 题 目:基于SuperMap的交通救援GPS 实时定位数据采集技术研究 院 (部): 土木工程学院 专 业: 地理信息系统 班 级: 地理062 姓 名: 宋丁丁 学 号: 2006011135 指导教师: 蔡菲 完成日期: 2010年6月 11日 目 录 TOC \o "1-3" \h \z \u 摘 要 II ABSTRACT IV 1.1 本文研究的背景和意义 1 1.1.1 背 景 1 1.1.2 意 义 1 1.2地理信息系统开发方式的种类和比较 2 1.3 全球定位系统概述 3 1.3.1 全球定位系统 3 1.3.2全球定位系统的组成及特点 3 1.3.3全球定位系统实时动态技术介绍 4 2.1 开发工具的选择 5 2.1.1 二次开发平台SuperMap 6R 5 2.1.2 二次开发语言Visual C#.NET 5 2.1.3 数据库Microsoft SQL Server 2005 6 2.2 软件体系结构选择 7 2.3通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 的选择 8 2.4 Socket通信技术 9 2.4.1 Socket简介 9 2.4.2 Socket的分类 10 2.4.3 套接字的常用属性 10 2.4.4 用Windows Socket实现网络进程 12 2.4.5 设计中Socket通信的实现 14 3.1开发环境 15 3.2运行环境 15 4.1 数据传输的设计 16 4.1.1 数据传输结构 16 4.1.2 传输GPS数据字符串结构 16 4.2 通信 17 4.2.1 GPS监测终端 18 4.2.2 GPS数据获取中心 21 4.3 数据库更新 25 4.3.1 数据管理 26 4.3.2 GPS数据解析及存储 27 4.4 GPS数据在地图中显示 33 5 结 论 36 谢 辞 37 参考文献 38 摘 要 交通救援系统是为提高政府和公共场所管理部门应对突发事故、事件和灾害的能力而开发的GIS应用系统。GPS可以为交通救援系统提供监测目标的实时定位数据,在系统的运行过程中采取何种技术传输与存储GPS数据对交通救援系统使用者能否及时做出正确决策具有非常大的影响,基于此本文重点进行了交通救援系统GPS实时定位数据采集技术的研究。 本文首先介绍了地理信息系统(GIS)和全球定位系统(GPS)的基本原理,然后详细介绍了Socket通信技术,并对数据库技术和开发工具Visual C#.NET做了简要的说明。交通救援系统的GPS实时定位数据获取设计是基于SuperMap二次开发平台,实现了对GPS实时定位数据的采集、传输、手动或自动存储以及在地图上显示的功能。最后,提出来一种可通过网络远程获取GPS数据的方法,可进一步解决交通救援系统中GPS数据采集的问题。 关键词:地理信息系统;全球定位系统;数据更新;SuperMap;Socket通信技术 Research on the Technology of Acquiring GPS Real-time Data in Emergency Rescue Command for Transportation ABSTRACT Emergency rescue command for transportation system is a GIS application system designed for enhancing the ability of government and management departments of public places to deal with unexpected incidents, events and disasters. GPS can provide the real-time positioning information of focused objects for the emergency rescue command for transportation system. During the operating of this system, the technologies of data transmission and storage have great influence on whether the user makes the right decision according to the data acquired. According to the above, this article focuses on the research of acquiring GPS real-time positioning data in emergency rescue command for transportation system. This article first introduces the basic principles of Geographical Information System (GIS) and Global Positioning System (GPS), then tells the details of the socket communications technology, and briefly introduces database technology and Visual C#.NET. The dynamic data acquisition module in emergency rescue command for transportation system is based on SuperMap second development platform. The module has such functions, the collection, transmission, manipulating or dynamic storage of GPS real-time positioning data, and eventually displaying the data in the map. Finally, a new method of acquiring GPS data to update database via the network is mentioned, which can address the dynamic updating problems of the emergency rescue command for transportation system. Keywords: Geographical Information System; Global Positioning System; Data Update; SuperMap; Socket Communications Technology 1 前 言 地理信息系统(GIS)作为一门交叉学科,其技术体系已渗透到各行各业,并建立起大量的专业应用系统。这些系统功能主要集中于系统采集、管理与统计分析,而这些都是基于数据的,没有现势性好的数据,再谈地理信息系统的功能是毫无意义的即使它功能再强大分析再准确,有时甚至会因为数据的更新不及时而造成决策失误。良好的交通救援系统对于实时数据的更新要求更为严格,对这些数据的分析结果最终关系着维护社会的稳定和保卫人民群众的生命和财产安全。另外数据更新直接决定了一个系统的成败和生命周期。 1.1 本文研究的背景和意义 1.1.1 背 景 随着我国经济的迅速发展,信息化建设迅速展开并发展起来,人们对社会服务行业和部门的完善性、保障性提出了更高的要求,人们希望能在家中就能获得自己想要的信息,希望信息更加形象、直观,希望有一种智能分析系统辅助人们进行决策,节省时间提高效率。地理信息系统(GIS)的引入和发展成为解决这一问题行之有效的工具和手段,各种应用地理信息系统相继建立起来。但由于这些行业的数据往往具有信息来源广、种类多、变化快、信息量大、时空相关性强的特点,数据的实时获取和动态更新成为影响系统性能的关键一环。 全球定位系统(GPS)具有全球性、全天候、连续的精密3维导航与定位能力,而且具有良好的抗干扰性和保密性。近年来,GPS定位技术在我国迅速发展,广泛的应用到了经济建设和科学技术的各个领域。利用GPS获得实时定位数据,可以作为GIS的数据来源。GIS与GPS集成已在定位(旅游、探险)、测量(土地管理、城市规划)、监控导航(车辆船只的动态监控)等方面有了很好的应用。 空间信息系统的建设已由以技术为中心向以数据资源为中心的方向转变。其中如何管理和维护基础空间数据,维护空间数据的现势性和有效性,是空间信息系统数据体系需要解决的重要问题之一。在这种背景下,数据动态获取设计的研究迅速展开。 1.1.2 意 义 数据是地理信息系统(GIS)的血液,是其他一切工作的基础,数据动态获取更新是监测部门的一项必备技术,其目的是实现数据库的实时更新,把握区域最新的整体状况,辅助用户做出决策。GIS系统中数据除了具有时间性和动态性的特点外,还往往具有明显的空间分布特点。因此,进行数据动态获取必须采用强有力的计算机信息技术建立基于整个区域的监测网络。 该设计具有很大的现实意义,对于保持应用地理信息系统的生命力具有重要作用。特别是在灾害监测预报领域,由于各个监测因子(致灾因子)变化经常且无规律,特别是全球气候变化背景下的今天,各种不确定因素使得灾害预报工作开展十分困难,其对于快速做出反应的要求越来越高,高效、及时、准确的数据获取手段是其重要的保障。这就要求对致灾因子进行实时监测,数据动态更新,只有这样才能提高预报的准确及时性,为人们的生产生活提供服务。同时,该设计的设计不仅对于交通救援系统有很大意义,而且对于整个地理信息系统(GIS)在中国的发展和应用具有一定的促进作用,对国内其他相关的研究具有一定的参考价值。 1.2地理信息系统开发方式的种类和比较 GIS根据其内容可分为两大基本类型:一是应用型GIS,以某一专业、领域或工作为主要内容,包括专题地理信息系统和区域综合地理信息系统;二是工具型GIS,也就是GIS工具软件包;如,MapInfo、ArcGIS等,具有空间数据输入、存储、处理、分析和输出等GIS基本功能。一般而言,应用型GIS开发有三种主要的实现方式: ⑴独立开发,独立开发是指不依赖于任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如Visual C++、DeIPhi等,在一定的操作系统平台上编程实现。 ⑵单纯二次开发,单纯二次开发是指完全借助GIS工具软件提供的开发语言进行应用系统开发。GIS工具软件大多提供了可供用户进行二次开发的宏语言,如ESRI的ArcView提供了Avenue语言,MapInfo Professional提供了MapBasic语言等。 ⑶集成式二次开发,集成二次开发是指利用专业的GIS工具软件,如ArcView、MapInfo等,实现GIS的基本功能,以通用软件开发工具如DeIPhi、Visual C++、Visual Basic、Power Builder等为开发工具,进行二者的集成开发。 由于独立开发难度太大,所需时间长,单纯二次开发受GIS工具提供的编程语言的限制;因此,结合GIS工具软件与当今可视化开发语言的集成二次开发方式就成为GIS应用开发的主流。它的优点是既可以充分利用GIS工具软件对空间数据库的管理、分析功能,又可以利用其他可视化开发语言具有的高效、方便等编程优点,集二者之所长,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的外观效果,更强大的数据库功能,并且具有可靠性好、易于移植、便于维护等特点。 1.3 全球定位系统概述 1.3.1 全球定位系统 全球定位系统(Global Positioning System---GPS)是美国国防部主要为满足军事部门对海上、陆地和空中设施进行高精度导航和定位的要求而建立的。GPS作为新一代卫星导航与定位系统,不仅具有全球性、全天候、连续的精密3维导航与定位能力,而且具有良好的抗干扰性和保密性。目前,GPS精密定位技术已经广泛地渗透到了经济建设和科学技术的许多领域。它在大地测量学及其相关学科领域,如地球动力学、海洋大地测量学、天文学、地球物理勘探、资源勘查、航空与卫星遥感、工程测量及工程变形监测、运动目标的测速以及精密时间传递等方面的广泛应用,充分地显示了这一卫星定位技术的高精度与高效益。 1.3.2全球定位系统的组成及特点 全球定位系统(GPS)主要有三大组成部分,即空间星座部分、地面监控部分和用户设备部分。GPS空间星座部分由24颗卫星组成,其中包括3颗备用卫星。卫星分布在6个轨道面内,每个轨道面上分布有4颗卫星。GPS地面监控部分,目前主要由分布在全球的5个地面站所组成,其中包括卫星监测站、主控站和信息注入站。GPS用户设备部分主要是GPS接收机、车载GPS等设备,用户设备的主要任务是,接收GPS卫星发射的无线电信号,以获取必要的定位信息及观测量,并经数据处理而完成定位工作。 目前,美国的GPS、俄罗斯的GLONASS与欧盟的“伽利略”导航定位系统,已构成独立的三大全球卫星定位系统。GPS相对于其他导航系统的特点有: ⑴全球地面连续覆盖。由于GPS卫星的数目较多,且分布合理,所以地球上任何地点,均可连续的同步观测到至少4颗卫星。从而保障了全球、全天候连续地3维定位; ⑵功能多,精度高。GPS可为各类用户连续地提供动态目标的3维位置、3维速度和时间信息。 ⑶实时定位。利用GPS定位系统导航,可以实时地确定运动目标的3维位置和速度,由此既可保障运动载体沿预定航线的运行,也可实时地监视和修正航行路线,以及选择最佳的航线。 ⑷应用广泛。随着GPS定位技术的发展,其应用的领域在不断拓宽。目前,在导航方面,它不仅已广泛地应用于海上、空中和陆地运动目标的导航,而且,在运动目标的监控与管理,以及运动目标的报警与救援等方面,也已获得了成功的应用;在测量方面,这一定位技术在大地测量,工程测量,工程与地壳变形监测、地籍测量、航空摄影测量和海洋测绘等各个领域的应用,已甚为普遍。 1.3.3全球定位系统实时动态技术介绍 实时动态(Real Time Kinematic--RTK)测量系统,是GPS测量技术与数据传输技术相结合,而构成的组合系统。它是GPS测量技术发展中的一个新的突破; RTK测量技术,是以载波相位观测量为根据的实时差分GPS测量技术。实时动态测量的基本思想是,在GPS基准站上安置一台GPS接收机,对所有可见GPS卫星进行连续地观测,并将其观测数据,通过无线电传输设备,实时地发送给用户观测站。在用户观测站上,GPS接收机在接收GPS卫星信号的同时,通过无线电接收设备,接收基准站传输的观测数据,然后根据相对定位的原理,实时地计算并显示用户站的3维坐标及其经度。 2 系统 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 选择 2.1 开发工具的选择 2.1.1 二次开发平台SuperMap 6R 目前,国外主流的GIS组件产品有全球最大的GIS厂商ESRI推出的Map Objects、Arc Objects、Arc Engine,桌面GIS厂商MapInfo公司推出的MapX。国内有北京超图软件有限公司推出的Super Map Objects 6,武汉中地信息工程有限公司的MapGIS组件、武汉吉奥信息工程技术有限公司的GeoMap等。本系统采用的是基于北京超图软件有限公司SuperMap 6R 的二次开发。  超图软件是中国和亚洲领先的地理信息系统(Geographic Information System, GIS)平台软件企业,主要从事GIS基础平台和应用平台软件的研究、开发、推广和服务。超图软件自1997年成立以来,始终坚持自主创新,研发出具有自主知识产权的、面向专业应用的多种大型GIS基础平台软件和多种应用平台软件—SuperMap GIS系列。该系列软件在高性能跨平台、海量空间数据管理和多重服务聚合等方面具有核心技术竞争优势,先后获得2008年度“信息产业重大发明奖”、2004年度“国家科学技术进步”二等奖、2003年度“北京市科学技术奖”一等奖等6项国家和省部级奖励,还获得3项“国家重点新产品”认定。SuperMap GIS系列软件已经广泛应用于数字城市、国土、水利、环保、海洋、测绘、农业、林业、应急、交通、通信、能源、市政管线、金融、通信、电力、自来水、石油石化等数十个行业,在中国大陆和港、澳、台地区构建了数千个大型成功应用案例。  整个二次开发平台都是基于SuperMap 6R基础平台构建的,由基础平台提供基础组件库,二次开发平台提供不同开发平台,每种平台提供不同的开发模式,在二次开发平台之上构建的应用可以是独立的GIS应用,也可以综合各种平台的应用而集成一个复杂的系统。 由于SuperMap已经成为亚洲最大的GIS软件平台提供商,有着广泛的应用背景,目前国内很多应用地理信息系统均选用 SuperMap作为平台,所有本系统采用SuperMap作为二次开发平台。 2.1.2 二次开发语言Visual C#.NET 传统GIS 一般都提供一套独立的二次开发语言。这既是GIS 基础软件开发者的负担,同时也是用户学习上的负担;且使用系统所提供的二次开发语言,开发能力受到限制,难以处理复杂问题。组件式GIS 不需要专门的GIS 二次开发语言,只需实现GIS 的基本功能函数,按照ActiveX 控件 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 开发接口,有利于减轻GIS 软件开发者的负担,而且增强了GIS 软件的可扩展性。组件式GIS 的用户不必掌握专门的GIS 开发语言,只需熟悉基于Windows 平台的通用集成开发环境,以及组件式GIS 各个控件的属性、方法和事件,就可以完成应用系统的开发和集成。组件式GIS 控件可以跨语言使用,目前,可供选择的开发环境很多,如Visual C++、 Visual Basic、VB .NET、C#、Delphi 等。其中C#是一种安全的、稳定的、简单的,由C和C++衍生出来的面向对象的编程语言,它充分利用了.NET框架的优点,如严格的类型安全、版本控制及无用信息收集等,可以说,C#是开发.NET框架应用程序最好的语言之一。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。基于组件式开发的考虑,本系统选择C#作为开发语言,并选择Visual Studio .NET2008作为开发环境。 2.1.3 数据库Microsoft SQL Server 2005 SQL Server是Microsoft公司推出的功能强大的关系型网络数据库管理系统,是BackOffice和Windows DNA(Distributed internet Application)架构下的服务器应用系统之一。SQL Server具有分布式数据库和数据仓库功能,支持客户机/服务器结构,并能够进行分布式事务处理和联机分析处理。SQL Server具有可伸缩性,可管理从小型至大型的各种规模的数据库。这使得它成为能适应任何规模组织需求的数据库管理系统。同时,SQL Server具有强大的数据库管理功能,它提供了丰富的管理工具以支持数据的安全性管理、完整性管理和作业管理。SQL Server还具有强大的网络功能,支持发布Web页面和接收电子邮件。 SQL Server在数据库领域最重要的领先和创新包括以下几方面: ⑴第一个能够缩放以适应从便携式移动计算到企业级应用的各种规模的数据库。尽管应用环境差别悬殊,但是SQL Server使用的是同一个代码库;因此,从根本上保证了不同应用环境的数据库之间100%的兼容性; ⑵第一个支持自配置和自调整的数据库; ⑶第一个和联机分析处理(Online Analyze Process,OLAP)服务器集成的数据库; ⑷第一个与数据传送服务(Data Transfer Service,DTS)继承的数据库; ⑸第一个提供多服务器管理以适应大量服务器应用的数据库; ⑹到目前为止最广泛地支持复制任意类型的数据库; ⑺与目前世界上装机量最大的服务器操作系统Windows NT和Microsoft Back Office服务器家族的最佳集成; ⑻采用Microsoft的全局数据存取(Universal Data Access)策略实现了对大量信息资源的高性能存取。 由于地理空间数据的特征,目前主流的GIS软件多采用SQL作为数据库并提供了专门的管理组件和搜索引擎,如ArcGIS的Arc SDE等,考虑到设计的通用性,决定采用SQL作为数据库。 SQL Server 2005 Express Edition 是 MSDE 的下一个版本,它是免费、易于使用、可嵌入的 SQLServer2005 轻型版本。可免费下载、重新发布、嵌入,便于新的开发人员立即使用。SQL Server Express 包含强大的功能,可以轻松地管理数据库。本文使用其中的SQL Server Management Studio Express来管理数据。 2.2 软件体系结构选择 当前软件系统流行的体系结构是客户机/服务器(Client/Server,C/S)结构和浏览器/服务器(Browser/Server,B/S)结构。 ⑴C/S体系结构 C/S结构起源于80年代,是目前普遍采用的一种数据库开发和应用模式,网络技术的发展和广泛应用为实现C/S提供了技术保证和支持。它是一个开放的多平台协同处理的计算机应用模式,能适应企业现代化的信息处理和信息服务的需要。客户机/服务器模型如图2.1所示。 图2.1客户机/服务器模型 C/S结构的应用系统具有高性能、高效率、高可靠性、开放、易扩充、可伸缩等特点,适应了当前信息处理的需求,为开发企业级的信息系统提供了良好的环境。 ⑵B/S体系结构 B/S结构是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现。B/S结构主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。具有使用简单、易于维护、兼容性好、易于扩展、信息共享度高等特点。 本文交通救援系统数据动态获取设计的设计目前采用C/S的体系结构,今后可扩展成C/S加B/S的复合结构,以扩展设计的应用范围。 2.3通信协议的选择 Internet在传输层上有两个主要协议,TCP协议和UDP协议。TCP协议是面向连接的,UDP是无连接协议,两个协议间的差别也是基于该特征的,下面从通信方式和报文格式两个方面介绍这两个协议间较重要的差别。 ⑴通信方式的区别 TCP传输层协议实现的是端到端(peer-to-peer)通信,在端主机上实现通信,并且屏蔽层网络提供的服务质量的差别,为应用程序提供稳定可靠的服务。TCP对上层提供面向连接可靠的通信服务。但TCP只支持一对一的通信,用“三次握手”的方式建立连接,通过发送方的序号和接收方的序号之和来确立一条连接。用户数据报协议UDP是无连接传输层协议,提供应用程序之间传送数据报的基本机制,在使用UDP协议进行通信时不需要使用连接,虽然这样连接简便但数据传输的可靠性不能保证。另外,UDP是基于数据报的,所有有消息边界。而TCP则是基于流的,所以没有消息边界,有必要进行保护消息边界的处理。 ⑵报文格式的区别 TCP协议的源端口和目的端口接收的报文格式都是16位,分别表示发送方和接收方的端口号。我们知道端口号和IP地址构成套接字(socket)地址的主要内容。源端和目的端的套接字合起来唯一地表示一条连接。TCP协议的序列号和确认号是32位的无符号整数,其中序列号表示数据部分第一个字节的序列号,而确认号表示该数据报的接收者希望对方发送的下一个字节的序号。UDP报文称为一个用户数据报,它分为两部分:头部和数据区。报文头部中包含有源端口和目的端口、报文长度以及UDP检验。 考虑到TCP协议传输数据的可靠性,所以本文交通救援GPS数据动态获取系统采用TCP协议作为网络通信协议。 2.4 Socket通信技术 2.4.1 Socket简介 Socket 是建立在传输层协议(主要是 TCP 和 UDP )上的一种套接字 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 。它定义两台计算机间进行通信的规范(也是一种编程规范),如果说两台计算机是利用一个“通道”进行通信,那么这个“通道”的两端就是两个套接字。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了 TCP 协议软件和实现了套接字规范的计算机之间的通信成为可能。 Socket 最初是由加利福尼亚大学 Berkeley 学院为 UNIX 操作系统开发的网络通信接口,随着 UNIX 操作系统的广泛使用,套接字成为当前最流行的网络通信应用程序接口之一。Berkeley Socket 只能用于 UNIX 操作系统,它不能支持DOS 操作系统和 Microsoft Windows 环境。九十年代初,由Sun Microsystems、JSBCorporation、FTP software、Micro dyne 和Microsoft 等几家公司共同参与制定了一套标准,即 Windows Socket 规范。他们试图使Windows下Socket 程序设计标准化。在实际使用过程中,发现了一些问题;因此,由Martin Hall领导的Windows Socket委员会于1993年推出1.1版规范。 Windows Socket 是 Microsoft Windows 的网络程序设计接口,它是从Berkeley Socket 扩展而来的。Windows Socket 在继承了 Berkeley Socket 主要特征的基础上,又对它进行了重要扩充。这些扩充主要是提供了一些异步函数,并增加了符合 Windows 消息驱动特性的网络事件异步选择机制。这些扩充有利于应用程序开发者编制符合 Windows 编程模式的软件,它使在 Windows 下开发高性能的网络程序成为可能。 2.4.2 Socket的分类 .NET的Socket 提供下列三种类型套接字: ⑴流式套接字(STREAM) 该类套接字提供了一个面向连接、可靠的、数据无差错、无重复的数据发送服务。而且发送的数据是按顺序接收的。所有利用该套接字进行传递的数据均被视为连续的字节流并且无长度限制。这对数据的稳定性、正确性和发送/接收顺序要求严格的应用十分适用,TCP 协议使用该类接口。但其对线路的占用率相对提高。流式套接字的实现屡见不鲜,如远程登录(TELNET)、文件传输协议(FTP)等均使用流式套接字。 ⑵数据报式套接字(DGRAM) 数据报式套接字提供了面向无连接的服务,它独立的数据包形式发送数据(数据包长度不能大于 32KB),不提供正确性检查,也不保证各数据包的发送顺序;因此,可能出现数据的重发、丢失等现象,并且接收顺序由具体路由决定。然而,数据报的实现对网络线路占用率较低。NFS(网络文件系统)即是采用此类套接字,在 TCP/IP 协议族中 UDP (User Datagram Protocol)也使用该类接口。 ⑶原始套接字(RAW) 原始套接字一般不会出现在高级网络接口的实现中,因为它是直接针对协议的较低层(如 IP、TCP、UDP 等)直接访问的。常用于检验新的协议实现或访问现有服务中配置的新设备,一般不提倡它的直接应用。 应用程序一般仅在同一类的套接字间通讯。不过只要底层的通讯协议允许,不同类型的套接字间也照样可以通讯。 2.4.3 套接字的常用属性 ⑴Socket类常用属性 下面将详细介绍和网络通信有关的Socket类中的一些属性。 ①Blocking属性 它表示套接字是否处于阻塞的状态,如果这个套接字当前处于阻塞状态,并且调用了这个套接字里的一个需要花一定时间来执行的方法,那么应用程序将阻塞,直到请求的操作完成后才解除阻塞。 如果希望应用程序在请求套接字的操作尚未完成的情况下也可以继续执行,有必要将Blocking属性更改为false。 ②Connected属性 这个属性可以反应出操作的连接状态,Connected属性获取截止到最后的I/O操作时 Socket的连接状态。从取值的情况来看,当它返回false时,表明Socket要么从未连接,要么已断开连接。 ③LocalEndPoint属性 这个属性可以用来表述本机的终结点,即IP地址与端口号的组合。 ④RemoteEndPoint属性 如果使用面向连接的协议,则RemoteEndPoint属性将获取包含Socket连接到的远程IP地址和端口号EndPoint。而如果当前使用的是无连接的协议,则RemoteEndPoint包含将要和Socket通信的默认远程IP地址和端口号。RemoteEndPoint是在调用Accept或Connect之后设置。如果试图提前访问该属性,那么RemoteEndPoint将引发SocketException。 ⑵Socket类常用方法 ① Socket(AddressFamily af,SocketType st,ProtocolType pt) 创建套接字,并且返回新建套接字句柄st。对于客户端来说,也是在本地创建套接字。 ② bind(IPEndPoint iep) 对于服务器方的程序来说,建立的套接字必须要绑定到本地计算机的IP地址和端口号上。 ③ listen( int backlog) 这个方法用于等待客户端发出连接的请求,待其执行完则说明服务器方已经准备好接受来自客户端的连接。其中的backlog参数是指用户的连接数,超过连接数的其他客户不得与服务器方进一步通信。 ④ accept() 它的功能是,当有新客户进行连接时返回一个新的套接字句柄。 ⑤ connect(IPEndPoint iep) 此方法是客户机独有的,它负责把自己新创建的套接字与本地地址相绑定,与bind()方法相对应。 ⑥ Send()/Receive() 这两个方法在完成了客户端的连接后,就可以通过它们进行数据传送了。 2.4.4 用Windows Socket实现网络进程 不论何种套接字编程,均采用客户机/服务器方式,先分别生成服务进程和客户进程,在通信前必须创建各自的套接字以便建立连接,然后对相应的套接字进行“读”、“写”操作,实现信息的交换。 ⑴面向连接的套接字 面向连接的套接字一般是针对TCP协议来建立两端之间的通信。只要建立了连接,就可以在设备之间进行可靠的数据传送。要通过互联网进行通信,至少需要一对套接字,一个运行与客户机端,称之为ClientSocket;另一个运行与服务器端,称之为ServerSocket。 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接部分可以分为三个步骤:服务器监听,客户端请求,连接确认。 基于客户机/服务器结构的面向连接的套接字工作流程图如图 2.2 所示。其说明了套接字在工作流程中的重要步骤: ①通过套接字的构造函数方法创建套接字对象并与本地的终结点进行绑定。 ②在端口上使用listen方法侦听是否有连接请求,如果侦听到连接请求则开始准备连接。 ③Accept方法则会从客户端介入连接,建立连接后,accept方法会返回一个新的套接字,如果没有连接请求则进入循环阻塞,直到收到连接请求才开始进行连接。 ④待数据传送结束后,双方使用shutdown方法释放连接,接着调用close()关闭套接字。 图 2.2 面向连接的套接字工作流程图 ⑵面向无连接的套接字 面向无连接的套接字并不需要像面向连接的方式那样发送连接信息。通常,UDP协议就是基于面向无连接的套接字。 相对于有连接的方式,无连接有如下几点区别: ① 都是采用了bind()方法做了对本地地址和套接字的绑定。这里强调一下,只有正确的完成了绑定,才能进行下面的数据传送。 ②由于是面向无连接的方式,所以不需要向之前那样建立连接,可以在绑定完成之后即开始传输数据。 ③无连接方式采用SendTo方法和ReceiveFrom方法,这一点要和面向连接方式区分开来,因为无连接方式不进行连接,所以一定要指定目标主机的地址。这是一定要注意的。 ④最后只要释放连接,关闭套接字即可。 面向无连接的套接字工作流程图如图 2.3 所示。 图 2.3 面向无连接的套接字工作流程图 2.4.5 设计中Socket通信的实现 在数据动态获取设计中的 Socket 通讯采用 Visual C# 编程,采用TCP传输协议使用 Winsock控件。在服务器端添加一个 Winsock 控件,并对 Winsock 控件设置其端口号和绑定一个套接字到本机的地址;将 Winsock 控件初始化 Socket连接,将 Winsock 组件设置成侦听模式,随时侦测是否有连接请求。如果服务器接受了客户程序的连接请求,则触发 Connection Request 事件,然后可用Data Arrival 收发数据。 3开发与运行环境 3.1开发环境 硬件配置 计算机:满足下面软件的硬件需求即可 软件配置 操作系统:Windows 7中文版 集成开发程序:Visual C#.NET 数据库管理系统:SQL Server 2005 EXPRESS 3.2运行环境 硬件配置 其他无特殊要求,满足相应地理信息系统和数据获取硬件需要即可 软件配置 操作系统:无特殊要求,满足相应地理信息系统需要即可 数据库管理系统:SQL Server 2005 EXPRESS 4 GPS动态数据获取关键技术实现及主要代码 实时获取监测信息,将信息更新到SQL数据库,以服务于交通救援系统。监测终端利用GPS接收机、车载GPS等数据获取手段获取实时数据,将这些数据进行预处理并进行格式化随时等待数据获取中心的连接。数据获取中心可自主决定连接哪一个或哪几个监测终端,当连接后监测终端即将数据实时传输给数据获取中心,数据获取中心将接收到的GPS数据字符串进行解析,然后写入SQL数据库,更新监测对象的 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 。从而实现数据动态获取更新的功能。 4.1 数据传输的设计 由于GIS应用系统中数据除了具有时间性和动态性的特点外,还往往具有明显的空间分布特点。另外,网络通信功能分散化是在线状态监测的发展趋势,因此网络通信功能是GIS数据获取必不可少的功能。考虑到这些因素设计选择TCP传输协议通过Windows Socket编程实现数据的通信功能。若通过无线通讯网络进行数据传输,还可实现对移动对象的跟踪监控。 4.1.1 数据传输结构 设计的数据传输结构图如图4.1所示。 图 4.1 数据动态获取数据传输结构图 4.1.2 传输GPS数据字符串结构 车辆实时数据采集是根据车辆运动过程中车载单元(GPS接收机)传送的实时信号进行接收和解码。目前,许多GPS厂商遵循NMEA0183协议与计算机通信,串行通信参数为: 波特率=4800 数据位=8位 停止位=1位 无奇偶校验。 在这里,GPS输出数据格式采用RMC数据句型,形式如下: ...$GPRMC,204148,A,3043.4531,N,12436.2514,E,57.12,150904,*5D... 其中:GP为信息来源,RMC为句型识别符,其后依次为UTC时间(格式为hhmmss)、GPS状态(A为定位状态,V为导航状态)、纬度(前两位为度,后七位为分,且精确到小数点后四位)、纬度符号(N或S)、经度(前三位为度,后七位为分,且精确到小数点后四位)、经度符号(E或W)、速率(单位为公里,连小数点共五位)、UTC日期(格式为ddmmyy)和校验码。为回车控制符,为换行控制符。 字符串结构为监测数据进行传输和解析的格式。传输的数据必须严格按照此格式,以便与数据库中存储表的字段项对应,分隔符“,”是英文状态下输入的,若错写成中文的逗号就会出错,后期可以处理成非经常用的符号作为分隔,在监测端应可自动分割。以后扩展可做成数据库字段结构格式自适应。 4.2 通信 设计选择面向连接的流式套接字进行通信,因为其提供的是可靠的、数据无差错、无重复的数据传输服务,数据传输稳定性、正确性高。通信流程图如图4.2所示。 图 4.2通信流程图 4.2.1 GPS监测终端 监测终端是在被监测对象处运行,负责获取监测对象实时数据并按预定格式传输给数据获取中心。 监测端程序运行在各个监测端的记算机上,监测端程序输入本机IP地址作为服务器建立服务等待数据获取中心的连接。在监测端获得的GPS数据通过它进行预处理、编码传送给监测端。目前试验是手动输入一个监测端获取的GPS数据,点击按钮“发送数据”发送。实际中可与监测传感器供应商提供的组件进行嵌入式开发,完成监测字段的自动生成;另外,各个监测终端之间也可进行通信。在以后可改进成本机IP自动识别,而不用手动输入。 在一台计算机上进行模拟,同时运行GPS监测终端程序和GPS数据获取中心程序。在监测端输入服务器IP地址(设为127.0.0.2)和服务器端口号(设为5555)建立服务等待连接。 点击“建立服务”按钮后,运行界面如图4.3所示。 图 4.3 GPS监测终端 主要代码如下: using System.Net; using System.Net.Sockets; private void AcceptConnection() { //根据DNS协议解析IP地址 IPAddress[] ip=Dns.GetHostAddresses(textBox1 .Text ); listener=new TcpListener(ip[0],51888); listener.Start(); while (isExit==false) { try { allDone.Reset(); AsyncCallback callback = new AsyncCallback(AcceptTcpClientCallBack); listBox1 .Invoke (setlistboxcallback ,"开始等待连接"); listener .BeginAcceptTcpClient(callback ,listener ); allDone .WaitOne(); } catch (Exception e) { listBox1 .Invoke (setlistboxcallback ,e.Message ); break ; } finally { } } public void AcceptTcpClientCallBack(IAsyncResult iar) { try { allDone.Set(); TcpListener mylistener = (TcpListener)iar.AsyncState; TcpClient client = mylistener.EndAcceptTcpClient(iar); listBox1.Invoke(setlistboxcallback, "已接受连接:" + client.Client.RemoteEndPoint); //listBox1.Items.Add("已接受连接:"+client.Client.RemoveEndPoint); comboBox1.Invoke(setcomboboxcallback, client.Client.RemoteEndPoint.ToString()); DataReadWrite datareadwrite = new DataReadWrite(client); clientlist.Add(datareadwrite); SendString(datareadwrite, "监测端已接受连接"); datareadwrite.ns.BeginRead(datareadwrite.read, 0, datareadwrite.read.Length,ReadCallBack, datareadwrite); } catch (Exception e) { listBox1.Invoke(setlistboxcallback, e.Message); return; } finally { } } 4.2.2 GPS数据获取中心 数据获取中心负责接收监测端传来的GPS数据进行解析后写入SQL数据库,并可以当即显示查看存入的数据。其可输入指定的IP地址选择连接监测端获取数据,进行主动监测。 程序运行后,可根据实际需要输入要进行数据获取的监测对象事先分配的IP地址,点击“连接”按钮,连接成功后即可实时接收监测端GPS数据的获取和更新,这样就实现了主动监测。监测端点独立建立连接服务(等待数据获取中心的连接),数据获取中心根据实际进行选择性连接或全部连接获得监测端的数据。 在此计算机上,运行交通救援系统程序,运行界面如图4.4所示。 图4.4 交通救援GPS数据实时采集与显示界面 在交通救援系统窗体中,打开济南地图,如图4.5、4.6所示。 图4.5 打开工作空间 图4.6 打开济南地图 点击“GPS 数据”中的“数据获取”进入GPS数据获取中心界面,如图4.7所示。 图4.7 获取数据 弹出GPS数据获取中心界面,在此界面输入要连接的服务器IP地址(127.0.0.2)和服务器端口号(5555),点击“连接”按钮,如图4.8所示。 图 4.8 GPS数据获取中心 主要代码如下: using System.Net; using System.Net.Sockets; private void RequestCallBack(IAsyncResult iar) { allDone.Set(); try { client = (TcpClient)iar.AsyncState; client.EndConnect(iar ); listBox1.Invoke(setlistboxcallback ,string .Format ("与监测端{0}连接成功",client .Client .RemoteEndPoint)); ns=client .GetStream(); DataRead dataRead=new DataRead (ns,client .ReceiveBufferSize ); ns .BeginRead (dataRead .msg ,0,dataRead .msg .Length ,ReadCallBack,dataRead ); } catch (Exception e) { listBox1 .Invoke (setlistboxcallback ,e.Message ); return ; } finally { } } 4.3 数据库更新 数据库选择了现在主流GIS平台软件所支持和为GIS应用系统经常选用的SQL SERVER数据库作为数据存储和管理的平台。这样就提高了设计的通用性。在下一步的工作中可考虑增加对ACCESS数据库和.dbf文件的支持,这样使该设计满足小型地理信息系统数据更新的需要,进一步提高设计的通用性。 在SQL数据库中新建一个存储获取的GPS数据的数据库,其名为GPS,然后在此数据库中新建表,其名为gpsDATA,表结构是按照获取的GPS数据的格式设计的,包括ID、句型标识符、UTC时间、GPS状态、纬度、纬度符号、经度、经度符号、速率、方向、日期、磁极变量、度数、检查位14个字段。数据库中表的结构中设有ID字段作为关键字,对其他字段没有任何限制(包括句型标识符,UTC时间,GPS状态,纬度,纬度符号,经度,经度符号,速率,方向,日期,磁极变量,度数,检查位等等),对哪些字段更新在传输字段中就可完全体现出来,而无须另作更改。程序运行过程中,在与数据库连接后,获取的GPS数据将自动存入SQL数据库中。在其它应用中数据库的结构可按具体的应用系统为标准设置,数据库设置如图4.9所示。 图 4.9 数据动态获取数据库结构图 由于前面在进行传输字串结构设计时考虑到数据更新的灵活性,实现了对数据库数据记录属性项的选择性更新功能。即数据库一条记录中可以不对所有的字段进行更新,而是选择性的更新。另外,考虑到实际工作中同一个监测对象在不同时刻并不是所有的监测字段值都发生变化,不同监测对象(即使是同类对象)监测的属性字段也很可能不同,采用上面的传输字串结构设计即可解决这个问题,实现针对性的数据获取更新,这样利于减少传输数据量,减轻服务器的负担。 4.3.1 数据管理 设计在数据获取中心提供了简单的SQL数据库管理功能,可实现对SQL数据库中数据的显示,如图4.10所示。 图4.10 数据管理 主要代码如下: private void Form2_Load(object sender, EventArgs e) { //创建数据连接对象 string cs = "server=localhost;uid=sa;pwd=sa;database=GPS"; SqlConnection conn = new SqlConnection(cs); SqlCommand cmd = new SqlCommand("SELECT * FROM gpsDATA", conn); sda = new SqlDataAdapter(cmd); SqlCommandBuilder scb = new SqlCommandBuilder(sda); ds = new DataSet();//创建数据集 sda.Fill(ds,"gpsDATA");//填充数据集 bindingSource1.DataSource = ds.Tables[0];//附加数据源 dataGridView1.DataSource = bindingSource1;//绑定控件 } 4.3.2 GPS数据解析及存储 本部分实现了对GPS数据的解析及其自动存储,是本设计的重点。 通过数据存储方式选择手动存储和自动存储,手动存储是当监测端传输一条GPS数据,用户手动将其存入数据库中;自动存储是用户设定读取GPS数据需要的时间间隔的大小,系统每隔用户定义的一段时间来读取传输来的GPS数据,当无GPS数据传输来时,系统自动进入下一个时间间隔内。自动存储方式大大减轻了数据监测中心的负担提高了监测效率,还有个好处就是可以对敏感监测对象锁定进行跟踪监测,时刻了解它的最新情况。在自动存储中利用timer控件的Enable属性,来控制循环。尤其当无GPS数据传输时,用到此属性,先使timer控件的Enable属性为false,再使其为true,这样可以使其连续循环。 GPS监测终端与GPS数据获取中心已经建立连接,然后进行GPS数据的传输。在GPS监测端人工输入一条GPS数据,界面如图4.11所示。 图4.11 终端传输数据 然后,点击“发送“按钮就可以在GPS数据获取中心接收到GPS数据。运行后GPS数据获取中心的界面如图4.12所示。 图4.12 获取GPS数据 在GPS数据获取中心界面中,点击“手动存储”,程序会将这条信息存入数据库中。如果想让程序自动存储,需点击“自动存储”,这是用户自定义时间间隔来存取GPS数据,故用户需先在“先输入时间间隔”中输入时间间隔然后点击“自动存储”,这样程序就在规定的时间间隔内将传输来的GPS数据存入数据库中,实验前数据库如图4.13所示。 图 4.13 手动存储前的数据 点击“手动存储”,查看数据库如图4.14所示。 图4
本文档为【宋丁丁毕业设计说明书】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_000136
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:43
分类:互联网
上传时间:2011-04-16
浏览量:117