完整全国公交数据库包含香港除台湾外的33个直辖市、省、特别行政区的203个主要城市的超过16,600多条公交线路数据,数据库不定时更新。数据库包括:公交线路信息、公交车站(来回)、起始时间、票制、票价、距离等数据。并提供数据库二次开发工具。
表:Area(省份/城市)字段说明
ID(数字 Int);Province(省份);City(城市);City2(城市短名称);Pinyin(拼音)
表:BusLine(公交线路)字段说明
ID(数字 Int);AreaID(对应Area表ID);LineCode(公交线路)
表:BusInfo(公交线路信息)字段说明
ID(数字 Uniqueidentifier);BusLineID(对应BusLine表ID Int);StartTime(起点首班车时间 Int);EndTime(起点末班车时间 Int);LastStartTime(终点首班车时间 Int);LastEndTime(终点末班车时间 Int);TimeInfo(首末车时间说明);TicketSystem(票制);Carfare(全程票价[元]);KM(线路长度[公里]);OtherInfo(其他信息);BusInfoIndex(排序 Byte)
表:BusStation(公交车站)字段说明
BusInfoID(数字 对应 busInfo表 ID Uniqueidentifier);Station(车站名称);StationIndex(站序 Int)
注:表字段类型均为 NVarChar 字符串类型;班车时间为从0点开始的整数分钟。
通过
淘宝网购买全国公交线路数据库 或 直接联系客服人员购买。完整数据库价格:¥2998.00元,¥98.00元/城市(除直辖市),¥498.00元/省(直辖市)。购买多个省份价格面议,购买省以上数据包含一年更新。
-- 按城市和线路关键词搜索公交线路
SELECT Area.City, BusLine.LineCode
FROM Area INNER JOIN BusLine ON Area.ID = BusLine.AreaID
WHERE ((Area.City = '上海市') AND (BusLine.LineCode Like '%10路%'))
-- 按城市和车站关键词搜索公交线路
SELECT Area.City, BusLine.LineCode, BusStation.Station
FROM ((Area INNER JOIN BusLine ON Area.ID = BusLine.AreaID)
INNER JOIN BusInfo ON BusLine.ID = BusInfo.BusLineID)
INNER JOIN BusStation ON BusInfo.ID = BusStation.BusInfoID
WHERE ((Area.City='上海市') AND (BusStation.Station Like '%人民广场%'))
-- 公交一次中转换乘查询(以上海市为例)
-- 首先用以下SQL语句新建“BusView_Shanghai”视图
SELECT TOP (100) PERCENT BusLine.LineCode AS RouteID,
BusStation.Station AS StartStation, BusStation_1.Station AS EndStation,
BusStation_1.StationIndex - BusStation.StationIndex AS StopCount
FROM BusLine AS BusLine_1 INNER JOIN
Area AS Area_1 ON BusLine_1.AreaID = Area_1.ID INNER JOIN
BusInfo AS BusInfo_1 ON BusLine_1.ID = BusInfo_1.BusLineID INNER JOIN
BusStation AS BusStation_1 ON BusInfo_1.ID = BusStation_1.BusInfoID INNER JOIN
Area INNER JOIN
BusLine ON Area.ID = BusLine.AreaID INNER JOIN
BusInfo ON BusLine.ID = BusInfo.BusLineID INNER JOIN
BusStation ON BusInfo.ID = BusStation.BusInfoID
ON BusStation_1.StationIndex > BusStation.StationIndex AND
BusInfo_1.ID = BusInfo.ID
WHERE (Area.City = '上海市')
/*
RouteID = 线路,StartStation = 开始站,EndStation = 结束站,StopCount = 经过的站点数
当然也可以使用储存过程,在SQL 储存过程里 Area.City = @City 可以用参数
注意:请先使用我们提供的工具补全反向车次(SQL Server 请先补全车次再导入数据),
因为原来数据库为了减少数据量,对来回一样车站的车次只记录了单程数据。
*/
-- 然后通过以下是查询语句获得一次中转换乘
Select R1.StartStation AS sStation, R1.RouteID AS [sID], R1.EndStation AS tStation,
R2.RouteID AS tID, R2.EndStation AS eStation,R1.StopCount+R2.StopCount AS AllCount
FROM BusView_Shanghai AS R1 INNER JOIN BusView_Shanghai AS R2
ON R1.EndStation = R2.StartStation
WHERE ((R1.StartStation = '起点站') AND (R2.EndStation = '终点站'))
/*
sStation = 起点站,sID = 起始车次,
tStation = 中转车站,tID = 中转车次,eStation = 终点站,AllCount = 经过站点数
*/
'VB.net 整数分钟 --> 小时:分种
Public Function Minutes2String(ByVal IntMinutes As Integer) As String
Dim ts As TimeSpan = New TimeSpan(0, IntMinutes, 0)
Return ts.Hours.ToString() & ":" & ts.Minutes.ToString()
End Function
'VB.net 小时:分种 --> 整数分钟
Public Function String2Minutes(ByVal H As Integer, ByVal M As Integer) As Integer
Dim ts As TimeSpan = New TimeSpan(H, M, 0)
Return CInt(ts.TotalMinutes)
End Function
//C# 整数分钟 --> 小时:分种
public string Minutes2String(int IntMinutes)
{
TimeSpan ts = new TimeSpan(0, IntMinutes, 0);
return ts.Hours.ToString() + ":" + ts.Minutes.ToString();
}
//C# 小时:分种 --> 整数分钟
public int String2Minutes(int H, int M)
{
TimeSpan ts = new TimeSpan(H, M, 0);
return (int)ts.TotalMinutes;
}