《基于GPS移动终端的云端位置服务.doc》由会员分享,可在线阅读,更多相关《基于GPS移动终端的云端位置服务.doc(28页珍藏版)》请在三一办公上搜索。
1、基于GPS移动终端的云端位置服务摘 要随着互联网行业的兴起,越来越多的人群需要有GPS卫星追踪定位系统的支持才能更好地工作,学习和生活。降低了某些行业的维护成本,提升了服务质量。其中在军事领域极为重要,为战争提供立体化指挥,战斗,实时指挥。民用领域也在增强,几乎所有手机上都有GPS定位装置,提供定位信息。所以研究GPS定位信息,处理GPS定位信息也显得越来越重要。该云端位置服务,是针对民用领域而设计制造的,能够提供给老人或者儿童的可携带式紧急求助闹铃、给商业旅行提供追踪记录、给车辆及车队提供管理以及防盗警铃、资产的监护与追踪、宠物以及动物追踪等。通过本次设计可以培养学生运用所学的专业知识能力,
2、该设计要完成系统的分析、开发、测试等环节,可以为以后从事软件开发的相关工作打下坚实的基础。关键词:卫星定位 追踪 自动报警 GPS远程监控Location services based on GPS mobile terminal cloud ABSTRACTWith the rise of the Internet industry, more and more people need to have a GPS satellite tracking positioning system of support in order to better work, study and life.
3、Reduce themaintenance costs of certain industries, enhance the quality of service. Which isextremely important in the military field, three-dimensional command for war, battle, real-time command. Civilian areas is also enhanced, almost all phones have a GPS positioning device to provide location inf
4、ormation. Therefore, to study the GPS location information to deal with the GPS location information has become increasingly important.The clouds location services, design and manufacture of civilian areas, to provide a portable emergency alarm to the elderly or children, and track record for busine
5、ss travel,vehicle and fleet management as well as anti-theft alarm, the assets of the guardianshipand tracking, pet and animal tracking. Through the design can train students to use the expertise of the design to complete the analysis, development, testing and other aspects of the system, you can la
6、y a solid foundation for future related work in software development. Key Words: Satellite positioning tracking GPS remotemonitoring目录第一章绪论1.引言11.2系统设计的意义11.3系统设计方法及手段21.3.1Java之Spring框架简介31.3.2Google Maps API41.3.3Jetty 6.0介绍41.3.4 Ant 1.7介绍4第二章 Google Maps API用法介绍62.1 Google Maps JavaScript API V3
7、介绍62.1.1简介62.1.2 Google Maps 第 3 版的 “Hello, World”62.1.3 将应用程序声明为HTML582.1.4载入Google Maps API92.1.5地图DOM元素102.1.6地图选项102.1.7Google.maps.Map基本对象112.1.8载入地图122.1.9经度纬度132.1.10缩放级别13第三章 系统分析与总体设计153.1 云位置服务系统的需求分析153.1.1本系统设计的总体目标153.2 云位置服务系统的总体设计15第四章 详细设计和代码实现174.1本系统的数据库设计174.1.1网站数据库的设计174.2本系统的Se
8、rver端Java代码实现264.3本系统的Client端JavaScript代码实现26第五章 测试结果27第一章绪论.引言计算机是二十世纪人类最伟大的发明之一,从第一台计算机于1946年诞生到至今的半个多世纪里,计算机及其应用已经渗透到社会生活的各个领域,成为人们生活工作中不可缺少的助手。GPS卫星追踪定位系统是一款为需要获得实时位置的人群打造的一款软件,它作为一个计算机化的平台,可以很好的获得最新的位置信息,实时监控老人,小孩,车队,以及货物等位置信息,以保证企业或个人即时获得位置信息的要求。可以为用户形成一个准确反映位置信息的信息平台,从而简化用户的操作,获得更高的经济效益。近年来,随
9、着信息化建设的不断推进、环境的不断改善及国家鼓励软件产业和集成电路产业发展政策效应的不断显现,国内信息传输、计算机服务和软件业产业规模不断扩大,技术水平不断提高,产品结构进一步优化,日益走上了稳步、快速、健康发展的轨道。目前,以GPS为代表的卫星导航应用产业已成为当今国际公认的八大无线产业之一。随着技术的进步、应用需求的增加,GPS以全天候、高精度、自动化、高效率等显著特点及其所独具的定位导航、授时校频、精密测量等多方面的强大功能,已涉足众多的应用领域,使GPS成为继蜂窝移动通信和互联网之后的全球第三个IT经济新增长点。基于此,有必要建立针对于服装企业的管理系统,计算机信息化管理有着储存量大,
10、速度快,精度高等许多优点,可以使服装企业资源的问题显得规范化,系统化,程序化,避免公司的不规范性和低效性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改公司生产和销售情况。1.2系统设计的意义在传统方式上,用户通常采用电话、电传,E-mail等方式传递老人、小孩、车队、物流以及自己的位置信息,这种信息传递和管理的方式不仅效率低,可靠性、安全性和保密性都无法满足要求,而且获得信息的时间滞后,甚至具有一定的不准确性,严重影响到用户做出正确的抉择。1. 加之现在进入高速的信息化社会,用户每天忙碌的生活学习,根本无法挤出时间,去管理这些零散的位置信息。基于这样的原因,设计了本款软件,针对
11、有需要的用户,管理他们的位置信息,并且实时的显示供用户查看。本软件具有以下功能:1. 用于老人或者小孩的可携式紧急求救警铃;2. 获得商业旅行的路线记录;3. 车辆追踪、车队管理以及防盗警铃;4. 资产监护与追踪;5. 宠物与动物追踪;本设备的主要特色有以下几项:1.可双方通话的紧急呼救警铃2.语音监控以便及时抢救3.防水保护可于严苛环境中进行追踪4.GPS 与基站双重定位增加定位准确性5.内建感应器可侦测无预期的移动现象6.越界告警警报可保护珍贵资产7.SMS 位置报告简讯中的详细的地图显示可供定点快速查询8.支持 Micro-SD 内存,以供长时间追踪使用9.提供 Track Manage
12、r 软件,以供有效的追踪行径管理10.防盗警铃功能可加强交通工具的安全性1.3系统设计方法及手段作为一个GPS位置管理系统,该系统要操作简便,界面友好,并使该系统在可用性,性能方面基本达到基本的使用要求,满足用户所需的基本功能。其基本设计模块包括:1. 实时监控模块2. 历史查询模块3. 设备管理模块4. 软件指南模块5. 模拟设备模块对整个信息系统的开发,分阶段完成。包括总体需求分析,总体设计,详细设计,系统实现等几个步骤。要设计的GPS位置信息管理系统采用Java语言为核心,用到了Java中Spring的框架,前台页面的JavaScript语言,以及Google Map API的相关接口。
13、用到的编程软件和工具有:MyEclipse 10.0,JETTY6.0 ,MYSQL5.5,ANT 1.7 通过了解了以上内容后,预算成本与时间,根据需求分析开发该系统。1.3.1Java之Spring框架简介Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引 。Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式 组成 Spring 框架
14、的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功
15、能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。 Sprin
16、g ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。 Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,M
17、VC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。 1.3.2Google Maps APIGoogle Maps API 是Google公司针对开发人员设计的接口,供开发人员调用,以显示开发者想要的地图信息,显示在特定的页面上。本系统
18、使用的是Google Maps JavaScript API V3,该服务是Google提供的免费服务。1.3.3Jetty 6.0介绍Jetty 是一个开源的Servlet容器,它为基于Java的web内容,例如JSP和Servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。 Jetty具有以下特征:1.易用性:易用性是 Jetty 设计的基本原则,易用性主要体现在以下几个方面:通过 XML 或者 API 来对 Jett
19、y 进行配置;默认配置可以满足大部分的需求;将Jetty 嵌入到应用程序当中只需要非常少的代码;在使用了Ajax的Web 2.0 的应用程序中,每个连接需要保持更长的时间,这样线程和内存的消耗量会急剧的增加。这就使得我们担心整个程序会因为单个组件陷入瓶颈而影响整个程序的性能。但是有了 Jetty:即使在有大量服务请求的情况下,系统的性能也能保持在一个可以接受的状态。利用 Continuation 机制来处理大量的用户请求以及时间比较长的连接。 另外 Jetty 设计了非常良好的接口,因此在 Jetty 的某种实现无法满足用户的需要时,用户可以非常方便地对 Jetty 的某些实现进行修改,使得
20、Jetty 适用于特殊的应用程序的需求。 2.易嵌入性:Jetty 设计之初就是作为一个优秀的组件来设计的,这也就意味着 Jetty 可以非常容易的嵌入到应用程序当中而不需要程序为了使用 Jetty 做修改。从某种程度上,你也可以把 Jetty 理解为一个嵌入式的Web服务器。Jetty 可以作为嵌入式服务器使用,Jetty的运行速度较快,而且是轻量级的,可以在Java中可以从test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。 1.3.4 Ant 1.7介绍Ant是一种构建工具,设计这个小型的程序的目的在于帮助软件团队开发大型的程序。它可以将所有繁琐的工
21、作任务自动化完成,包括编译代码、运行测试以及程序打包和重发布。Ant是Java编写的,其特点是跨平台、易用、可拓展和可伸缩等。它既可以用于小型的个人项目,也可以用于大型的、多团队协作的软件项目。Ant的目标是,将整个构建过程自动化。第二章 Google Maps API用法介绍2.1 Google Maps JavaScript API V3介绍2.1.1简介Google Maps API 是Google公司针对开发人员设计的接口,供开发人员调用,以显示开发者想要的地图信息,显示在特定的页面上。本系统使用的是Google Maps JavaScript API V3,该服务是Google提供的
22、免费服务。本章重点介绍了google.maps.Map基础对象的用法和地图操作的基本知识。2.1.2 Google Maps 第 3 版的 “Hello, World”若想初步了解Google Maps API 的简单方法是介绍一个简单的例子。以下代码放入网页中,将显示以澳大利亚新南威尔士的悉尼为中心的地图: html height: 100% body height: 100%; margin: 0px; padding: 0px #map_canvas height: 100% script type=text/javascript src= function initialize() v
23、ar latlng = new google.maps.LatLng(-34.397, 150.644); var myOptions = zoom: 8, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP ; var map = new google.maps.Map(document.getElementById(map_canvas), myOptions); 本示例程序很简单,但是有几点需要注意:1.需要使用了声明将应用程序声明为 HTML5。2.需要使用标记来加入 Maps API JavaScript文档。3.需要创建
24、一个名为“map_canvas”的 div 元素来显示该地图。4.需要创建 JavaScript对象常量,目的是保存若干地图属性。5.需要根据自己的实际情况编写 JavaScript函数以创建“map”对象。6.需要在 body 标记的 onload 事件初始化该地图对象。2.1.3 将应用程序声明为HTML5官方建议在自己的网页文档中声明一个存在的DOCTYPE。在本章的例子中,使用了简单的HTML5 DOCTYPE 将应用程序声明为HTML5,如下图所示目前的绝大部分浏览器会用“标准模式”呈现使用此 DOCTYPE 声明的内容,这意味着我们使用的应用程序应当具有更强的跨浏览器适应能力。DO
25、CTYPE 还被设计为可适度降级;无法理解它的浏览器会将它忽略,并使用“兼容模式”来显示内容。请注意,某些在兼容模式下工作的 CSS 在标准模式中是无效的。具体地说,所有以百分比表示的尺寸必须继承自父块元素,而如果这些父元素中的某个父元素没有指定尺寸,则系统会将其尺寸假定为 0x0 像素。为此,我们加入了以下 声明: html height: 100% body height: 100%; margin: 0px; padding: 0px #map_canvas height: 100% 该 CSS 声明表示地图容器 (名称为 map_canvas)应当占据 HTML 主体的完整高度。请注意
26、,我们还应当明确声明 和 的相应百分比。 2.1.4载入Google Maps APIscript type=text/javascript src= 网址指向 Javascript 文件所在的位置,该文件会载入使用第 3 版 Google Maps API 所需的全部符号和定义。您的网页必须包含指向该网址的 script 标签。此标头中的 标签会指定如下内容:即应当以全屏模式显示该地图,且用户不能调整地图尺寸。(有关详细信息,请参见开发移动设备部分。)请注意,我们还需要设置 sensor 参数,以指明此应用程序是否使用传感器确定用户的位置。在此示例中,我们将该参数设为变量“set_to_tr
27、ue_or_false”,用于强调您必须将该值显式设为 true 或 false。当通过 网址加载 JavaScript Maps API 时,您还可以选择使用 libraries 参数来加载其他库。库是向主 JavaScript API 提供其他功能的代码的模块,但只有在您专门请求时才会加载。有关详情,请参见 V3 Maps API 中的库。如果您的应用程序是 HTTPS 应用程序,则您可以改为阅读通过 HTTPS 加载 Google Maps JavaScript API。2.1.5地图DOM元素要在网页上显示地图,我们必须为其留出一个位置。通常,我们的做法是创建一个名为 div 的元素,
28、然后在浏览器的文档对象模型 (DOM) 中获取此元素的引用。在上述示例中,我们定义了名为“map_canvas”的 并使用样式属性设置其大小。请注意,该尺寸已设置为“100”,这将会展开地图,使之符合移动设备的屏幕尺寸。您可能需要根据浏览器的屏幕尺寸和填充区域调整这些值。请注意,地图总是会根据其中所包含的元素的大小决定其本身的尺寸,因此,您必须始终在 上显式设置一个适用的尺寸。2.1.6地图选项var myLatlng = new google.maps.LatLng(-34.397, 150.644);var myOptions = zoom: 8, center: myLatlng, ma
29、pTypeId: google.maps.MapTypeId.ROADMAP;要初始化地图,我们需要先创建一个包含地图初始化变量的 Map options 对象。该对象不是构建出来的,而是以对象常量的形式创建出来的。由于我们要将地图的中心设定为某一特定的点,因此,我们还需要创建一个 latlng 值,以保存此位置信息并将其传递到地图的选项中。有关指定位置的详细信息,请参阅下面的 纬度和经度部分。 我们还设置了初始缩放级别,并将 mapTypeId 设置为 google.maps.MapTypeId.ROADMAP。系统支持以下类型: ROADMAP,用于显示 Google Maps 默认的普通
30、二维图块。 SATELLITE,用于显示拍摄的图块。 HYBRID,用于同时显示拍摄的图块和突出特征(道路、城市名)图块层。 TERRAIN,用于显示自然地形图块,自然地形图块中会显示高度和水体特征(山脉、河流等)。与 Google Maps 第 2 版 API 不同的是,第 3 版中没有设置默认地图类型。您必须明确设置一个初始地图类型,才能查看相应的图块。关于地图类型的详情,请参见地图类型部分。不过大部分情况下,您只需了解上述基本类型的使用就足够了。2.1.7Google.maps.Map基本对象var map = new google.maps.Map(document.getElemen
31、tById(map_canvas), myOptions);Map 类是表示地图的 JavaScript 类。此类的对象定义了网页上的单个地图。(您可以创建此类的多个实例,每个对象都将在网页上定义一个单独的地图。)我们使用 Javascript new 操作符创建此类的一个新实例。创建新的地图实例时,您需要在网页中指定一个 HTML 元素作为地图的容器。HTML 节点是 Javascript document 对象的子对象,而且我们通过 document.getElementById()方法获得该元素的引用。此代码可定义一个名为 map 的变量,然后将该变量分配给新的 Map 对象,同时将该变
32、量传递到在 myOptions 对象常量内定义的选项中。这些选项将会用于初始化地图的属性。Map()函数称为“构造函数”,其定义如下:说明google.maps.Map( opts?)使用 opts 参数中传递的可选参数来创建新地图。2.1.8载入地图呈现 HTML 网页时,会扩展文档对象模型 (DOM),接收任何外部图像和脚本并将其合并到 document 对象中。为了确保系统在完全载入网页后才将我们的地图添加到网页上,我们只会在 HTML 网页的 元素收到 onload 事件后,才会执行用于构建 Map 对象的函数。这样做可以避免出现不可预期的行为,并使我们可以对地图绘制的方式和时间进行更
33、多控制。body 标签的 onload 属性是事件处理程序的一个示例。Google Maps Javascript API 还提供了一组事件,可供您进行处理以确定状态变化。有关详细信息,请参阅地图事件部分。查看示例 (map-simple.html)2.1.9经度纬度我们还需要一种引用各种地图位置的方法。在 Google Maps API 中,google.maps.LatLng 对象提供了此类机制。您可以构建一个 LatLng 对象,以 纬度, 经度 的顺序传递其参数: var myLatlng = new google.maps.LatLng(myLatitude, myLongitude
34、)请注意:将“地址”转变为地理地点的过程叫做“地址解析”。此版本的 Google Maps API 可支持地址解析。有关详细信息,请参见服务部分中的地址解析。LatLng 对象在 Google Maps API 中用途广泛。例如,google.maps.Marker 对象会在其构造函数中应用 LatLng,并在地图上所指定的地理位置上添加标记 叠加层。2.1.10缩放级别如果要将包含完整地球的地图作为单幅图片提供,则要么需要极大的地图,要么需要分辨率极低的小型地图。因此,Google Maps 和 Maps API 内的地图图像被分割为地图“图块”和“缩放级别”两部分。在低缩放级别下,一小组地
35、图图块就可以覆盖广阔的区域;而在高缩放级别下,图块的分辨率会更高,覆盖的区域则会更小。要指定地图的显示分辨率,您可以设置 Map 的 zoom 属性,其中缩放 0 相当于将地球地图缩小到最低程度,而较高的缩放级别会将地图放大到较高的分辨率。下面三张图片分别反映了东京的同一位置在缩放级别为 0、7、18 时的情景。 第三章 系统分析与总体设计总体设计是对有关系统全局问题的设计,也就是设计系统总的处理方案,又称系统概要设计。它包括:各模块描述设计、系统流程图设计、系统功能结构设计以及数据库设计。3.1 云位置服务系统的需求分析3.1.1本系统设计的总体目标本系统是一个为用户提供信息服务的系统,本系
36、统可以根据用户所输入的筛选条件,显示特定的轨迹点信息,以实现管理简便化。其中,需要运用Google Maps API相关接口开发实现位置显示等功能。目的在于研究和实现快捷的向用户显示全部有价值的数据,以实现管理简便化。以网站为载体实现显示过程。1. 能够实现监控最近6个小时的数据。用户上传的数据是源源不断的,但是想要查看的不一定是全部的。所以,必须能够实现只显示最新的轨迹点的功能。2. 能够查看用户指定的时间段的位置信息。当数据量相当庞大时,就要过滤掉不符合时间段的规则,这样能排除一些无关数据的干扰。3. 能够实现只显示GPS轨迹信息的功能,因为设备在GPS信号不佳的时候就会上传基站定位的信息
37、,基站定位的一个缺点是不能提供准确的位置信息,只有一个区域信息,当用户只想查看准确的位置信息时,必须过滤掉基站定位的轨迹点,只显示GPS定位的轨迹点。4. 能够分设备显示位置信息。因为同一用户可以有多个设备,必须能保证用户能分别管理单个设备的信息。5. 能够控制设备的有效期。因为该系统属于商业软件,设备是有使用期限的,到期必须能终止提供的服务,所以要有管理授权码的功能。6. 能够提供使用指南的下载功能。用户可以下载使用方法的说明文档,下载到本地查看。7. 能够提供模拟的数据显示。因为当用户想要购买该设备时,需要让用户体验功能,所以需要提供该功能供用户查看虚拟数据。3.2 云位置服务系统的总体设
38、计如图所示的UML活动图来表示前台主要功能。图 5.1 GPS轨迹管理系统前台UML活动图第四章 详细设计和代码实现4.1本系统的数据库设计4.1.1网站数据库的设计本网站采用MYSQL数据库作为后台数据库。1.数据库名为:tracker。由44张表组成:(1) 表activations是激活码表,记录了所有的合法激活码。(2)表admin_logs是管理员日志表,记录了管理员操作的日志。(3) admin_sessions(4)admin_users(5) api_tokens(6) Apn(7) auto_logs_tracker(8) Captchas(9) Cellids(10) de
39、vice_icons(11) Devices(12) Events(13) events_deleted(14) Heartbeats(15) illegal_devid(16) imei_regcode_mappings(17) ipn_logs_tracker(18) license_tracker(19) Logs(20) lot_products(21) Offsets(22) reg_classes(23) reg_customers(24) reg_durations(25) reg_info(26) reg_logs(27)reg_lots(28) reg_payments(29
40、) reg_products(30) reg_products_trial_data(31) regadmin_logs(32) regadmin_sessions(33) regadmin_users(34) sapi_tokens(35) Segments(36) segments_deleted(37) segments_old(38) Sessions(39)subscribe_tracker(40) ts_logs_tracker(41) updated_state_tracker(42) Users(43) users_deleted(44) users_tracker4.2本系统的Server端Java代码实现4.3本系统的Client端JavaScript代码实现第五章 测试结果