基于ARCGIS公交车辆轨迹查询 毕业设计.doc_第1页
基于ARCGIS公交车辆轨迹查询 毕业设计.doc_第2页
基于ARCGIS公交车辆轨迹查询 毕业设计.doc_第3页
基于ARCGIS公交车辆轨迹查询 毕业设计.doc_第4页
基于ARCGIS公交车辆轨迹查询 毕业设计.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录 第一章 绪论 1 1.1 研究背景 .1 1.2 研究目的与意义 .1 第二章 地理信息系统(gis)技术 3 2.1 gis 概念及组成 3 2.2 gis 在车辆监控系统中的作用 .4 第三章 系统框架的设计与实现 5 3.1 系统设计与构想 .5 3.2 系统开发环境 6 3.3 数据库 .6 3.3.1 三层架构 6 3.3.2 数据库设计 7 3.3.3 数据库选择 8 3.3.4 数据表设计 9 3.3.5 信息管理与查询功能模块 .10 3.4 gis 功能模块 14 3.4.1 轨迹查询显示 14 3.4.2 实体对象属性信息查询 .18 第四章 结论 20 附录 a.21 附录 b.27 参考文献 .31 摘 要 随着越来越多的交通事故的发生,加强交通监管将显得尤为重要。根据车辆的行车信息进行车 辆轨迹查询将在事故后续处理中发挥重要作用。为此采用 arcgis engine 以及 sql server 数据库 技术,开发出一个基于 vs2008 平台的公交车辆轨迹查询功能模块。通过三层架构架构思想进行用户 与数据库之间各种数据信息的交融,实现对公司运营状况的妥善管理和不同时间段的公交车辆历史 轨迹的查询。这些功能除了在交通监管中的应用,它还可以在森林防火、运钞车监护、犯罪嫌疑车 辆监控也有着很好的实用性。 关键字:arcgis engine ;sql server;轨迹查询 abstract with the growing number of traffic accidents, its essential to reinforce the traffic supervision .realizing vehicle track playback on the basis of the driving information will play an important role in the further treatment of an accident. for it to use the arcgis engine and sql server database technology to developed a query function model of public transport vehicles track based on vs2008 platform . through the ideas of three-tier architecture ,which blends a variety of data information between the user and the database to achieve the proper management of the operations of the company and query the historical trajectory of public transport vehicles at different periods of time . besides the supervision of transport, it was also useful in the forest fire prevention, bank vehicles guardianship, criminal vehicle monitoring. keywords: arcgis engine; sql server; trajectory query 1 第一章 绪论 1.1 研究背景 在第十一届全国人民代表大会第四次会议上提出的十二五规划中,表示将继续完善产业发展政 策,争取把地理信息产业纳入国家战略性新兴产业规划。作为地理信息产业的重要支持,地理信息 系统(gis ) 就将作为一个重要的技术手段推动地理信息产业的蓬勃发展,更好更快的实现十二五规 划。 地理信息系统是一种专门处理地理空间数据的计算机系统与技术,这种技术使地图这种独特的 视觉化效果和地理分析功能集成在一起,为人们提供决策支持手段。地理信息系统(gis) 具有空间 数据结构和有效的数据集成、独特的地理空间分析能力、快速的空间定位搜索和复杂的空间查询功 能、强大的图形生成的可视化表达手段以及地理过程的烟花模拟和空间决策支持等功能。引用 esri 公司的一句宣传语:没有你做不到的,只有你想不到的,地理信息系统也具有如此的魅力。 近些年来,在科学发展观理论的指导下,人们的生活水平和科学技术发展的程度达到了一个新 的高度,越来越多的人们拥有了自己的汽车。但随之而来的交通事故的频发,为了处理好这些实际 问题,智能导航系统将会应用的越来越普遍。车辆轨迹查询与回放系统作为智能导航重要的子系统, 它能向人们展示被监督车辆在具体时间内的具体行程以及行车信息。因此,车辆轨迹查询回放系统 在森林防火、运钞车监护、犯罪嫌疑车辆监控、交警巡查等有着非常重要的应用。对于这一系统的 成功实现,有着很强的实用性,并能拓展地理信息系统的应用方向。 1.2 研究目的与意义 目前,随着经济的发展和人民生活水平的提高,私家车也在逐渐增多。但是伴随着私家车的无 限量的扩张,我们的交通就会越来越拥挤从而导致人们无法通行,路上耗费的时间让我们越来越无 法承受。此外,我们身边的环境问题逐渐成为人们心中的一大困扰,这样结果就是空气质量直线型 下降,我们再无法呼吸到新鲜空气从而又直接导致人们身体的各种疾病的产生。除此之外,随着国 际问题的不稳定性,油的价格也让人们颇不敢想象,犹如几句俗语,买的起车,开不起车啊。基于 这几点来说,公交车出行是人们必须的一项选择了。公交车早就成为城市交通运输体系的重要组成 部分。目前,大多数公交车都可以提供 18 小时服务。虽然公交车有它的方便之处,但是也体现出 了很多不便,如:上班的时候处于交通的高峰期,各种车辆相互拥挤,以至于导致公交车的到站时 间加长等等问题。随着这些问题的出现,越来越多的交通事故也是接连不断,因此加强交通监管将 2 显得尤为重要。根据车辆的行车信息进行车辆轨迹查询,可以实现不同时间段的车辆轨迹查询以及 所行使车辆信息,这些功能将在事故后续处理中发挥极其重要作用。 针对以上所描述,因此采用二次开发语言 c#,利用 arcgis engine 以及 sql server 数据库技术, 开发出一个基于 visual studio 2008 平台的功能模块,进行公交车辆历史轨迹的查询系统。该系统采 用 arcgis engine 开发技术、以 arcgis 9.3 集成平台,实现车辆历史轨迹查询。本系统除了在交通 监管中的应用,它还可以在森林防火、运钞车监护、犯罪嫌疑车辆监控也有着很好的实用性。 3 第二章 地理信息系统(gis)技术 2.1 gis 概念及组成 gis 是在计算机软硬件支持下,以采集、存储、管理、处理、检索、分析和显示空间物体的地 理分布数据及与之相关的属性,并以回答用户问题或提供服务等为主要任务的技术系统。 数据库管理系统 数据库 硬件 、 系统软件 应用人员和组织机构 ( a ) 地理信息系统 数 据 输 入 子 系 统 数 据 存 储 与 检 索 子 系 统 数 据 处 理 与 分 析 子 系 统 输 出 子 系 统 ( b ) 图 2-1 地理信息系统的组成 从系统论和应用的角度出发,地理信息系统被分为四个子系统(图 (a)),即计算机硬件和系 统软件,数据库系统,数据库管理系统,应用人员和组织机构。 (1)计算机硬件和系统软件:这是开发应用地理信息系统的基础。其中,硬件主要包括计算机、 打印机、绘图仪、数字化仪、扫描仪;系统软件主要指操作系统。 (2)数据库系统:系统的功能是完成对数据的存储,它又包括几何(图形)数据和属性数据库。 几何和属性数据库也可以合二为一,即属性数据存在于几何数据中。 (3)数据库管理系统:这是地理信息系统的核心。通过数据库管理系统,可以完成对地理数据 的输入、处理、管理、分析和输出。 (4)应用人员和组织机构:专业人员,特别是那些复合人才(既懂专业又熟悉地理信息系统) 是地理信息系统成功应用的关键,而强有力的组织是系统运行的保障。 从数据处理的角度出发,地理信息系统又被分为数据输入子系统,数据存储与检索子系统,数 据分析和处理子系统,数据输出子系统(图 (b)。 (1)数据输入子系统:负责数据的采集、预处理和数据的转换。 (2)数据存储与检索子系统:负责组织和管理数据库中的数据,以便于数据查询、更新与编辑 处理。 (3)数据分析与处理子系统:负责对数据库中的数据进行计算和分析、处理。如面积计算,储 4 量计算,体积计算,缓冲区分析,空间叠置分析等。 (4)数据输出子系统:以表格、图形、图象方式将数据库中的内容和计算分析结果输出到显示 器、绘图纸或透明胶片上。 2.2 gis 在车辆监控系统中的作用 gis 能够把实时接收的多个车辆的位置信息显示在电子地图上,同时实现所有与 gps 相关的 gis 功能。包括:多种不同比例尺电子地图的管理与显示;地图窗口中以不同比例尺直观地查看指 定车辆的位置及查询相关的信息;多窗口同时监控,并可打印当前窗口内容;监控车辆位置、状态、 运动轨迹的实时显示;地图上任意位置的信息动态提示;地图的快速显示、缩放和查询。 监控车辆的远程控制,包括强制发回位置、车辆控制器控制(如:开关门、防盗等) 询问、 通知信息发送等,调度指令可在车载微型打印机上打印出来,或显示在车载终端上。 基于规则的车辆预警处理系统。用户能够对监控车辆设置各类预警条件(标记、路线、区域、 时间等),一旦发现接收的监控车辆信息满足预警条件,立刻发出报警信号。用户可根据需要,对 车辆实施远程熄火,锁门等方式来控制车辆的状态。 车辆数据的各类查询和统计。 车辆信息的更新和修改。 车辆历史运行轨迹的查询与回放。 5 第三章 系统框架的设计与实现 3.1 系统设计与构想 本系统可以以不同的车辆和不同的行驶时间段为条件进行相应车辆的历史轨迹查询。公交车车 辆轨迹查询是利用车载全球定位系统终端接收机采集车辆的实时数据,在地理信息系统(gis)平台 上按多时段进行轨迹查询时效模拟,它结合了 gps(global positioning system)导航技术、 gis(geographical information system)电子地图及计算机技术,实现了从数据采集、数据存储、 数据管理,最后到实际应用。由于 gps 终端接收机的相对独立性和数据的低存储量,其接收数据的 可视性和可比较性需要借助于其他的可视化操作平台。为此,该系统采用 arcgis engine 以及 sql server 数据库技术,以 arcgis 9.3 集成平台,实现模拟车辆历史轨迹查询。 本系统的构想是由数据库操作和地图显示操作两部分构成,大体设计的流程如图 3-1 所示: 公 交 车 辆 轨 迹 查 询 信 息 管 理 功 能 模 块 信 息 查 询 功 能 模 块 g i s 功 能 模 块 s q l 数 据 库 三 层 架 构 轨 迹 显 示 属 性 信 息 显 示 人 员 管 理 车 辆 管 理 查 询 添 加 修 改 删 除 所 有 人 员 根 据 人 员 i d 查 询 添 加 修 改 删 除 所 有 车 辆 根 据 车 辆 i d 线 路 信 息 站 点 信 息 g p s 信 息 根 据 线 路 i d 根 据 站 点 i d 根 据 线 路 i d 所 有 线 路 所 有 站 点 所 有 信 息 g p s 数 据 获 取 根 据 车 辆 i d 输 入 用 户 名 输 入 密 码 t r u e f a l s e 图 3-1 系统框架设计流程图 整个系统的功能模块大致可由三个部分组成:信息管理功能模块、信息查询功能模块、gis 功 能模块。 框架整体设计效果如图 3-2 所示: 6 图 3-2 系统框架设计效果图 3.2 系统开发环境 本系统主要做的方面是基于 arcgis 公交车辆轨迹查询和各种信息的管理与查询,因此所引用 的开发环境如下所示: 系统开发平台:visual studio 2008 系统开发语言:c#、xml 数据库:sql server 2005 二次开发引擎:arcgis engine 3.3 数据库 数据库操作部分由信息管理功能模块和信息查询功能模块组成,这两个功能模块的工作主要是 采用三层架构的思想实现。通过三层架构这个思想对数据库和模块之间进行合理地信息添加、更改、 删除和查询等操作。 3.3.1 三层架构 “三层架构”中的“三层”是指:表示层(user interface layer-ui) 、业务逻辑 (bussinesslogic layer-bll)、数据访问层(data access layer-dal)。三层架构的结构可以用图 3-3 表示: 7 表示层 业务逻辑层 数据访问层 提供交互式界面 对数据的添加 、 更 新 、 删除和查询 负责数据的传 递和处理 用户请求 用户请求 响应数据 响应数据 图 3-3 三层架构之间的关系 表示层(ui):位于系统的最外层(最上层),离用户最近。用于显示数据和接收用户输入的数 据,只提供软件系统与用户交互的界面。其职责是只接收用户输入的数据,并将业务逻辑层处理的 数据结果显示给用户。 业务逻辑层(bll):位于表示层和数据访问层之间,专门负责处理用户输入的信息,或者是将 这些信息发送给数据访问层进行保存,或者是通过数据访问层从数据库读出这些数据。该层可以包 括一些对“商业逻辑”描述的代码在里面。业务逻辑层是表示层和数据访问层之间的桥梁,负责数 据处理和传递。此层只负责对数据的业务处理,不需要在业务逻辑层里写访问数据库的 sql 语句。 业务逻辑层可以验证用户输入的数据、缓存从数据库中读取的数据等等。 数据访问层(dal):仅实现对数据的保存和读取操作。数据访问包括访问数据库系统、二进制 文件、文本文档或是 xml 文档。在此层最好不要出现任何与业务逻辑和界面设计相关的代码。也就 是说,要保证数据访问层中方法的功能仅负责存储或读取数据就可以了。 使用三层架构的优点:可以充分把软件开发任务分解,有利于团队合作开发。例如,表示层的 开发人员只需关注用户界面的设计和数据的输入和显示,他们不需要了解数据的存取和处理逻辑; 业务逻辑层的开发人员则关注系统的数据处理逻辑,而不需要关心界面的设计、数据的存取和显示; 而数据访问层的开发人员只需关注数据的存取操作,无需了解界面设计、数据的输入、显示和业务 处理。这样分层团队开发更利于控制软件质量,充分发挥版本控制和单元测试。三层构架的软件适 应性很强,一旦有什么需求变动可以很快的进行代码更改,因而代码的复用性很高。其中一层的代码 改变不影响其他层。例如,用户界面的改变并不影响业务逻辑层和数据访问层,甚至访问不同数据 库管理系统也只改变数据访问层的代码而不会影响业务逻辑层和表示层的代码。 3.3.2 数据库设计 数据库设计是把现实世界中一定范围内存在的应用处理和数据抽象成一个数据库的具体结构的 8 过程。具体地讲,就是对于一个给定的应用环境,提供一个确定最优数据模型与处理模式的逻辑设 计,以及一个确定数据库存储结构与存取方法的物理设计,建立能反映现实世界信息与信息间的联 系、满足用户要求、能被某个数据库管理系统(dbms)所接受、能实现系统目标并有效存取数据的 数据库。数据库设计是信息系统开发和建设的重要组成部分,其质量好坏直接影响到系统各个处理 过程的性质和质量。好的数据库设计是有效、准确操作数据库的基石。 gis 数据库设计取决于目标、用户要求、功能和如何处理数据。它通常包括:制定整个数据库 的使用目的和目标,分析和评价各种设计方案和雏形试验。 gis 数据库的设计要有更多的考虑,因为地理数据有矢量和栅格之分,各种数据又同时具有空 间和属性特征,有的还有时间上的信息特征,各种特征的信息,可能要用不同的结构来表达。各类 数据库的开发可能是使用不同的 gis 软件来完成的,这样数据的格式也各不相同,一个数据库可能 要求容纳各种各样的数据类型和格式。如何有机地将这些考虑结合起来,也是一个 gis 数据库设计 成功与否的关键因素之一。 gis 数据库的设计应该既考虑数据的特征,又兼顾应用目的。这样可以使设计出的数据库既充 分利用技术上的优势,又兼顾用户的应用目的。 3.3.3 数据库选择 sql server 2005 是一个全面的数据库平台,使用集成的商业智能 (bi) 工具提供了企业级的 数据管理。sql server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能, 使您可以构建和管理用于业务的高可用和高性能的数据应用程序。 与 microsoft visual studio、microsoft office system 以及新的开发工具包(包括 business intelligence development studio)的紧密集成使 sql server 2005 与众不同。无论 是开发人员、数据库管理员、信息工作者还是决策者,sql server 2005 都可以为您提供创新的解 决方案,帮助您从数据中更多地获益。 sql server2005 就是关系数据库管理工具,数据库能汇集各种信息以供查询、存储和检索。 sql 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 excel 的电子表格,可以使数据库一目了然。另外,sql 允许创建自定义报表用于打印或输出数据库中的 信息。sql 也提供了数据存储库,可以使用桌面数据库文件把数据文件置于网络文件服务器,与其 他网络用户共享数据库。sql 是一种关系数据库管理工具,关系数据库是已开发的最通用的数据库 之一。如上所述,sql 作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数 据库的便利和关系数据库的强大功能。 9 因此,选择 sql server 2005 数据库作为此系统的数据库不失为一个很好的选择。 3.3.4 数据表设计 在信息管理功能模块和信息查询功能模块主要设计了五个数据表,分别为人员(renyuan)、 车辆(cl)、线路(allxll)、站点和 gps 数据表。 1、人员信息表(renyuan) 人员信息表的设计主要是存储公司所有人员资料信息的一个表,公司的人员信息大致可以认为 由以下几类组成,分别是人员 id、所归属的线路 id、所在的车队 id、人员编号、人员姓名、姓名 简拼、性别、身份证号、职位、司机驾驶号、联系地址和联系电话等,如图 3-4 所示: 图 3-4 人员信息表 2、车辆信息表(cl) 车辆信息表的设计主要是对车辆资料信息的存储,包括车辆 id、所行使的路线、行驶的路线名 称、所归属的车队 id、车辆编号、车牌号和车载 sim 卡号等,如图 3-5 所示: 图 3-5 车辆信息表 3、线路信息表(allxl) 线路信息表的设计主要是针对所有线路信息资料进行相应的记录,如线路 id、线路名称、线路 10 编号、车队、始发站、末发站、始发站首班时间、首发站末班时间、末发站首班时间和末发站末班 时间等,如图 3-6 所示: 图 3-6 路线信息表 4、站点信息(zd) 站点信息表的设计主要就是记录某条线路上的所有站点的信息,如站点 id、站点名称、站点号、 站点坐标和所归属的线路 id 等等,如图 3-7 所示: 图 3-7 站点点位信息表 5、gps 数据表(gps) gps 数据表的设计主要就是用来通过车辆的信息记录该车辆实时位置信息和获取该位置信息的 时间等等。如记录 id、记录时间、经纬度坐标、gps 获取时间(gpstime)和对应车辆的车载 sim 卡 号等信息。 通过以上信息表的设计可以合理地记录各种信息以便能够为以后的服务提供更多的详细信息, 同时也能够为公司的运营进行妥善管理。 3.3.5 信息管理与查询功能模块 信息管理与查询功能模块的基本功能就是对数据库的操作:添加、修改、删除和查询等。 信息管理功能模块主要是针对公司运营管理机制而建立的一个功能模块。在这个功能模块里面 可以完善公司的管理机制,如公司人员的调动、信息的更改等问题都可以实时地进行更替,以便能 11 够灵活地掌握公司人员的当前状况(离职或是在职等信息),为下一步的工作分配创造了有利条件, 经过这样的动态管理对于公司的内部运营维护起到了一些关键性的作用。 信息查询功能模块主要是能够对所需要的信息通过指定的条件进行查询,将查询出来的结果进 行校对:是否将这个信息进一步加以更改或是删除此信息等问题。这方面功能的制定对信息管理功 能模块有一定的改善作用。除此之外,也能够为用户提供他们想要了解的信息等问题,如用户想了 解某条公交线路的信息,他们只需要根据某条线路的 id 或是线路名称就可以查询到他们所需要的 信息了。 这两个功能模块的操作主要就是通过上面介绍的三层架构为中介,通过这个中介对数据库进行 各种信息的调用,之后把符合条件的信息再通过这个中介显示给用户,让用户能够非常清楚的看到 自己所要了解的信息。关于这方面的具体代码详见附录 a,操作前后的结果如下所示: 1、添加 公司都会有新成员入职、新车辆引进等情况,那么这些新成员、新车辆的信息就要进行妥善管 理,因此,添加功能就可以完全实现这些信息的录入,方便于公司运营管理。 具体思路是首先打开对应的添加菜单并填写相关对应信息,如图 3-8 所示: 图 3-8 信息添加功能 添加完人员信息之后,现在来查看一下添加完之后的结果,查询结果如下: 图 3-9 信息添加后结果 从查询的结果之中可以看出来,上面所添加的人员信息已经完全地添加进数据库中的 renyuan 12 数据表当中了,也就实现了公司新成员等信息的妥善管理。 2、修改 公司运营管理中,可能会出现人员变动等信息,因此,对于这种信息的变动,公司应当进行及 时的更改,以便于公司运营管理不会出现差错,因此,修改功能实现了此方面的工作。 修改功能的具体实现思路是首先根据某个信息的某一个字段进行查询,把所要查询的所有信息 在窗体中对应的控件中显示出来,之后根据具体的正确信息进行修改,如图 3-10 所示: 图 3-10 信息修改功能 修改信息之后,如果确认无错,即可单击更新按钮,单击完更新按钮之后,所对应的人员信息 即可被修改。修改后的人员信息如图 3-11 所示: 图 3-11 信息修改后结果 如上图所示,线路 id、车队 id、性别、职位、驾驶号和联系地址已经被成功修改了。 3、删除 很多时候,公司员工因为某些原因而离职,车辆达到报废要求而不得不进行报废,这些问题的 出现对于公司运营情况来说,它们已经没有什么用途了,所以公司应当随时对这些无用的信息进行 删除,以达到良好地运营管理,因此,删除功能在这方面体现的就尤为重要了。 删除信息的具体思路是先通过具体信息的某一个字段进行查询,把想要删除的记录查询出来, 13 之后再进行删除操作,这样才不会删除错误的信息。如图 3-12 所示: 图 3-12 删除功能 删除后的信息在数据库中会被永久的删除不能恢复,所以进行删除操作的时候需要谨慎,删除 后的结果如下图所示: 图 3-13 删除后结果 从图中可以清晰地看出,当我们把人员 id 为“1111”的信息查询出来并进行删除操作,之后 此信息在数据库中就被永久地删除了,如上图所示,人员 id 为“1111”的信息已经不存在了,说 明删除操作成功。 4、查询 对于用户来说,主要进行的就是查询操作,通过查询,用户可以很清晰地了解到自己想要知道 的信息,所以说查询功能在数据操作方面也是一个不可或缺的重要功能。 查询操作可以分为两部分进行查询:其一,可以把所有的信息一次性全部查询出来,如图 3-14 所示: 图 3-14 所有站点信息查询结果 14 考虑另一方面的问题是数据库中存储的数据量是非常庞大的,当查询所有的数据的时候,软件 反应的速度往往也会变得非常缓慢,并且这样的查询结果对我们日常生活也没有太大的意义。因此 要根据我们想要的某条信息的一个字段进行查询,这样查询的结果不但有实际意义,而且反映的速 度也相当快。下面我们以线路 id 进行查询,查询结果如图 3-15 所示: 图 3-15 按条件查询信息结果 从上图中我们可以看出,根据线路 id 查询的结果已经显示出来了。这也就是我们想要的结果。 至此,信息管理功能模块和信息查询功能模块已经全部做完了,这个部分的关键技术就是三层 架构的使用,通过三层架构我们可以非常简单的调用数据库获得我们想要的信息,其次,数据库的 各种相关语句都可以写在二进制文件、文本文档或是 xml 文档中,这样的好处就是数据库的操作语 句全都在二进制文件、文本文档或是 xml 文档中,当发生需要修改问题的时候不用再去更改程序的 中的代码而只需要更改二进制文件、文本文档或是 xml 文档中的代码就可以了。 3.4 gis 功能模块 gis 功能模块是本系统的重要模块,在这个模块中主要设计轨迹查询显示功能和实体对象属性 信息查询显示功能两个方面的内容。 公交车辆历史轨迹查询显示功能主要思路如下:首先,通过公交车辆的车牌信息选取公交车, 其次通过一个可选择的时间段,之后以这两个选择条件为基础进行公交车的历史点位绘制即公交车 轨迹显示。这些公交车的历史点位信息主要就是来源于上面介绍的数据库中 gps 数据表中的对应的 经纬度坐标等信息,通过这个对应的经纬度坐标信息进行相应公交车辆的历史点位绘制。 实体对象属性信息查询显示功能是以轨迹显示功能为前提,对所绘制公交车辆的历史点位进行 属性查询,如查询的点位所对应的公交车辆、该车辆所对应的线路信息、经纬度坐标和 gps 事件的 获取等有关属性信息。 3.4.1 轨迹查询显示 公交车历史轨迹查询显示的具体实现思路如下:首先就调用数据库中获取的 gps 数据,其次就 15 是根据 arcgis engine 开发组件进行画点函数的编写,之后再根据相关的条件调用画点函数,通过 这样一系列操作,最终在地图上进行公交车辆历史点对象的绘制。轨迹显示的大致流程图如图 3-16 所示: 获 取 gps数 据sql数 据 库 arcgis engine开 发 组 件 ifeaturely接 口igraphicscontner接 口 地 图 中 显 示 公 交 车 辆 轨 迹iactiveview接 口imap接 口 ipoint接 口 图 3-16 公交车轨迹显示流程 首先利用车载全球定位系统终端接收机采集公交车辆的实时数据,之后把采集完的 gps 实时数 据直接记录在相对应的 gps 数据表中,所采集的 gps 数据包括车辆的经纬度坐标等信息;在显示系 统上主要通过 arcgis engine 开发组件触动相应的控件来进行相对应的功能的实现。 公交车辆历史轨迹查询显示主要就是在 arcgis 的基础上,通过 visual studio 2008 进行二次 开发,本系统主要运用 arcgis engine 开发组件的功能建立画点函数,之后通过获取数据库中的经 纬度坐标调用画点函数进行相应点位的绘制。进行画点函数编写之前首先要了解一些 arcgis engine 开发组件的概念与功能。 本公交车辆历史轨迹查询显示主要运用了 arcgis engine 开发组件的几个相关的接口,如图 3- 16 所示,轨迹显示大概应用了五个接口,通过这些接口的相互作用,最终在地图上显示公交车辆历 史点位。 地图(map)是 arcgis engine 的主要组成部分。map 对象既是数据的管理容器,同时也是数 据显示的主要载体。map 对象的主要接口有 imap、igraphicscontainer、iactiveview 等。 map 对象可以装载地理数据,这些数据是以图层的形式放入地图对象的,layer 作为装载的单 位,当第一个图层装载进 map 对象时,map 对象自动设置空间坐标系为当前图层的空间坐标系,以 后再装载的图层都将使用 map 对象已经设置的空间参考。layer 对象本身没有装载数据,其作用是 获得数据的引用,用于管理数据源的连接,数据始终在 geodatabase 或地图文件中。 1.imap 接口 imap 接口主要用于管理 map 对象中的 layer 对象、要素选择集、mapsoourround 对象和标注等。 16 map 对象通过图层的方式管理地理数据。在 imap 接口中定义了大量的方法来操作其中的图层对 象,如 addlayer、addlayers,这两个方法分别是将一个、多个图层加载进 map 对象;clearlayers 是清除 map 中所有图层;layercount 则是 map 中的图层计数器,计算 map 中有多少个图层; selectfeature 是获取选择实体的个数。当图层添加进 map 对象时,最先添加的图层放在最下面, 后添加的图层则依次叠加在原有图层上。 2.igraphicscontainer 接口 map 对象通过 igraphicscontainer 接口来管理图形元素(包括图形元素和框架元素)。接口提 供了添加、更新、删除元素的方法:addelement、updateelement、deleteelement,以及选择元素 的方法,如 locateelement 方法。使用一个点来选择元素,它需要传入一个点和一个容差值; locateelmentsbyenvelope 方法,通过在 map 上拖拽一个矩形区域,然后根据举行区域选择区域内 的元素。 3.iactiveview 接口 iactiveview 接口是 map 对象最主要、最常用接口之一,该接口定义了 map 对象的数据显示功 能。通过该接口,可以在 map 上绘制图形、改变视图范围、获取 screendisplay 对象的指针、显示 或隐藏标尺和滚动条,也可以刷新视图。 iactiveview 接口提供了几个重要的方法和属性,如 extent 属性,该属性用于返回 map 对象当 前视图的范围,是一个 envelope 对象;fullextent 属性,用于返回视图的全局范围。 4.ifeaturelayer 接口 ifeaturelayer 接口用于管理要素图层的数据源,即要素类(featureclass)。 datasourcetype 属性用于返回图层的数据源类型。search 方法通过两个参数,一个是过滤器,它 是一个 iqueryfilter 类型的对象;一个是布尔值,用于说明返回的要素游标是否循环,返回一个 icursor 类型的对象。 5.point 对象 点(point)代表了一个 0 维的具有 x、y 坐标的几何对象。点是没有任何形状的,可用于描述点 类型的要素,而且 geometry 中的任何类型都是用点来产生的。 构成几何形状的顶点存在着 3 种可以选择的属性,即 z、m 和 id。z 值在大多数情况下都可用 于表示一个点的 z 坐标,还可以将 z 值作为一个点的辅助值来使用;m 即度量值,可以是一个路径 对象的线性度量,用于交通工程中一条公路的不同点的位置;id 值即为一个点点的唯一标识值。 点集(multipoint)是具有形同属性的点的集合,用于构成高级集合对象、集合对象动态模拟 17 等。 ipoint 接口定义了 point 对象的属性和方法,点(point)可以使用 putcoords 方法创建,也 可以使用 iconstructpoint 接口来创建。 画点对象主要就是基于以上的几种接口以及接口中的方法去实现。在本系统中画点的基本思路 是首先要创建一个空的点图层,之后要在此空的点图层中调用画点函数进行点对象的绘制。 画点之前首先要考虑的一个问题就是要从数据库中提取大量的经纬度坐标数据点(即公交车实 时位置),所以考虑的就是希望能够根据所设定的条件把这些经纬度的坐标点数据依次放到一个点 集或是一个数据表中,之后再调用画点函数把这些点位置在地图图层上绘制出来即公交车历史点位。 因此,基于这个思路,自己首先创建一个画点函数,其参数是一个表。画点之前要考虑的另一个问 题是,我们可能会多次查询不同车辆的的轨迹。基于这个想法,在画另一个公交车辆历史点对象的 时候,应该首先清除之前的公交车历史点对象,之后再根据所设定的条件进行点对的绘制,这样的 好处就是我们每次查询公交车轨迹的时候,总是显示我们当前要了解的公交车轨迹,而不会把不属 于这辆公交车的轨迹显示在当前我们查询后的地图上。画点函数如图 3-17 所示: 图 3-17 画点函数 进行公交车辆历史轨迹查询时,主要根据设定的车辆、时间段,通过程序实现操作。(代码见 附录 b)比如查询车辆的车牌号为:a/b2006,且指定时间处于 2011-12-28 08:00:00 和 2011-12- 28 08:50:00 之间的数据,查询车辆历史轨迹的结果如图 3-18 所示: 18 图 3-18 公交车轨迹显示结果 3.4.2 实体对象属性信息查询 实体对象属性信息查询是在轨迹显示的基础上对其公交车辆历史轨迹点位进行属性查询,其基 本思路是根据数据库中数据表的字段信息进行设计。实体对象属性信息查询结果如图 3-19 所示: 图 3-19 实体对象属性查询结果 19 从图 3-19 中可以看出,我们查询了车牌号为“京 a/b2006”的实体对象信息,实体对象分别为 7 和 76,从中可以了解到,该车所走的线路为“300 快内”、车辆编号为“84006”、车载 sim 卡号 为、车辆行驶速度分别为“14.0km/h”和“28.4km/h”、获取的时间分别为 “08:04:18”和“08:39:52”。 至此,gis 功能模块部分的功能已经全部设计完成,在这个部分中主要就是相关接口之间的相 互作用,最后在地图上绘制出点对象即公交车的历史点位。其次就是实体对象属性信息的设计,实 体对象属性信息的设计主要是根据公交车在公路上的实际地理位置和其公交车的基本信息进行设计, 这个属性信息的设计具有实际意义。 20 第四章 结论 本公交车辆历史轨迹查询是基于 arcgis 9.3 开发引擎并利用 c#语言开发出的公交车轨迹查询 显示系统,经过虚拟验证,该程序可以在不同时间段内实现轨迹查询。它结合了 gps 导航技术、 gis 电子地图及计算机技术,是一种跨平台的 gis 技术,对日常生活有很大的帮助,并为 gis 和 gps 的多系统集成实现提供了实例帮助。所以本文首先介绍了这方面方面的一点点知识,gps 的运 用主要是通过 gps 接收机接收车载 gps 终端所有时段的数据,其次是根据这些数据和给定的条件在 gis 二次开发的程序中进行相关功能的实现,之后便开始了此系统主要功能方面的介绍即系统框架 中主要的三个模块的系统讲述,分别是信息管理功能模块、信息查询功能模块和 gis 功能模块。 信息管理功能模块和信息查询功能模块主要是对各种信息的管理和对用户的要求进行查询,如 人员、车辆等问题,可以增加新来的职员,删除已经不在单位工作的职员,职员信息改变的可以进 行志愿信息修改等等。除了此项功能之外还可以根据用户所要查询的信息,进行相关性查询,如线 路的信息,站点信息等等。这两项完成了公司管理和用户的实际问题的妥善处置,为以后公交车辆 的管理系统研发提供前提。gis 功能模块主要研究了公交车辆历史轨迹查询的结果显示和公交车车 辆的属性信息查询等,为用户进一步了解公交车在实际中的应用提供重要依据。 开发此系统的关键技术就是数据库中三层架构思想的运用,通过这种三层架构的运用可以很轻 松地进行数据库操作语句的编写,并且不需要关心程序界面的设计、数据的存取显示等问题,除此 之外,一旦有什么需求变动可以很快的进行代码的更改,基于这个原因,其代码的复用性很高(其 中一层的代码不会影响其它层)。其次就是公交车辆点位绘制时几种接口之间的作用,通过这几种 接口之间的接连性很轻松地绘制出点对象,最后是实体对象属性信息查询功能的实现,这个功能从 很大一部分上体现了它的实际意义点对象真实的具体属性信息。 本系统的整体框架是以公交管理系统为主框架的基础上进行特定车辆轨迹查询方面的一个开发 程序,本系统也为公交车辆动态轨迹回放系统做出了进一步的铺垫作用。因其自己的能力水平有限, 本系统还需要很多地方的改善和提高,例如,目前自己只能研发到把公交车历史点位画出来,不能 动态地实现轨迹显示、车辆和地图匹配等问题,希望在以后的工作中能够大力加以改善,把这个系 统的功能运用到公交车辆管理系统中,使其功能更加完善,为社会提供重要价值。 21 附录 a using system; using system.collections.generic; using system.linq; using system.text; using system.data; using system.data.sqlclient; using runbustrackmonitor.components ; using runbustrackmonitor.dao; namespace runbustrackmonitor.bll class busbll #region“添加一条人员信息“ / / 添加一条人员信息 / / / public static bool addstaff(model staff) bool bol = false; int count = busdao.addstaff_information(staff); if (count 0) bol = true; return bol; #endregion #region“更新指定员工信息“ / / 更新指定员工信息 / / / public static bool updatestall(model staff) bool bol = false; int count = busdao.updatestaff_information(staff); if (count 0) 22 bol = true; return bol; #endregion #region“删除指定人员信息“ / / 删除指定人员信息 / / / public static bool deletestaff(model staff) bool bol = false; int count = busdao.deletestaff_information(staff); if (count 0) bol = true; return bol; #endregion #region“获取站位信息“ / / 获取站位信息 / / public static datatable obtainzw_information() return busdao.getallzw_information(); #endregion #region“按路线 id“ / / 按路线信息得到公交车信息 / / / public static datatable obtainxl_information(string xlid) return busdao.getxlid_information(xlid); 23 #endregion using system; using system.collections.generic; using system.linq; using system.text; using system.data; using system.data.sqlclient; using mala.dbxml.util.executableobject; using mala.dbxml.util; using mala.util; using mala.db.util; using runbustrackmonitor.components; namespace runbustrackmonitor.dao class busdao public static readonly sqlxmlconfiguration config = new sqlxmlconfiguration(“dao/sql.xml“); #region“添加一条员工信息“ / / 添加一条员工信息 / / / public static int addstaff_information(model staff) iexecutable exeappnew = executablebuilder.createexecutable(config, “addstaff_information“); exeappnew.setparametervalue(staff); int ret = int.parse(dbdataservices.instance“sqlconnstring“.processrequest( exeappnew).tostring(); return ret; #endregion #region“按人员 id 查找人员信息并更新人员信息“ / / 按人员 id 查找人员信息并更新人员信息 / / / public static datatable getupdatestaff_information(string ryid) 24 iexecutable ry = executablebuilder.createexecutable(config, “getupdatestaff_information“); ry.setparametervalue(“ryid“, ryid); return dbdataservices.instance“sqlconnstring“.processrequest(ry).tables0; #endregion #region“更新指定条员工信息“ / / 更新指定条员工信息 / / / public static int updatestaff_information(model staff) iexecutable exeappnew = executablebuilder.createexecutable(config, “updatestaff_information“); exeappnew.setparametervalue(staff); int ret = int.parse

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论