汽车导航gps软件设计课程 - 图文
更新时间:2024-06-01 11:28:01 阅读量: 综合文库 文档下载
GIS软件设计Ⅱ 实验报告
专 业 学 号 姓 名
一、软件设计目的:
通过构建嵌入式终端模块、服务器端模块、浏览端模块这三个模块,掌握利用windows mobile模拟汽车导航、SQL server完成车辆GPS数据读取管理、google earth API完成车辆位置信息浏览,并以此增强C#编程能力。 二、软件设计内容:
本次软件设计内容分三部分模块进行,该三个模块分别为嵌入式终端模块、服务器端模块、浏览端模块,最后这三个模块集成为该小组软件系统,三个模块需要完成的内容如下所示:
嵌入式终端模块:
该部分模拟汽车导航终端软件部分。
基本功能要求:能实现电子地图浏览、读取模拟GPS数据、GPS数据显示(即当前位置显示)、GPS数据上传至服务器数据库。 软件推荐:windows mobile 服务器端模块:
主要完成车辆GPS数据读取管理。
基本功能要求:读取终端上传过来的GPS数据,并存储。支持对车辆GPS数据进行检索查询等操作、终端当前位置、历史轨迹查询需求。 软件推荐:SQL server、C#语言 浏览端模块:
完成车辆位置信息浏览基本功能。
功能要求:在web 浏览器上显示车辆当前位置、移动轨迹、历史轨迹等。 软件推荐:google earth API 、灵图API、ASP.net 三、软件实现 数据准备:
1、 遥感影像配准(WGS_84),并导出.img文件(已包含坐标信息)
1.1加载影像图
1.2为Layers定义坐标系统Predefined\\Geograpic Coorinate Systems\\World\\WGS 1984
1.3将配准好的图导出
2、 SDE中建立数据库,要素类Car,并注册版本添加GlobalID(不确定是否每一步都必
要,但这样做肯定没问题)如图
3、 制作mxd地图文档,添加img文件和Car,
4、 发布地图服务,
5、 利用ArcToolbox\\Mobile Tools\\Generate Mobile Service Cache工具发布的服务
转换为bin文件,作为mobileservice读取的数据
6、 后台建立数据库,建立表,设置如图字段
7、 GPS数据的准备,建立文本文件,自定义数据格式,点名、X坐标、Y坐标、……
嵌入式汽车导航终端软件系统 (1)窗口界面设计
向窗口拖入7个button控件,修改它们的text属性,分别为加载、放大、缩小、漫游、停止、单步显示、自动显示;向窗体拖入1个Lable控件,将它的text属性改为位置列表;向窗体拖入一个Listbox控件、一个Timer控件和一个map控件。窗口设计如下:
(2)代码设计
1)双击加载button控件,写入代码,读取存放在txt文档中的GPS数据,代码如下: string strLine = \;
string filename = \数据.txt\; try {
FileStream aFile = new FileStream(filename, FileMode.Open); StreamReader sr = new StreamReader(aFile); strLine = sr.ReadLine(); while (strLine != null) {
if (strLine != null) {
string[] strArr = strLine.Split(','); MyClass PointsCollection = new MyClass(); //PointsCollection.name=strArr[0]; name[i++] = strArr[0];
PointsCollection.Coordinate.X = Convert.ToDouble(strArr[1]);
PointsCollection.Coordinate.Y = Convert.ToDouble(strArr[2]);
Pointkindscc.Add(PointsCollection.Coordinate); }
strLine = sr.ReadLine(); }
sr.Close(); }
catch (IOException ex) {
MessageBox.Show(ex.ToString()); }
2)双击放大butto控件,写入代码,实现电子地图的放大功能,代码如下: this.map1.CurrentMapAction = this.zoomInMapAction1;
3)双击缩小button控件,写入代码,实现电子地图的缩小功能,代码如下: this.map1.CurrentMapAction = this.zoomOutMapAction1;
4)双击漫游button控件,写入代码,实现电子地图的漫游功能,代码如下: this.map1.CurrentMapAction = this.panMapAction1;
5)双击单步显示button控件,写入代码,实现单击一次按钮显示一次汽车当前位置的功能,代码如下: DeleteAll();
ShowCar(t); if (t < 29) {
t = t + 1; } else t = 0; private void DeleteAll() {
FeatureLayer featurelayer = this.mobileService1.Layers[0] as FeatureLayer;
QueryFilter queryfilter = new QueryFilter(); FeatureDataTable featuredatatable = featurelayer.GetDataTable(queryfilter, null);
foreach (FeatureDataRow row in featuredatatable.Rows) row.Delete();
featuredatatable.SaveInFeatureLayer(); }
private void ShowCar(int t) {
ESRI.ArcGIS.Mobile.Geometries.Point tp = new ESRI.ArcGIS.Mobile.Geometries.Point(Pointkindscc[t]); string selectlayername = \;
m_selectedFeatureLayer = this.mobileService1.Layers[selectlayername] as FeatureLayer;
FeatureDataTable featureDataTable = m_selectedFeatureLayer.GetDataTable(); //要素表对象featureDataTable新增一条空的记录
FeatureDataRow editedFeature = featureDataTable.NewRow();
//获取要素图层对象的几何列,并把SketchGraphicLayer图层的几何值赋值给他
int geometryIndex = m_selectedFeatureLayer.GeometryColumnIndex;
editedFeature[geometryIndex] = tp; // 把新增的记录赋回到要素数据表中
featureDataTable.Rows.Add(editedFeature);
//保存结果
featureDataTable.SaveInFeatureLayer();
string X = tp.Coordinate.X.ToString();
string Y = tp.Coordinate.Y.ToString();
this.listBox1.Items.Add(name[t] + \ + X + \ + Y); this.listBox1.SelectedIndex = k++; UpLoad(name[t], X, Y); }
6)双击自动显示button控件,写入代码,实现每隔一秒显示汽车的当前位置,代码如下: this.timer1.Enabled = true;
private void timer1_Tick(object sender, EventArgs e) {
DeleteAll(); ShowCar(t); if (t < 29) {
t = t + 1; } else t = 0; }
7)双击停止button控件,写入代码,实现程序的停止,代码如下: this.timer1.Enabled = false; 截图如下所示: 图1为显示系统界面 图2为单步显示结果 图3为自动显示结果 图4为停止结果
图1
图2
图3
图4 (3)GPS数据上传至服务器数据库
1)建立Webservices,进行数据库连接,代码如下: public Service () {
//如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } public
SqlConnection
connection
=
new
SqlConnection(\
Source=du-96e8d5846746;Initial Catalog=GISshixi;User ID=sa;Password=sa\ [WebMethod(Description = \
public void WriteGPS(string dianming, string X,string Y,string datetime) {
connection.Open();
string dian = string.Format(\ string XX = string.Format(\ string YY = string.Format(\ string tt = string.Format(\
string sqlstr = \信息(点号,X坐标,Y坐标,时间) VALUES (\+ dian + \
System.Data.SqlClient.SqlCommand sqlCommand = new SqlCommand(sqlstr, connection);
sqlCommand.ExecuteNonQuery(); connection.Close();
}2)将GPS信息写入到数据库中,代码如下:
汽车导航终端.shixi.Service hh = new 汽车导航终端.shixi.Service(); string datetime = DateTime.Now.ToString(); hh.WriteGPS(dianming, X, Y, datetime); 车辆GIS管理服务器端软件系统 (1)窗口界面设计
向窗口拖入2个button控件,修改它们的text属性,分别为历史轨迹查询、查询当前位置;向窗体拖入1个dataGridView1控件。窗口设计如下:
(2)读取终端上传过来的GPS数据,并存储
connectionString = \; myConnection = new SqlConnection(connectionString); string Olestr = \信息\;
SqlCommand cmd = new SqlCommand(Olestr, myConnection); SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataTable dt = new DataTable(); adp.Fill(dt); (3)代码设计
1)双击历史轨迹查询button控件,写入代码,实现查询历史轨迹的功能,代码如下: string Olestr = \信息\;
SqlCommand cmd = new SqlCommand(Olestr, myConnection); SqlDataAdapter adp = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); adp.Fill(dt);
dataGridView1.DataSource = dt;
2)双击查询当前位置button控件,写入代码,实现查询历史轨迹的功能,代码如下: string Olestr = \点号,X坐标,Y坐标,时间 from GPS信息 where 时间=(select MAX(时间) from GPS信息)\;
SqlCommand cmd = new SqlCommand(Olestr, myConnection); SqlDataAdapter adp = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); adp.Fill(dt);
dataGridView1.DataSource = dt; 截图如下所示: 图1为历史轨迹查询结果 图2为当前位置查询结果
图1
图2
车辆GIS管理浏览器端软件系统 (1) 窗口界面设计,如下图所示:
(2)读取数据库内容,代码如下: Array1 = \;
SqlData1 sd = new SqlData1();
string cmdText = \信息\; dt = sd.ExecuteDatatable(CommandType.Text, cmdText, null); int i = 1;
foreach(DataRow dr in dt.Rows) {
Array1 += dr[\时间\].ToString(); Array1 += \;
Array1 += dr[\坐标\].ToString(); Array1 += \;
Array1 += dr[\坐标\].ToString(); Array1 += \; Array1+=i.ToString(); Array1 += \; i++; }
sd = new SqlData1();
cmdText = \信息 order by 时间 desc\;
DataRow dr1 = sd.ExecuteDatarow(CommandType.Text, cmdText, null); if (dr1 != null) {
Dest += dr1[\时间\].ToString(); Dest += \;
Dest += dr1[\坐标\].ToString(); Dest += \;
Dest += dr1[\坐标\].ToString(); Dest += \;
Dest += i.ToString(); }
(3) web 浏览器上显示电子地图,代码如下:
var latlng = new google.maps.LatLng(32.1058 , 118.9313); var image = new google.maps.MarkerImage('images/fly.gif', new google.maps.Size(64,64), new google.maps.Point(0,0),
new google.maps.Point(0,32)); var myOptions = { zoom: 16, center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP };
map = new google.maps.Map(document.getElementById(\), myOptions); geocoder = new google.maps.Geocoder();
var contentString =GetcontentString(\,NUPT!\,\南京邮电大学!\); var infowindow = new google.maps.InfoWindow ({
content: contentString ,
maxWidth: 200 });
var marker = new google.maps.Marker({ position: latlng, map: map, icon: image,
title:\南京邮电大学\ });
google.maps.event.addListener(marker, 'click', function() { infowindow.open(map,marker); }); (4) 显示历史轨迹。代码如下: function btnAddpointline_onclick() {
var array='<%=Array1 %>'; var arr=array.split('|'); var polyOptions = {
strokeColor: '#00FF00', strokeOpacity: 1.0, strokeWeight: 2 }
poly = new google.maps.Polyline(polyOptions); poly.setMap(map);
var path = poly.getPath(); for (var j = 0; j < arr.length-1;j++) {
var image = new google.maps.MarkerImage('images/point.gif',
new google.maps.Size(10, 11), new google.maps.Point(0,0), new google.maps.Point(0,2)); var beachs=arr[j];
var beach = beachs.split('*');
var myLatLng1 = new google.maps.LatLng(beach[1], beach[2]); path.push(myLatLng1); var contentString =\; if(j==0)//这里的 0 代表起点! {
map.setCenter(myLatLng1);
var marker2 = new google.maps.Marker ({
position: myLatLng1, map: map,
title:'起点:'+beach[0], });
contentString1= GetcontentString(\点信息\,\起点\); var infowindow1 = new google.maps.InfoWindow ({
content: contentString1 , maxWidth: 200, });
google.maps.event.addListener(marker2, 'click', function() { infowindow1.open(map,marker2); }); }
else if(j== arr.length-2) {
var marker3 = new google.maps.Marker ({
position: myLatLng1, map: map,
title:'终点:'+beach[0], });
contentString2= GetcontentString(\点信息\,\终点\);
var infowindow2 = new google.maps.InfoWindow ({
content: contentString2 , maxWidth: 200, });
google.maps.event.addListener(marker3, 'click', function() { infowindow2.open(map,marker3); }); } else {
var marker1 = new google.maps.Marker ({
position: myLatLng1, map: map, icon: image, title: beach[0], }); }
}
(5) 显示当前位置,代码如下: var dest='<%=Dest %>'; var d=dest.split('*');
//alert(d[0]+\经度:\纬度:\点号:\var latlng_new = new google.maps.LatLng(d[1] ,d[2]); map.setCenter(latlng_new);
var info =d[0]+\经度:\+d[1]+\纬度:\+d[2]+\点号:\+d[3]; document.getElementById('information').innerHTML = info; 截图如下所示: 图1为显示电子地图 图2 为显示南邮位置标志
图3为显示历史轨迹 图4为显示当前位置信息
图1
图2
图3
图4
正在阅读:
汽车导航gps软件设计课程 - 图文06-01
行程问题(五年级)专题训练(无答案)10-17
在历史教学中运用Flash动画- 家校圈 中国移动校讯通新门户11-06
英国超市物品名称06-04
酒店管理人员行为规范203-19
微课在中级无机化学教学的应用02-25
《新文化运动与马克思主义的传播》教学设计11-09
2012计算机三级考试解答题详解及练习题06-07
百度2013年第一季度财务报告12-13
会议信息写作知识02-11
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 汽车导航
- 课程
- 图文
- 设计
- 软件
- gps
- 电子万年历 - 图文
- 轿车驱动桥设计说明书
- 防洪堤月报
- 华科中国语文考试知识点
- 2018年中国燃气表市场未来发展趋势报告目录
- 《送杜少府之任蜀川》比较阅读
- 2017-2022年版儿童图书出版项目商业计划书目录
- 村级优秀退伍军人事迹材料
- 硬笔书法入门教学设计
- 高等数学复习期末试题含答案
- 化工原理上册模拟试题试题(1-4)及答案
- 计算机操作系统答案 郁红英 李春强著
- 中国搞笑玩具市场发展分析与盈利空间预测报告(2014-2019)
- 2011—2016高考历史 全国卷41题(观点、小论文)汇编
- 理光复印机扫描到文件夹的设置方法 - 图文
- 茂名市机动车燃料零售行业企业名录2018版173家
- 大学英语UNIT1-NUIT7课后翻译答案
- 工资管理系统毕业设计论文
- 《德语阅读1》课程教学大纲
- 2018秋季学期最新(人教版)初中历史八年级上册习题: