公交线路的概念模型如图2.7所示。
公交 线路 公交站点 公交弧段 公交 站点 公交站点 包含 隶属 包含 隶属 隶属 包含 起始 连接 终止 连接 图2.7 公交线路概念模型
通过以上的分析,本系统最后决定采用构造图的邻接节点矩阵的形式来存储地图数据。
图的邻接矩阵是表示顶点之间相邻关系的矩阵。
公交网络图的邻接矩阵结构说明如下:
#define INT_MAX= 32767 /*最大值∞*/
#define SIZE=11 /*图的最大顶点数*/
typedef struct{
int Edge[SIZE][SIZE]; /*图邻接矩阵信息,用于求最短路径*/
int NeighborNode[SIZE][SIZE]; /*公交站点的可达节点信息,用于求最少换乘*/
}graph;
在使用广度优先搜索(BFS)算法实现最少换乘路径查询时,其逻辑层的数据组织一般建立下面三个对应关系,一是每个节点关联的弧段索引,二是每个弧段的起始站点ID和终止站点ID,三是每条有向线路所经过的弧段索引和结点索引。
基于最少换乘的公交网络拓扑结构如图2.8所示。
图2.8 基于最少换乘的公交网络拓扑结构
使用迪杰斯特拉(Dijkstra)最短路径算法进行最优路径查询时的逻辑数据组织如图2.9所示,在弧段的属性中它不是记录弧段的首末节点,而是记录弧段的长度,节点的属性表中记录经过该节点的所有有向线路的ID。
图2.9 基于最短路径的公交网络拓扑结构
数据字典
名字:门牌信息 别名: 描述:门牌基本信息 定义:门牌基本信息=门牌号码+街道名+该位置的建筑物名 位置:门牌信息表 名字:基本建筑信息 别名: 描述:建筑物的基本信息 定义:建筑物信息=建筑物编号+建筑物名称+该建筑所在的地址+该建筑的横坐标+该建筑的纵坐标 位置:基本建筑信息表
名字:公交线路基本信息 别名: 描述:公交线路的基本信息 定义:公交线路基本信息=公交线路编号+起始站点编号+起始站点名称+终止站点编号+终止站点名称+首班车发车时间+末班车发车时间+该公交线路所经过的站点 位置:公交线路基本信息表
名字:车站基本信息 别名: 描述:公交车站点的基本信息 定义:车站基本信息=公交站点编号+公交站点名称+该公交站点的横坐标+该公交站点的纵坐标 位置:车站基本信息表
名字:弧段信息 别名: 描述:公交弧段的基本信息 定义:公交弧段信息=弧段编号+上层站点编号+上层站点名称+下层站点编号+下层站点名称+该弧段的长度 位置:弧段要素表 名字:线路站点信息 别名: 描述:公交线路与公交站点之间 关系的信息 定义:公交线路信息=公交线路编号+公交站点编号+该站点在该线路中的顺序 位置:线路站点信息表
名字:换乘车次信息 别名: 描述:公交站点的换乘车次信息 定义:换乘车次信息=换乘站点编号+换乘站点名称+上层线路编号+下层线路编号 位置:换乘车次信息表
在数据库中各种地图信息和公交信息均以表的形式存储。下面是对各个表的设计。
1、 基本建筑信息表的设计
字段名称 |
数据类型 |
字段长度 |
允许空 |
字段说明 |
jianzhuID |
int |
4 |
否 |
建造物编号 |
jianzhuName |
varchar |
50 |
是 |
建筑物名称 |
Address |
varchar |
50 |
是 |
地址 |
zuobiaoX |
float |
8 |
是 |
横坐标 |
zuobiaoY |
float |
8 |
是 |
纵坐标 |
1、门牌信息表
字段名称 |
数据类型 |
字段长度 |
允许空 |
字段说明 |
menpaiID |
int |
4 |
否 |
门牌号码 |
jiedaoName |
varchar |
50 |
否 |
街道名 |
jianzhuName |
varchar |
50 |
是 |
建筑物名 |
2、车站基本信息
字段名称 |
数据类型 |
字段长度 |
允许空 |
字段说明 |
StationID |
int |
4 |
否 |
公交站点编号 |
StationName |
varchar |
50 |
是 |
公交站点名称 |
StationX |
float |
8 |
是 |
公交站点横坐标 |
StationY |
float |
8 |
是 |
公交站点纵坐标 |
4、公交线路基本信息表
字段名称 |
数据类型 |
字段长度 |
允许空 |
字段说明 |
RouteID |
int |
4 |
否 |
公交线路编号 |
StartStaID |
int |
4 |
否 |
起始站点编号 |
StartStaName |
varchar |
50 |
是 |
起始站点名称 |
EndStaID |
int |
4 |
否 |
终止站点编号 |
EndStaName |
varchar |
50 |
是 |
终止站点名称 |
StartTime |
char |
10 |
是 |
首班车时间 |
EndTime |
char |
10 |
是 |
末班车时间 |
StationIN |
varchar |
50 |
是 |
经过站点 |
5、线路站点信息表
字段名称 |
数据类型 |
字段长度 |
允许空 |
字段说明 |
RouteID |
int |
4 |
否 |
公交线路编号 |
StationID |
int |
4 |
是 |
公交站点编号 |
StationNum |
int |
4 |
是 |
站点在线路中的顺序 |
6、弧段要素表
字段名称 |
数据类型 |
字段长度 |
允许空 |
字段说明 |
arcID |
int |
4 |
否 |
弧段编号 |
FromStationID |
int |
4 |
是 |
上层站点编号 |
FromStationName |
varchar |
50 |
是 |
上层站点名称 |
ToStationID |
int |
4 |
是 |
下层站点名称 |
ToStationName |
varchar |
50 |
是 |
下层站点名称 |
Length |
int |
4 |
是 |
弧段长度 |
7、换乘车次表
字段名称 |
数据类型 |
字段长度 |
允许空 |
字段说明 |
ChangeStaID |
int |
4 |
否 |
换乘站点编号 |
ChangeStaName |
varchar |
50 |
是 |
换乘站点名称 |
UpRouteID |
int |
4 |
是 |
上层线路编号 |
DownRouteID |
int |
4 |
是 |
下层线路编号 |
公交管理系统E-R图如图2.10所示。
图2.10 公交信息系统E-R图
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>