公交线路的概念模型如图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] ... 下一页 >>