地铁沉降数据采集与分析系统_第1页
地铁沉降数据采集与分析系统_第2页
地铁沉降数据采集与分析系统_第3页
地铁沉降数据采集与分析系统_第4页
地铁沉降数据采集与分析系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

地铁沉降数据采集与分析系统摘要为了紧跟社会的发展,实现地铁沉降数据的信息化、网络化、系统化管理,同时为了降低勘测地铁沉降的成本,不再进行人工检测费时费力,发挥物联网的优势,开发了地铁沉降数据采集与分析系统。本系统采用B/S模式,以Java为基础,使用Springboot框架,IDEA编程,后台数据库使用TDengine新型数据库,服务器则使用Tomcat。系统主要功能包括定时收集到地铁沉降的数据,对数据进行统计和分析,通过数据得出对未来的期望等。关键词:数据采集与分析;地铁沉降;SpringBoot;IDEA;Springboot;TDengine;Tomcat;DesignandimplementationofonlineauctionsystemAbstract\o"添加到收藏夹"Inordertokeepupwiththedevelopmentofsociety,realizetheinformation,networkandsystematicmanagementofsubwaysettlementdata,andreducethecostofsubwaysettlementsurvey,nolongerneedtocarryoutmanualdetectiontimeandeffort,andgivefullplaytotheadvantagesoftheInternetofthings,asubwaysettlementdataacquisitionandanalysissystemisdeveloped.ThissystemadoptsB/Smode,andonthebasisofJava,Springbootintegrationoftheframeworks,Programmingwithidea,backgrounddatabaseusingTDenginedatabase,,theserverusesTomcat.Themainfunctionsofthesystemincludecollectingthesubwaysettlementdataregularly,makingstatisticsandanalysisofthedata,andgettingtheexpectationforthefuturethroughthedata.KEYWORDS:Datacollectionandanalysis;Subwaysettlement;IDEA;SpringBoot;TDengine;Tomcat;目录TOC第1章绪论 11.1开发背景及意义 11.2论文研究内容 2第2章系统总体设计 32.1需求分析 32.2框架结构 32.3流程分析 6第3章系统详细设计 83.1数据库设计 83.2应用程序设计 8第4章系统实现 104.1工具选择 114.1.1TDengine 错误!未定义书签。4.1.2Springboot 124.1.3Tomcat 124.2代码实现 12总结与展望 21致谢 22参考文献 23PAGE15第1章绪论。本章对系统的开发背景、意义及发展状况进行了介绍,在简要了解相关知识后,概要的说明了系统的研究内容。1.1开发背景及意义在21世纪科技高速发展的年代,互联网的出现和使用已经普及全世界,而浏览器的使用也已经成为了潮流。通过浏览器输入网址登陆网站来预约考试、订餐、购物、查成绩等等都为人们带来了便捷,使人们的生活水平也不断提高。改革开放以来,轨道交通在各个大城市发展迅速,数量迅速增加。地铁项目是高效的运输方式,运行轨道遍布城市市区的地下,在方便居民出行,缓解道路交通压力的同时又存在对周边建筑的影响。在路面的地铁,除了常见的列车运行噪声的影响之外,也包括对周边建筑的振动产生影响。在地铁主要运行的地下隧道,对周边建筑的振动影响则占到了主要噪声影响则占到次要。对于大部分运行里程都在地下的铁路来说,分析研究地铁运行对周边建筑振动影响显得十分重要。研究表明:位于地下2m深处的振动加速度值为地表的20%~50%;4m深处为10%~30%。可见在地铁运行产生的振动中,表面波占主要地位,对建筑物有直接影响。为缓解交通压力,地铁不得不穿过城市中密集的居民区、商业中心,而且目前都是采用浅埋方式,地铁隧道离建筑物越来越近。将来随着地铁交通系统规模的不断扩大,地铁隧道邻近建筑物的情况越来越多,同时地铁运行的总体密度逐步提高,振动的影响日益增大。振动对建筑物的影响,轻微的会出现墙皮剥落、墙壁龟裂、地板裂缝,严重则导致基础变形或下沉。而大多数数据显示,地铁沉降到达30mm的时候,地铁就会存在潜在危险,所以我们要时刻检测地铁的沉降情况以防止出现不必要的意外和重大事故。但频繁的人工检测耗费太多的人力物力。所以设计这个项目的主要目的就是为了解决这一问题。监测地铁下沉的情况并及时的采集数据,作出未来趋势的分析,以便做出未来的规划。1.2论文研究内容论文研究内容如下∶设计一个属于自己的地铁沉降影响的监测系统以及一个web项目。实现用户对于周边建筑物的检测,并且能够及时、准确地将沉降情况反馈给系统管理人员以及系统的用户。首先,分析地铁沉降数据采集与分析系统,确定系统主要功能需求。

