最短路径问题及应用毕业论文(GIS二次开发中怎样实现最短路径分析)

1.GIS二次开发中怎样实现最短路径分析

这个具体看你用的是那个平台了,一般的平台都会提供相应的模型或者接口啊之类的,只需准备符合条件的数据然后调用即可实现,比如说超图里SuperMap Objects 根据查找结果的需求不同,提供了三种接口来实现最佳路径分析:1、Path:查找经过一系列有序站点的最佳路径,结果返回一个路由对象 soGeoLineM。行驶导引通过 GetPathTable 接口导出。2、PathEx:查找经过一系列有序站点的最佳路径,结果返回一个路由对象soGeoLineM,同时会返回路径通过的结点和弧段的标识ID(即在网络分析环境中设置的ID字段,不一定是SmID)。行驶导引通过 GetPathTable 接口导出。PathEx2:查找经过一系列有序站点的最佳路径。结果提供 PathTable 行驶导引表,该表记录了结果路由需要经历的结点和弧段名称,以及在每个结点和弧段上的转向信息,具体花费。新方法提高了分析效率,对返回结果可灵活设置(通过 soPathResultSetting 和 soPathResultInfo )。

具体的实现一般的帮助文档里会有实例演示,不知道这样回答满意不。

2.最短路径算法在交通中的运用

这是以前写的!!无论是有向图还是无向图都可以处理!!用的是Dijkstra算法/*求最短路径*/#include<stdio.h>#include<stdlib.h>typedef int Status;typedef Status ** Node;#define MaxNum 10000;#define FALSE 0;#define TRUE 1;/*建一个带权的邻接矩阵来存放有向图*/Node Build (Status num , Status num2 ){ int i,j,k,h; Node a; a=(Node) malloc( num * sizeof (Status *)); printf("请输入图的相关信息,如0 2 10表示弧是从顶点v0走向顶点v2,且权为10\n"); printf("(每输入一个信息再按一次Enter)\n(在这里顶点是从v0算起,当然这并不是表示要从v0出发找最短路径\n"); printf("当然也可以从其他点出发找最短路径):\n"); for(i=0;i<num;i++) { a[i]=(Status *) malloc( num * sizeof (Status)); for(j=0;j<num;j++) { a[i][j]=MaxNum; } } for(h=0;h<num2;h++) { scanf("%d %d %d",&i,&j,&k); /*防止输入过界*/ if( i>=num || j>=num ) { printf("无效的输入!请重新输入!!"); exit(1); } a[i][j]=k; } return a;}/*迪杰斯特拉算法求最短路径*/void ShortestPath_DIJ( Node a ,Status i ,Status v0 ,Status *D ,Status *pre ){ int v,w,j,l=1; Status *final;/*final[v]为TRUE表示已经求得最短路径*/ Status min; final=(Status *)malloc( sizeof(Status)*i ); for(v=0;v<i;v++) { final[v]=FALSE;/*设空路径*/ pre[v]=FALSE; D[v]=a[v0][v]; if(D[v]<10000) pre[v]=v0; }//for /*选择的顶点没有出度时,为了防止下面的算法出现越界,直接输出,不再进行下步动作*/ for(v=0;v<i;v++) { if( a[v0][v]==10000 ) l++; } if(l>i) { printf("\n从v%d出发没有最短路径到其他端点!\n",v0); exit(0); } D[v0]=0; final[v0]=TRUE;//初始化,v0顶点确定 for( j=0 ; j<i ; ++j ) { /*找出距离顶点最近的顶点*/ min=MaxNum; for( w=0 ; w<i ; w++) { if( !final[w] )//w顶点还没确定 { if( D[w]<min ) { v=w;min=D[w];/*w顶点离v0更近*/ //printf("wozaizhe"); } } } final[v]=TRUE; /*更新当前最短路径及距离*/ for( w=0 ; w<i ; w++ ) { if( !final[w] && ( (min+a[v][w])<D[w]) ) { D[w]=min+a[v][w]; pre[w]=v; }//if } }//for}//ShortestPath_DIJvoid Show(Status *D , Status *pre ,int i ,int v0){ int j,k,m,n; int *temp; temp=(int *)malloc(sizeof(int)*i); for(j=0;j<i;j++) { printf("\nv%d路径长度为:%d " ,j,D[j]); n=j; if(D[j]!=10000) for(k=0;k<i;k++) { temp[k]=pre[n]; if(temp[k]!=v0) n=temp[k]; if(temp[k]==v0) break; } if( k==0&&D[j]!=10000&&D[j]!=0 ) { printf("v%d->v%d",v0,j); } if( k!=0 &&D[j]!=10000&&D[j]!=0) { for(m=k;m>=0;m--) { printf("v%d->",temp[m]); } printf("v%d",j); } if(D[j]==10000) { printf("从v%d出发没有最短路径!",v0); } if(D[j]==0) { printf("v%d",v0); } } printf("\n");}main(){ int i,j,v0; Node a; Status *D,*pre; printf("请输入有向图的顶点数!"); scanf("%d",&i); printf("再输入有向图的有效弧数!"); scanf("%d",&j); D=(Status *)malloc(sizeof(Status)*i); pre=(Status *)malloc(sizeof(Status)*i); a=Build(i,j); printf("请输入起始顶点(可以是范围内的任何顶点): ",j); scanf("%d",&v0); if(v0>i) { printf("输入错误!不存在这样的起始点!"); exit(1); } ShortestPath_DIJ( a ,i ,v0 ,D , pre ); Show( D, pre, i, v0 );}。

