源程序.doc

tx089GPS车载导航系统路径规划的研究

收藏

压缩包内文档预览:
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:149921843    类型:共享资源    大小:406.32KB    格式:RAR    上传时间:2021-10-10 上传人:好资料QQ****51605 IP属地:江苏
20
积分
关 键 词:
tx089GPS 车载 导航系统 路径 规划 研究
资源描述:
tx089GPS车载导航系统路径规划的研究,tx089GPS,车载,导航系统,路径,规划,研究
内容简介:
源程序 计算机002班 殷兆燕 004061203源程序代码unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, math,Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, SuperMapLib_TLB, OleCtrls, ImgList, ComCtrls, ToolWin, Menus;const inFile=du.txt; outFile=out.txt;type/定义记录TArcTArc=Record Fid: integer;/路段起点的编号 Tid: integer;/路段终点的编号 Lenth: real;/路段长度 end; adj_matrix=array of TArc; TForm1 = class(TForm) SuperWorkspace: TSuperWorkspace; SuperMap: TSuperMap; MainMenu1: TMainMenu; file1: TMenuItem; map1: TMenuItem; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; ToolBar1: TToolBar; ToolButton1: TToolButton; ImageList1: TImageList; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; ToolButton5: TToolButton; ToolButton6: TToolButton; ToolButton7: TToolButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure SuperMapMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure OnMapZoomOut(Sender: TObject); procedure OnMapZoomIn(Sender: TObject); procedure OnMapPan(Sender: TObject); procedure OnMapView(Sender: TObject); procedure OnSelectFnode(Sender: TObject); procedure OnSelectTnode(Sender: TObject); procedure OnCalculate(Sender: TObject); procedure N2Click(Sender: TObject); private fromPoint,toPoint:soGeoPoint; style1:soStyle;/风格变量 public procedure ReadTable; function FindNearestNode(point:soGeoPoint):integer; procedure OutPrint(t:integer;cost:real); procedure OutPath(t:integer;cost:real); function ShortestRoad(n:integer;s,t:integer;var Path:array of integer):real; end;var Form1: TForm1; probN:integer; fin,fout:TextFile; path:array of Integer; G: array of TArc; MaxArcSize: integer; MaxNodeSize: integer;implementation$R *.dfm/计算最短路径程序段function TForm1.ShortestRoad(n:integer;s,t:integer;var Path:array of integer):real;var d:array of real; /用来记录从源点到所有点的最短路径长度 mark:array of 0.1; /用来标记已经找到最短路径的顶点,0表示已找到,1表示未找到 i,j,w:integer; L,min:real; found:boolean; x: integer;begin SetLength(d,MaxNodeSize+1); SetLength(mark,MaxNodeSize+1); for i:=1 to n do begin di:=maxint; pathi:=s; marki:= 0 end; marks:=1; for x:=1 to MaxArcSize do begin if (Gx.Fid=s) then begin dGx.Tid:=Gx.Lenth; end; if (Gx.Tid=s) then begin dGx.Fid:=Gx.Lenth; end; end; Paths:=0; ds:=0; for i:=1 to n-1 do begin min:=maxint; w:=0; for j:=1 to n do /找到所有还没有找出最短路径的节点中到s最近的节点w if (markj=0)and(min=dj) then begin min:=dj; w:=j; end; markw:=1; for j:=1 to n do /修改还没有找出最短路径的节点到s的距离 begin found:=false; L:=maxint; x:=1; while (x MaxArcSize) and (not found) do begin if (w=Gx.Fid) and (j=Gx.Tid) or (w=Gx.Tid)and(j=Gx.Fid) then begin L:=Gx.lenth; found:=true; end; x:=x+1; end; if (markj=0) and (Lmaxint) and (djdw+L) then begin dj:=dw+L; Pathj:=w; end; end; end; result:=dt;end;procedure TForm1.FormCreate(Sender: TObject);begin SuperMap.Connect(SuperWorkspace.Handle); /建立关联 SuperWorkspace.Open(zjjtmap2.smw,); /打开工作空间 SuperMap.FilterText := True; /设置过滤文字 SuperMap.OpenMap(xtpmap); /打开地图 SuperMap.Refresh;end;/取得节点及节点间距离,采用动态数组G存储矢量化的道路网procedure TForm1.ReadTable;var objDV,objDatasetv:SoDatasetVector; objRecset: soRecordset; x: integer;begin x:=1 ; objDatasetv := SuperMap.Layers1.Dataset as soDatasetVector ; /获得公路层的数据 objRecset:=objDatasetv.Query(,true,nil,); MaxArcSize := objRecset.RecordCount; SetLength(G, MaxArcSize+1); while not objRecset.IsEOF do begin Gx.Fid:=objRecset.GetFieldValue(smfnode); /取起始点的ID Gx.Tid:=objRecset.GetFieldValue(smtnode); /取终止点ID Gx.Lenth:=objRecset.GetFieldValue(smlength); /获得两点间距离 x:=x+1; objRecset.MoveNext; end; objDV:=objDatasetv.SubDataset as soDatasetVector; /获得子数据集(节点数据) objRecset:=objDV.Query(,true,nil,); MaxNodeSize:=objRecset.RecordCount; setlength(path,MaxNodeSize+1);end;/在文件out.txt中输出最短路径procedure TForm1.OutPrint(t:integer;cost:real);var i,j:integer; s:array of integer; /记录起始点和经过点begin if cost=Maxint then begin WriteLn(fout,can not find path) ; exit; end; WriteLn(fout,Case ,probN); SetLength(s,MaxNodeSize+1); i:=t;j:=0; repeat inc(j); sj:=pathi; i:=pathi; until i=0; for i:=j-1 downto 1 do Write(fout,si, - ); WriteLn(fout,t); writeLn(fout,Min Cost : ,cost);end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin style1:=nil; fromPoint:=nil; toPoint:=nil; SuperMap.Disconnect; SuperMap.Close; SuperWorkSpace.Close;end;/显示鼠标按下选取的点procedure TForm1.SuperMapMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if SuperMap.action=1000 then begin SuperMap.Selection.RemoveAll; fromPoint:=coSoGeoPoint.Create; /创建一个新点 fromPoint.x:=SuperMap.PixelToMapX(x); fromPoint.y:=SuperMap.PixelToMapy(y); SuperMap.TrackingLayer.ClearEvents; /清除TrackingLayer图层上的所有事例 style1:=coSoStyle.Create; /创建新对象风格 style1.PenColor:=clRed; style1.SymbolSize:=50; style1.SymbolStyle:=2; SuperMap.TrackingLayer.AddEvent(frompoint as sogeometry,style1,); /往trackinglayer图层上添加对象 SuperMap.TrackingLayer.Refresh; /刷新图层 end else if SuperMap.action=2000 then begin toPoint:=coSoGeoPoint.Create; /创建一个新点 SuperMap.action:=3000 ; toPoint.x:=SuperMap.PixelToMapX(x); /将屏幕坐标转化为地理坐标 toPoint.y:=SuperMap.PixelToMapy(y); style1:=coSoStyle.Create; /创建新对象风格 style1.PenColor:=clBlue; style1.SymbolSize:=50; style1.SymbolStyle:=2; SuperMap.TrackingLayer.AddEvent(toPoint as soGeometry,style1,); SuperMap.TrackingLayer.Refresh; end;end;/找出离地图中所选的点最近的节点function TForm1.FindNearestNode(point: soGeoPoint): integer;var objDatasetv :soDatasetVector ; dDistance : Double ; objRecordset: soRecordset; objGeometry : soGeometry; pt:soGeoPoint; x1,y1:double; L:real; Lth :real; minLth:real; objDV:soDatasetVector; objID:Integer;begin objDatasetv := SuperMap.Layers1.Dataset as soDatasetVector ; /获得公路层数据 objDV:=objDatasetv.SubDataset as soDatasetVector; /获得子数据集(节点数据) dDistance := 50 ; objRecordset := objDV.QueryByDistance(Point as sogeometry, dDistance, );/查询距离鼠标点击的当前位置50个单位范围内的所有接点 minLth:=Maxint; objID:=0; objRecordset.MoveFirst; while not objRecordset.IsEOF do begin objGeometry:=objRecordset.GetGeometry; /查询出的记录集几何对象 if objGeometry.Type_=scgpoint then /如果为点集,则作下面运算 begin pt:=objGeometry as soGeopoint; x1:=point.x-pt.x; y1:=point.y-pt.y; x1:=x1*x1; y1:=y1*y1; L:=x1+y1; Lth:= sqrt(L); /求出鼠标当前位置到查询出的节点的距离 if LthminLth then begin minLth:=Lth; objID:=pt.ID ; end; end; objRecordset.MoveNext; end; result:=objID;end;/在图中显示出查找出的最短路径procedure TForm1.OutPath(t:integer;cost:real);var i,j:integer; s:array of integer; objDatasetv :soDatasetVector ; objRecordset: soRecordSet; strSQL:WideString;begin if cost=Maxint then begin ShowMessage(can not find path); exit; end; setLength(s,MaxNodesize+1); i:=t;j:=0; repeat inc(j); sj:=pathi; i:=pathi; until i=0; s0:=t; objDatasetv := SuperMap.Layers1.Dataset as soDatasetVector ; /获得公路层数据集 strSQL:=; for i:=0 to j-2 do begin if i=0 then /当起始点和终止点间无经过节点时,查询条件为:起始点为si,终止点为si+1 strSQL:= (smFnode=+IntToStr(si)+ and smTnode=+IntToStr(si+1)+ ) or (smtnode=+IntToStr(si)+ and smfnode=+IntToStr(si+1)+) else /如果有经过节点 strSQL:= strSQL + or + (smFnode=+IntToStr(si)+ and smTnode=+IntToStr(si+1)+ ) or (smTnode=+IntToStr(si)+ and smFnode=+IntToStr(si+1)+); end; objRecordset := objDatasetv.Query(strSQL,true,nil,) as soRecordSet; /返回满足查询条件的记录集 SuperMap.Selection.FromRecordset( objRecordset); /将记录集转化为选择集 SuperMap.Refresh; /刷新当前记录集end;procedure TForm1.OnMapZoomOut(Sender: TObject);begin SuperMap.Action:=scaZoomOut; /地图缩小end;procedure TForm1.OnMapZoomIn(Sender: TObject);begin SuperMap.Action:=scaZoomIn; /地图放大end;procedure TForm1.O
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:tx089GPS车载导航系统路径规划的研究
链接地址:https://www.renrendoc.com/paper/149921843.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!