第二,在确立系统的目标和主要功能需求的基础上,提出这个地铁沉降数据采集与分析系统的设计方案和设计原则,合理安排开发进度,设计各个功能模块,选择开发工具和开发模式,并选定服务器操作系统和数据库管理系统。

第三,进行具体的系统的开发,实现各功能模块,达到系统的目标最终完成系统的功能需求。

最后,系统的设计开发完成后,要对系统进行测试和性能分析。拟采取的研究方法:设计方法:1.利用时间序列管理与分析采集数据2.通过测量的数据利用TDengine构建坐标数据3.分析它的变形情况,得出相应的结论4.对未来的变化趋势进行分析,完成项目5.对设计好的程序进行调试,发现问题并解决问题,从而达到完善系统的目的开发工具:jdk1.8springbootTDengineIDEA2018VMware虚拟机等第2章系统总体设计从本章起,开始进行系统设计,首先对系统进行总体设计,在这个阶段要完成的工作包括:对系统的功能需求进行详细的分析,而后根据分析得到的结果搭建出系统整体的框架,划分出系统的各个功能模块,在此基础之上明确系统流程结构,绘制出系统的简要流程图。需求分析软件开发的第一个阶段是需求分析,并且是尤为重要的一个阶段,若需求分析出现差错,后续的一切工作只能是徒劳无功。因此需求分析阶段,通常需要花费不少的时间以及精力,以确保分析的结果符合实际、考虑全面,并且足够详细,只有这样才能为之后的工作打下牢固的基础。需求分析是指程序开发人员通过各种方式,与客户沟通,准确理解用户的要求,系统需要有什么样的功能,客户需要看到什么样的信息,使用本地铁沉降数据采集与分析系统又能得到什么样的结果,将较抽象的需求转化为完整详细的文字描述,以便设计开发完成用户满意的系统。综合对需求,计划本系统实现的功能有以下几方面:1、数据采集模块记录采集的时间记录采集到的数据2、数据处理模块将采集到的数据和时间直接绘制成柱形图统计总数据,将总数据和时间绘制成线形图3、数据分析模块通过分析得到的数据推测地铁废弃的时间2.2框架结构需求分析完成后,根据产生的结果,本系统总体的结构可以划分为以下功能模块,如图2-1。图2-1地铁沉降数据采集与分析模块示意图本数据采集与分析系统划分为3个功能模块,分别是:数据采集模块,数据处理模块,数据分析模块。在本系统中,数据采集模块涉及时间数据和沉降数据的采集;数据处理系统涉及数据图标的绘制;数据分析模块涉及对数据的分析与预测。接下来简要说明这几个模块。数据采集模块数据采集模块主要是对于沉降数据进行采集,并对采集日期进行记录,如图2-2所示。图2-2数据采集模块示意图数据处理模块数据处理模块主要是对写入采集的数据,并对数据进行各种必要的处理,因此数据处理模块也是本系统最为重要的模块,如图2-3所示。图2-3数据处理示意图数据分析模块数据分析模块主要是对处理过后的数据进行分析,并预测地铁沉降何时到达30mm,如图2-4所示。图2-4数据分析模块示意图2.3流程分析接下来对整个系统的流程进行分析,也就是就是在使用系统各种功能时的具体操作步骤。系统开始,然后进入数据采集模块,会自动记录采集的日期,然后记录下在采集的数据并保存。然后进入数据处理模块,将保存的数据直接写入日期x沉降数据的柱形图,然后再计算沉降数据的总和,得出合并数据,然后再将合并数据写入日期x沉降总数据的线形图。之后进入数据分析模块,将沉降总数据/月份差简略预测多少年地铁会到达报废日期。第3章系统详细设计前面已经陈述了本系统的开发背景、意义,分析介绍了系统的总体设计,并说明了系统的功能作用,对系统的规划有了较明确的概念。下面以第二章总体设计为基础,对其中各个功能模块进行详细的后台数据库和前台应用程序设计。数据库设计数据库,即存储数据的仓库,是存放在计算机内数据的集合,可以将其粗略的分为两类分别是关系型数据库和非关系型数据库(NoSQL)。,本系统选择了专为物联而生的TDengine数据库来存储系统中的信息。进行存储查询物联网、传感器等一系列的大型数据的话,建立数据库的同时需同时建立起几张超级表方便以后查询:createtable超级表名字(字段名字段类型,字段名字段类型,)tags(标识名标识类型,标识名标识类型));(标识可以用多个,方便区别超级表下的各个子表,保证子表的唯一性方便查询)。接下来建立子表,子表的建立可以直接写在mybatis的xml文件中,使用sql语句的#{}或是${}占位符编写,子表的名字需要区别行直接把数据表的名字写成动态的:insertintos#{name}using超级表名字tags(标识符的值,标识符的值)values(字段的值,字段的值)这样就可根据接收的不同数据判断是创建新表还是在老表进行数据添加在接下来就是简单的一些查询:select*froms#{name}年月日分别有数据特定的算法:字段名>now-1d(日),字段名>now-1w(周)3.2应用程序设计上一小节介绍了本系统数据库的设计,数据库用于保存系统所必要的数据,而前台页面则是使用适当的形式将数据库中保存的数据展示给用户。下面介绍一下本系统各页面及其功能。首先是一个柱状图,表示来每次测量沉降数据的沉降数据变化,纵坐标我设立了以2mm为单位的沉降量,横坐标我设立了以月为单位的时间计量,柱色选择了红色,使得画面更加的明显清晰,这样我们就可以清晰地看出每个月地铁沉降情况的数据了。接下来是一个线状图,表示来每次测量沉降数据的沉降数据总和,纵坐标我设立了以200为单位的沉降量,横坐标我设立了以月为单位的时间计量,线色选择了红色,使得画面更加的明显清晰,这样我们就可以清晰地看出地铁沉降数据总和的情况了。接下来是对地铁沉降情况的分析预测,从这些数据估略的分析出地铁报废的时间。第4章系统实现上面两章分别为本系统的总体结构设计和详细功能设计,本章主要介绍实现本系统各个功能模块所使用的语言、借助工具和技术等,并且给出系统主要功能的实现代码。工具选择一个系统从设计到完成需要使用合适的工具,具体的工具又分为语言、编辑软件、框架的等。本系统使用的数据库为TDengine;使用Java语言编写,开发编译环境为jdk1.8.0,用IDEA作为前台软件开发工具,使用SpringBoot框架整合,使用Tomcat作为应用服务器。下面逐一介绍。TDengine对于一个JavaWEB系统,选择一个合适的数据库是必要的,它将系统中需要的数据保存起来,对它们进行统一的管理,最常见的便是“增删改查”四种操作,本系统使用TDengine数据库。TDengine社区版是一开源版本,采用的是AGPL许可证,是一个处理中小规模的物联网数据平台。它具备高效处理物联网数据所需要的所有功能,包括:1.类SQL查询语言来插入或查询数据2.支持C/C++,Java(JDBC),Python,Go,RESTful,andNode.JS等开发接口3.通过TDengineShell或Python/R/Matlab可做各种AdHoc查询分析4.通过连续查询,支持基于滑动窗口的流式计算5.引入超级表,让设备之间的数据聚合通过标签变得简单、灵活6.内嵌消息队列,应用可订阅最新的数据7.内嵌缓存机制,每台设备的最新状态或记录都可快速获得8.无历史数据与实时数据之分,对应用而言,透明且完全一样9.TDengine软件分为服务器、客户端和报警模块三部分,服务器部分taosd目前仅能在Linux系统上安装和运行,客户端和报警模块仅能在Linux或Windows上运行。4.1.2SpringBootSpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot使得基于Spring创建独立的、生产级别的应用程序变得非常简单。大多数的SpringBoot应用程序,只需要进行很少的Spring配置,一般你只需花费很少的时间就能基于SpringBoot进行程序开发。SpringBoot特性:1.创建独立的spring应用程序2.SpringBoot直接内嵌了Tomcat、Jetty和Undertow容器,不需要通过war文件进行部署3.通过提供"starter"依赖,来简化构建配置4.尽可能的自动配置spring和第三方类库5.提供production-ready特性,比如指标和运行状况检查以及外部化配置6>.没有代码生成,也不需要通过XML进行配置4.1.3TomcatTomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。代码实现前面的章节完成了系统的整体以及详细设计,并介绍了系统使用的工具、语言以及框架,本章的主要内容是应用程序的配置及部分代码。4.2.1环境配置JDK的安装从官网下载JDK并安装。安装完成后开始配置环境变量,找到此电脑——>右键单击属性——>高级系统设置——>环境变量新建系统变量HOME_JAVA——>JAVA_HOME里面存放jdk的路径找到path环境变量——>点击编辑——>在path最前面加上.;%JAVA_HOME%\bin;安装完成以后按win+R——>打开cmd窗口——>输入java——>再输入输入Java–version无异常,安装完毕。linux系统的安装因为TDengine数据库服务器端只能在linux上运行,而我们电脑的系统都是windox,所以我们需要先下载虚拟机VMware。虚拟机是正常安装安装完虚拟机后,需要在虚拟机上安装linux系统。这里我们用的是CentOS8。首先从官网下载CentOS8安装程序光盘映像文件,下载完后打开虚拟机。选择安装光盘映像文件,他会自己识别并安装完成。TDengine的安装下载俩个,第一个是服务器需要rpm包,第二个是本机使用的exe安装软件(直接下一步运行就行)。(1)、判断自己的服务器是否支持systemctl的命令然后进入自己的目录进行安装rpm包:rpm-ivhtdengine--3.el7.x86_64.rpm。然后直接使用systemctlstarttaosd进入taos数据库就可以简单的使用了,操作的一些命令直接看官方文档就行,跟mysql的建表建库是一样的,退出直接ctrl+d。exe文件直接在本机点击安装就行。SpringBoot连接TDengine数据库创建一个目录直接把jar包打包进项目里面。其次需要在pom.xml中指定jar包的位置,直接当成配置写入即可。这样就方便打包后找到jar包了4.2.2TDenigine数据库实现通过上述代码的实现,数据库代码设计部分完成,下面介绍应用程序代码的实现。4.2.3应用程序代码实现读取TDengine数据库的数据packagecom.example.demo.action;