最短,毕业论文,路径

3.最短路径算法问题

++j) /, t;n" ++i) { d[i] = MAX; } /, s); ++i) { int j = i, 10, 10, 10; printf(":最短路径上i前面顶点的编号/, 10;判断出发点有没有邻接点 for(int i=0, path[8];/ 最短路径/ else if(i == n) return;/** 打印all路径 */, 10: \ j<, 5, 7};/ i/, 4; path[i] = -1;call1 shortestPath(w;选择最短路径 int min;d[i];n, 10; i<, 10;/ j = path[j], {10; i<, {10; printf("!= MAX) if(;n; for(int i=1, 10, 10}, 10};//, 10, {10, 10;n, int path[], 10}; t = j; ++i) { if(p[s][i] , 3, 10, 10, 10;/, d, 10:二维数组,&s);s, 10;\ /%d", 10,10; int main(){ int s.h> /path[i], 10;n; } } /:%d \, path[j]), 8, int n; min) { min = d[j];pause", 10;n;#define MAX 10/, 9, 6, {10, 10, 2;/);n" path[i] = s;, 10;stdlib。

最短路径问题及应用毕业论文

转载请注明出处众文网 » 最短路径问题及应用毕业论文(GIS二次开发中怎样实现最短路径分析)

资讯

材料制备本科毕业论文(模具设计与制造专业的毕业论文一篇)

阅读(136)

本文主要为您介绍材料制备本科毕业论文,内容包括材料科学毕业论文题目可以选择?,模具设计与制造专业的毕业论文一篇,材料与科学基础论文题目起什么比较好写,要新颖又内容好写搜狗问。去百度文库,查看完整内容>内容来自用户:期待未来的美好明

资讯

毕业论文导师什么时候选(毕业论文指导老师的选择急!!!)

阅读(64)

本文主要为您介绍毕业论文导师什么时候选,内容包括请问师兄师姐几时开始找导师,几时开始准备论文??,大四刚开始就选毕业论文导师,如何选导师?什么标准呢?我想的是安,毕业论文指导老师的选择急!!!。我是08年毕业的,上半年就是在做毕业设计。

资讯

毕业论文摘要部分写什么意思(论文摘要包括哪些内容)

阅读(84)

本文主要为您介绍毕业论文摘要部分写什么意思,内容包括论文中的摘要是指什么?,论文摘要包括哪些内容,论文摘要是什么?论文摘要怎么写?。论文摘要包括:目的、方法、结果和结论四部分。目的简明指出此项工作的目的,研究的范围。2、方法简要说明

资讯

毕业论文参考文献需要多少篇(本科毕业论文参考文献要多少篇)

阅读(72)

本文主要为您介绍毕业论文参考文献需要多少篇,内容包括本科毕业论文参考文献要多少篇,本科论文的参考文献一般几篇为宜,论文参考文献要多少个?。本科毕业论文参考文献的篇数没有具体要求。 在学术论文后一般应列出参考文献(表),其目的有三,即:

资讯

护理专业毕业论文三千字(护理论文范文)

阅读(71)

本文主要为您介绍护理专业毕业论文三千字,内容包括护理论文范文,护理论文网跪求一篇有关护士护理的论文,3000字左右,中专护理毕业论文怎么写???(3000~5000字)。脑血管病的护理体会 摘要:目的:探讨脑血管病的护理方法。方法:通过对60例脑血管病

资讯

本科毕业论文笔试答辩(本科毕业论文答辩有什么技巧?)

阅读(79)

本文主要为您介绍本科毕业论文笔试答辩,内容包括自考论文笔试答辩通常要注意什么,本科毕业论文答辩有什么技巧?,河北自考本科论文答辩的时间和要求。首先,楼主要明确,答辩和论文虽然分两项,但最后只出一个成绩,而这个成绩以论文为主,答辩这块主

资讯

材料制备本科毕业论文(模具设计与制造专业的毕业论文一篇)

阅读(136)

本文主要为您介绍材料制备本科毕业论文,内容包括材料科学毕业论文题目可以选择?,模具设计与制造专业的毕业论文一篇,材料与科学基础论文题目起什么比较好写,要新颖又内容好写搜狗问。去百度文库,查看完整内容>内容来自用户:期待未来的美好明

资讯

毕业论文检测说明能识别吗(论文查重会查书本上的内容吗?)

阅读(84)

本文主要为您介绍毕业论文检测说明能识别吗,内容包括知网的本科毕业论文检测能不能检测到产品说明书上的内容,知网的本科毕业论文检测能不能检测到产品说明书上的内容,论文检测能检测出纸质版的吗?。论文查重包括纸质书吗包括,纸质书被论文