importjava.util.ArrayList;

importjava.util.List;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RequestMethod;

importorg.springframework.web.bind.annotation.ResponseBody;

importorg.springframework.web.bind.annotation.RestController;

importcom.example.demo.model.DayTotal;

@RestController

@RequestMapping("/wanglk_bds")

publicclassVisualController{

//@Autowired

//privateVisualInterfacevisualInterface;

/**

*每一天的访问用户量

*@return

*/

@RequestMapping(value="/bar-simple",method=RequestMethod.GET,produces="application/json")

@ResponseBody

publicList<DayTotal>getDateTotal(){

System.out.println("getDateTotal");

List<DayTotal>all=newArrayList<>();

for(inti=0;i<=80;i++)

{

DayTotaldayTotal=newDayTotal();

dayTotal.setDate(i+"月");

dayTotal.setTotal(i+"");

all.add(dayTotal);

}

returnall;

}

}packagecom.example.demo.model;

publicclassDayTotal{

privateintid;

privateStringdate;

privateStringtotal;

publicintgetId(){

returnid;

}

publicvoidsetId(intid){

this.id=id;

}

publicStringgetDate(){

returndate;

}

publicvoidsetDate(Stringdate){

this.date=date;

}

publicStringgetTotal(){

returntotal;

}

publicvoidsetTotal(Stringtotal){

this.total=total;

}

publicDayTotal(intid,Stringdate,Stringtotal){

super();

this.id=id;

this.date=date;

this.total=total;

}

publicDayTotal(){

super();

//TODOAuto-generatedconstructorstub

}

}网页设计<!DOCTYPEhtml>

<htmlstyle="height:100%">

<head>

<metacharset="utf-8">

</head>

<bodystyle="height:100%;margin:0">

<iframesrc="index2.html"frameborder="0"width="800"scrolling="No"

height="700"leftmargin="0"topmargin="0"></iframe>

<scriptsrc="/echarts/3.7.1/echarts.min.js"></script>

<scriptsrc="/jquery-1.4.1.min.js"></script>

<divid="mainChart"

style="height:700px;border:1pxsolid#ccc;padding:10px;"></div>

<scripttype="text/javascript">

vardom=document.getElementById("mainChart");

varmyChart=echarts.init(dom);

myChart.clear();

$

.ajax({

method:'get',

url:'http://localhost:8080/wanglk_bds/bar-simple',

dataType:'json',

success:function(data){

varoption={

xAxis:{

name:'日期',

type:'category',

data:[data[0].date,data[1].date,

data[2].date,data[3].date,

data[4].date,data[5].date,

data[6].date,data[7].date,

data[8].date,data[9].date,

data[10].date,data[11].date]

},

yAxis:{

name:'沉降量'

},

series:[{

data:[data[0].total,data[1].total,

data[2].total,data[3].total,

data[4].total,data[5].total,

data[6].total,data[7].total,

data[8].total,data[9].total,

data[10].total,data[11].total],

type:'bar'

}]

};

myChart.setOption(option,true);

}

});

</script>

</body>

</html><!DOCTYPEhtml>

<htmllang="en">

<head>

<metacharset="utf-8">

<title></title>

<scriptsrc="/echarts/3.7.1/echarts.min.js"></script>

</head>

<body>

<divid="box"style="width:1000px;height:500px;background-color:pink;"></div>

<script>

//获取到这个DOM节点,然后初始化

varmyChart=echarts.init(document.getElementById("box"));

//option里面的内容基本涵盖你要画的图表的所有内容

//定义样式和数据

varoption={

//给echarts图设置背景色

backgroundColor:'#FBFBFB',//>//给echarts图设置背景色

tooltip:{

trigger:'axis'

},

legend:{

data:['沉降数据']

},

calculable:true,

xAxis:[{

type:'category',

//boundaryGap:false,

data:function(){

varlist=[];

for(vari=10;i<=18;i++){

if(i<=12){

list.push('2016-'+i+'-01');

}else{

list.push('2017-'+(i-12)+'-01');

}

}

returnlist;

}()

}],

yAxis:[{

type:'value'

}],

series:[{

name:'沉降数据',

type:'line',

data:[800,300,500,800,300,600,500,600]

}]

};

myChart.setOption(option);

</script>

</body>

</html>本章主要介绍了系统中使用语言、工具和相应的技术,并讲解了一下具体的代码,接下来是对整个论文以及系统设计的总结与展望。总结与展望无奈疫情期间无法返校,但是在老师三个月指导帮助下,地铁沉降数据采集与分析系统终于完成了。只要不停的努力,不可能就会变成可能。本系统的设计与开发遵循软件工程的瀑布模型,开发过程通过一系列的阶段顺序展开,经过需求分析、软件设计、编码实现等步骤最终完成。系统的设计实现,使我在数据库、应用程序设计与实现以及对框架的使用等方面有了极大的进步。本次制作系统使JAVA功底不深厚的我重新学习了JAVA的应用及开发。并且在假期自学了Maven跟Sringboot。作为一个技术小白迈出了坚实的一步。本系统为了测量地铁沉降的数据,我查阅了许多关于地铁振动沉降的书籍,学习了很多沉降的知识,以便完善系统的功能。因为大意把笔记本放在了学校,没想到一直开不了学,只能用家里的老年机,研究了很久的系统却经常因为32位的电脑而不了了之,这让我深切体会到硬件对软件开发的重要性。经过重重考验,在万老师的帮助与鼓励下,才完成了环境的配置,终于

温馨提示

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

评论

0/150

提交评论