用于提供公交线路的方法和系统.pdf

上传人:Y948****062 文档编号:1031699 上传时间:2018-03-27 格式:PDF 页数:11 大小:413.45KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910158932.8

申请日:

2009.07.08

公开号:

CN101944096A

公开日:

2011.01.12

当前法律状态:

授权

有效性:

有权

法律详情:

专利权人的姓名或者名称、地址的变更IPC(主分类):G06F 17/30变更事项:专利权人变更前:广东融讯信息科技有限公司变更后:广东融讯信息科技有限公司变更事项:地址变更前:510665 广东省广州市天河区建业路华翠街68号自编之一202C变更后:510665 广东省广州市天河区车陂泰安南路92号自编A12房|||专利权的转移IPC(主分类):G06F 17/30变更事项:专利权人变更前权利人:广东瑞图万方科技股份有限公司变更后权利人:广东融讯信息科技有限公司变更事项:地址变更前权利人:528305 广东省佛山市顺德高新区(容桂)建业中路7号变更后权利人:510665 广东省广州市天河区建业路华翠街68号自编之一202C登记生效日:20121108|||专利权的转移IPC(主分类):G06F 17/30变更事项:专利权人变更前权利人:广东融讯信息科技有限公司变更后权利人:广东瑞图万方科技股份有限公司变更事项:地址变更前权利人:510656 广东省广州市天河区黄埔大道西平云路163号6楼自编1房变更后权利人:528305 广东省佛山市顺德高新区(容桂)建业中路7号登记生效日:20120705|||授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20090708|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

广东融讯信息科技有限公司

发明人:

柳宗伟

地址:

510656 广东省广州市天河区黄埔大道西平云路163号6楼自编1房

优先权:

专利代理机构:

北京康信知识产权代理有限责任公司 11240

代理人:

余刚

PDF下载: PDF下载
内容摘要

本发明提供了一种用于提供公交线路的方法和系统,方法包括以下步骤:通过K维树找出出发地和目的地附近的公交站点,其中,K维树是公交站点的索引,K等于2或3;根据公交站点给出出发地到目的地之间的公交线路。本发明克服了现有技术中公交查询系统对数据获取的效率较低,导致用户对公交线路查询的速度较慢问题。

权利要求书

1: 一种用于提供公交线路的方法, 其特征在于, 包括以下步骤 : 通过 K 维树找出出发地和目的地附近的公交站点, 其中, 所述 K 维树是所述公交站点的 索引, K 等于 2 或 3 ; 根据所述公交站点给出所述出发地到所述目的地之间的公交线路。
2: 根据权利要求 1 所述的方法, 其特征在于, 所述 K 维树是所述公交站点的索引具体包 括: 根据地理位置的经度值和纬度值建立 X 轴 -Y 轴的 2 维空间 ; 在所述 2 维树的偶数层按 X 坐标将所述公交站点排序, 将所述公交站点的 X 坐标上相 邻的公交站点作为所述公交站点的左、 右子树 ; 在所述 2 维树的奇数层按 Y 坐标将所述公交站点排序, 将所述公交站点的 Y 坐标上相 邻的公交站点作为所述公交站点的左、 右子树 ; 其中, 在所述 2 维树中, 设某个公交站点为根结点, 其深度为 0, 将所述 2 维树分为偶数 层和奇数层。
3: 根据权利要求 2 所述的方法, 其特征在于, 所述站点信息具体表示为 (SP1, SP2, X, Y, NAME, ID), 其中 所述 SP1 和所述 SP2 分别表示与所述公交站点相邻的公交站点 ; 所述 X 和所述 Y 分别表示所述公交站点的经度值和维度值 ; 所述 NAME 表示所述公交站点的站点名 ; 所述 ID 表示所述公交站点在所述 2 维树的编号。
4: 根据权利要求 1 所述的方法, 其特征在于, 还包括以下步骤 : 将能坐车到所述公交站点的其他所述公交站点用图的方式缓存。
5: 根据权利要求 1 所述的方法, 其特征在于, 根据所述公交站点给出所述出发地到所 述目的地之间的公交线路具体包括 : 计算所述目的地对应的公交站点与所述目的地之间的距离 ; 如果所述距离小于等于设定值, 根据用户设定的权值给出所述出发地到所述目的地的 公交线路。
6: 根据权利要求 5 所述的方法, 其特征在于, 计算所述目的地对应的公交站点与所述 目的地之间的距离具体包括 : 计算所述目的地对应的公交站点 A 与所述目的地 B 之间的距离 Distance 的公式如下 : Distance = R*Arccos(C)*Pi/180 ; C = sin(LatA*Pi/180)*sin(LatB*Pi/180)+ cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180) ; 其中, R 为地球的平均半径, MLonA 和 MLatA 分别为所述公交站点 A 的经度值和纬度值, MLonB 和 MLatB 分别为所述目的地 B 的经度值和纬度值, Pi 为圆周率。
7: 一种用于提供公交线路的系统, 其特征在于, 包括 : 索引模块, 用于将公交站点索引到 K 维树 ; 查询模块, 用于根据用户输入的出发地和目的地查询所述出发地和所述目的地附近的 公交站点 ; 计算模块, 用于根据所述公交站点给出所述出发地到所述目的地之间的公交线路。 2
8: 根据权利要求 7 所述的系统, 其特征在于, 所述查询模块采用 .NET Remoting 作为中 间数据传递协议。

说明书


用于提供公交线路的方法和系统

    【技术领域】
     本发明涉及交通领域, 具体而言, 涉及一种用于提供公交线路的方法和系统。背景技术 现有的公交查询一般是基于数据库进行线路 - 站点关系的查询, 具体来说, 将起 点站的所有线路中能去到终点站的公交线路列出来, 或者将经过起点站的所有公交线路列 出, 再从中找出能去到终点站的公交线路。
     在实现本发明过程中, 发明人发现现有技术中公交查询系统对数据获取的效率较 低, 导致用户对公交线路查询的速度较慢。
     发明内容 本发明旨在提供一种用于提供公交线路的方法和系统, 以解决现有技术中公交查 询系统对数据获取的效率较低, 导致用户对公交线路查询的速度较慢问题。
     在本发明的实施例中, 提供了一种用于提供公交线路的方法, 包括以下步骤 :
     通过 K 维树找出出发地和目的地附近的公交站点, 其中, K 维树是公交站点的索 引, K 等于 2 或 3 ;
     根据公交站点给出出发地到目的地之间的公交线路。
     优选地, 在上述方法中, 2 维树是公交站点的索引具体包括 :
     根据地理位置的经度值和纬度值建立 X 轴 -Y 轴的 2 维空间 ;
     在 2 维树的偶数层按 X 坐标将公交站点排序, 将公交站点的 X 坐标上相邻的公交 站点作为公交站点的左、 右子树 ;
     在 2 维树的奇数层按 Y 坐标将公交站点排序, 将公交站点的 Y 坐标上相邻公交站 点作为公交站点的左、 右子树 ;
     其中, 在 2 维树中, 设某个公交站点为根结点, 其深度为 0, 将 2 维树分为偶数层和 奇数层。
     优选地, 在上述方法中, 站点信息具体表示为 (SP1, SP2, X, Y, NAME, ID), 其中
     SP1 和 SP2 分别表示与公交站点相邻的公交站点 ;
     X 和 Y 分别表示公交站点的经度值和维度值 ;
     NAME 表示公交站点的站点名 ;
     ID 表示公交站点在 2 维树的编号。
     优选地, 在上述方法中, 还包括以下步骤 :
     将能坐车到公交站点的其他公交站点用图的方式缓存。
     优选地, 在上述方法中, 根据公交站点给出出发地到目的地之间的公交线路具体 包括 :
     计算目的地对应的公交站点与目的地之间的距离 ;
     如果距离小于等于设定值, 根据用户设定的权值给出出发地到目的地的公交线路。
     优选地, 在上述方法中, 计算目的地对应的公交站点与目的地之间的距离具体包括: 计算目的地对应的公交站点 A 与目的地 B 之间的距离 Distance 的公式如下 :
     Distance = R*Arccos(C)*Pi/180 ;
     C = sin(LatA*Pi/180)*sin(LatB*Pi/180)+
     cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180) ;
     其中, R 为地球的平均半径, MLonA 和 MLatA 分别为公交站点 A 的经度值和纬度值, MLonB 和 MLatB 分别为目的地 B 的经度值和纬度值, Pi 为圆周率。
     在本发明的实施例中, 还提供了一种用于提供公交线路的系统, 包括 :
     索引模块, 用于将公交站点索引到 K 维树 ;
     查询模块, 用于根据用户输入的出发地和目的地查询出发地和目的地附近的公交 站点 ;
     计算模块, 用于根据公交站点给出出发地到目的地之间的公交线路。
     优选地, 在上述系统中, 查询模块采用 .NET Remoting 作为中间数据传递协议。
     在本实施例中, 通过将的公交站点索引到 K 维树, 完成了对存储在介质上的公交 站点的数据信息的描述, 从而可以根据输入的出发地和目的地选择 K 维树中分支的方向, 提高了数据获取的效率, 使得用户可以较快地查询到所要乘坐的公交线路, 克服了现有技 术中公交查询系统对数据获取的效率较低, 导致用户对公交线路查询的速度较慢问题。
     附图说明 此处所说明的附图用来提供对本发明的进一步理解, 构成本申请的一部分, 本发 明的示意性实施例及其说明用于解释本发明, 并不构成对本发明的不当限定。在附图中 :
     图 1 示出了根据本发明一个实施例的用于提供公交线路的方法流程图 ;
     图 2 示出了根据本发明一个实施例的 2 维树示意图 ;
     图 3 示出了根据本发明一个实施例的经过起点的所有公交线路图 ;
     图 4 示出了根据本发明一个实施例的用于提供公交线路的系统模块图 ;
     图 5 示出了根据本发明一个实施例的 R 树示意图。
     具体实施方式
     下面将参考附图并结合实施例, 来详细说明本发明。
     图 1 示出了根据本发明一个实施例的用于提供公交线路的方法流程图, 包括以下 步骤 :
     S102, 通过 K 维树找出出发地和目的地附近的公交站点, 其中, K 维树是公交站点 的索引, K 等于 2 或 3 ;
     S104, 根据公交站点给出出发地到目的地之间的公交线路。
     在本实施例中, 通过将的公交站点索引到 K 维树, 完成了对存储在介质上的公交 站点的数据信息的描述, 从而可以根据输入的出发地和目的地选择 K 维树中分支的方向, 提高了数据获取的效率, 使得用户可以较快地查询到所要乘坐的公交线路, 克服了现有技术中公交查询系统对数据获取的效率较低, 导致用户对公交线路查询的速度较慢问题。
     例如, 在上述实施例中, 公交站点可以是公共汽车、 地铁、 轻轨等站点。
     优选地, 在上述方法中, 2 维树是公交站点的索引具体包括 :
     根据地理位置的经度值和纬度值建立 X 轴 -Y 轴的 2 维空间 ;
     在 2 维树的偶数层按 X 坐标将公交站点排序, 将公交站点的 X 坐标上相邻的公交 站点作为公交站点的左、 右子树 ;
     在 2 维树的奇数层按 Y 坐标将公交站点排序, 将公交站点的 Y 坐标相邻的公交站 点作为公交站点的左、 右子树 ;
     其中, 在 2 维树中, 设某个公交站点为根结点, 其深度为 0, 将 2 维树分为偶数层和 奇数层。
     在本实施中, 通过构造 2 维的平衡树, 可以较快地对数据信息进行查找, 提高了查 找效率。
     例如, 2 维树可以这样构建, 开始时, 定义站点集为 S, 树的根为整个平面, 然后确 定分割点 p, p ∈ S, 过点 p 的平行于 Y 轴的直线把 S 分割成两个集合 S1 和 S2, 从中选取分 割点 p1、 p2, 分别过 p1、 p2 作平行于 X 轴的直线分割, 以此类推。 图 2 示出了根据本发明一个实施例的 2 维树示意图。
     优选地, 在上述方法中, 站点信息具体表示为 (SP1, SP2, X, Y, NAME, ID), 其中
     SP1 和 SP2 分别表示与公交站点相邻的公交站点 ;
     X 和 Y 分别表示公交站点的经度值和维度值 ;
     NAME 表示公交站点的站点名 ;
     ID 表示公交站点在 2 维树的编号。
     每个公交站点用 K 维树中一个结点来表示, 通过结点中的 6 个域表现出来。开始 的两个域是指向结点两个子节点的指针, 各自相对应方向是左和右 ; X 和 Y 各自保存公交站 点经度和纬度值 ; NAME 域用来保存站点名 ; ID 域表示公交站点在数据库对应的 ID。
     当结点 P 是一个 X 识别器。那么所有具有 X 坐标值小于 P 的结点将放在左树中, 而 X 坐标值大于或等于 P 的结点将放到 P 的右子树中。对于一个 Y 识别器的结点有同样的 约定。
     优选地, 在上述方法中, 还包括以下步骤 :
     将能坐车到公交站点的其他公交站点用图的方式缓存。
     在本实施例中, 通过把每一个站点经过的所有线路能到达的所有公交站点以图的 形式保存下来, 在下次的公交线路查询汇总, 可以节省一步遍历的步骤, 节省了时间, 提高 了查找公交线路的速度。
     图 3 示出了根据本发明一个实施例的经过起点的所有公交线路图, 如图 3 所示, 不 带箭头的线表示经过起点的某一条线路, 带箭头的线表示保存在图中的边记录。
     图用邻接表保存, 在邻接表中, 对图中每个顶点建立一个单链表 ( 并按建立的次 序编号 ), 第 i 个单链表中的结点表示依附于顶点 vi 的边 ( 对于有向图是以顶点 vi 为尾的 弧 )。每个结点由三个域组成 : 邻接点域 (adjvex), 用以指示与 vi 邻接的点在图中的位置, 链域 (nextarc) 用以指向依附于顶点 vi 的下一条边所对应的结点, 存放数据的域 (info) 用于记录相关信息, 例如乘坐线路和距离等。
     优选地, 在上述方法中, 根据公交站点给出出发地到目的地之间的公交线路具体包括 : 计算目的地对应的公交站点与目的地之间的距离 ;
     如果距离小于等于设定值, 根据用户设定的权值给出出发地到目的地的公交线 路。例如, 当用户希望得到更省时间的方案, 那么速度的权重比例将会更高, 最终在对各方 案分别计算分数进行排序时, 速度较快的线路 ( 例如地铁 ) 由于分数更高, 它们在所有换乘 的方案中排名靠前的可能性就越大。
     优选地, 在上述方法中, 计算目的地对应的公交站点与目的地之间的距离具体包 括:
     计算目的地对应的公交站点 A 与目的地 B 之间的距离 Distance 的公式如下 :
     Distance = R*Arccos(C)*Pi/180 ;
     C = sin(LatA*Pi/180)*sin(LatB*Pi/180)+
     cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180) ;
     其中, R 为地球的平均半径, MLonA 和 MLatA 分别为公交站点 A 的经度值和纬度值, MLonB 和 MLatB 分别为目的地 B 的经度值和纬度值, Pi 为圆周率。
     地 球 是 一 个 近 乎 标 准 的 椭 球 体, 它 的 赤 道 半 径 为 6378.140 千 米, 极半径为 6356.755 千米, 平均半径 6371.004 千米。如果我们假设地球是一个完美的球体, 那么它 的半径就是地球的平均半径, 记为 R。如果以 0 度经线为基准, 那么根据地球表面任意两 点的经纬度就可以计算出这两点间的地表距离 ( 这里忽略地球表面地形对计算带来的误 差, 仅仅是理论上的估算值 )。设第一点 A 的经纬度为 (LonA, LatA), 第二点 B 的经纬度 为 (LonB, LatB), 按照 0 度经线的基准, 东经取经度的正值 (Longitude), 西经取经度负值 (-Longitude), 北纬取 90- 纬度值 (90-Latitude), 南纬取 90+ 纬度值 (90+Latitude), 则经 过上述处理过后的两点被计为 (MLonA, MLatA) 和 (MLonB, MLatB)。
     这 里, R 和 Distance 单 位 是 相 同, 如 果 是 采 用 6371.004 千 米 作 为 半 径, 那么 Distance 就是千米为单位, 如果要使用其他单位, 比如 mile, 还需要做单位换算, 1 千米= 0.621371192mile
     如果仅对经度作正负的处理, 而不对纬度作 90-Latitude( 假设都是北半球, 南半 球只有澳洲具有应用意义 ) 的处理, 那么公式将是 :
     C = sin(LatA)*sin(LatB)+
     cos(LatA)*cos(LatB)*cos(MLonA-MLonB) ;
     Distance = R*Arccos(C)*Pi/180。
     如果三角函数的输入和输出都采用弧度值, 那么公式还可以写作 :
     C = sin(LatA*Pi/180)*sin(LatB*Pi/180)+
     cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180) ;
     Distance = R*Arccos(C)*Pi/180。
     由于起点和终点是由经纬度给出, 而各站点的经纬度都已知, 因此可以求出各步 行段的直线距离, 以此来近似实际步行距离。
     图 4 示出了根据本发明一个实施例的用于提供公交线路的系统模块图, 包括 :
     索引模块 10, 用于将公交站点索引到 K 维树 ;
     查询模块 20, 用于根据用户输入的出发地和目的地通过 K 维树查询出发地和目的 地附近的公交站点 ;
     计算模块 30, 用于根据公交站点给出出发地到目的地之间的公交线路。
     在本实施例中, 通过将的公交站点索引到 K 维树, 完成了对存储在介质上的公交 站点的数据信息的描述, 从而可以根据输入的出发地和目的地选择 K 维树中分支的方向, 提高了数据获取的效率, 使得用户可以较快地查询到所要乘坐的公交线路, 克服了现有技 术中公交查询系统对数据获取的效率较低, 导致用户对公交线路查询的速度较慢问题。
     优选地, 在上述系统中, 查询模块采用 .NET Remoting 作为中间数据传递协议。
     .NET Remoting 是微软公司 .NET 编程框架自带的一种远程调用通信协议, 远程调 用又可称为远程过程调用。 该协议允许运行于一台计算机的程序调用另一台计算机的子程 序, 而程序员无需额外地为这个交互作用编程。
     由于处理全国的数据量非常大, 本实施例采用 .NET Remoting 作为分布式计算的 中间数据传递协议, 可将不同城市或地区的数据分布开, 从而提高并发请求数。
     为了以经纬度判断起点终点所在城市, 本实施例采用 R 树空间区域索引技方法。 R 树是一种高度平衡的树, 由中间节点和叶节点组成, 实际数据对象的最小外接矩形存储在 叶节点中, 中间节点通过聚集其低层节点的外接矩形形成, 包含所有这些外接矩形。其后, 人们在此基础上针对不同空间运算提出了不同改进, 才形成了一个繁荣的索引树族, 是目 前流行的空间索引。 R 树是 B 树向多维空间发展的另一种形式, 它将空间对象按范围划分, 每个结点都 对应一个区域和一个磁盘页, 非叶结点的磁盘页中存储其所有子结点的区域范围, 非叶结 点的所有子结点的区域都落在它的区域范围之内 ; 叶结点的磁盘页中存储其区域范围之内 的所有空间对象的外接矩形。 每个结点所能拥有的子结点数目有上、 下限, 下限保证对磁盘 空间的有效利用, 上限保证每个结点对应一个磁盘页, 当插入新的结点导致某结点要求的 空间大于一个磁盘页时, 该结点一分为二。R 树是一种动态索引结构, 即: 它的查询可与插 入或删除同时进行, 而且不需要定期地对树结构进行重新组织。
     R 树可以用来访问二维或者更高维区域对象组成的空间数据。树上有两类结点 : 叶子结点和非叶子结点。每一个结点由若干个索引项构成。对于叶子结点, 索引项形如 (Index, Obj_ID)。其中, Index 表示包围空间数据对象的最小外接矩形 MBR, Obj_ID 标识一 个空间数据对象。 对于一个非叶子结点, 它的索引项形如 (Index, Child_Pointer)。 Child_ Pointer 指向该结点的子结点。Index 仍指一个矩形区域, 该矩形区域包围了子结点上所有 索引项 MBR 的最小矩形区域。图 5 示出了根据本发明一个实施例的 R 树示意图。
     R 树的插入与许多其他树的操作一样, 可以归纳为一个递归过程。 首先从根结点出 发, 按照一定的标准, 选择其中一个孩子插入新的空间要素, 然后再从以孩子为根的子树的 根结点出发重复进行上面操作, 直到叶子结点。设 M 和 m(m ≤ M) 为 R 树结点中单元个数的 上限和下限, 当新的空间要素的插入使叶子结点中的单元个数超过 M 时, 需要进行结点的 分裂操作。分裂操作是将溢出的结点按照一定的规则分为若干部分。在其父结点删除原来 对应的单元, 并加入由分裂产生的相应的单元。 如果这样引起父结点的溢出, 则继续对父结 点进行分裂操作。分裂操作也是一个递归过程, 它保证了空间要素插入后 R 树仍能保持平 衡。
     从 R 树中删除一个空间要素与插入类似, 首先从 R 树中查找到记录该空间要素所 在的叶子结点, 这就是 R 树的查找。从根结点开始, 依次检索包含空间要素的单元所对应孩 子结点为根结点的子树。查询方式利用了 R 树的结构特征, 减少了检索的范围, 提高了检索 的效率。查找到该空间要素所在的叶子结点后, 删除其对应的单元。如果删除后该叶子结 点单元个数少于 m, 需要进行 R 树的压缩操作, 将单元数过少的结点删除。如果父结点因此 单元数也少于 m, 则继续对父结点重复进行该操作。最后将因进行结点调整而被删除的空 间要素重新插入到 R 树中。这就是 R 树的压缩操作, 它使得 R 树的每个结点单元数不低于 m 这个下限, 从而保证了 R 树结点的平衡和利用率。
     从 R 树的结构可以看出, 让空间上靠近的空间要素拥有尽可能近的共同祖先, 能 提高 R 树的查询效率。 在构造 R 树的时候, 尽可能让空间要素的空间位置的远近体现在其最 近的共同祖先的远近上, 形象的说就是让聚集在一起的空间要素尽可能早的组合在一起。 插入中选择子树的标准, 分裂操作、 插入操作中选择子树的标准, 分裂操作中的分裂方法, 都是为了体现这一目标。
     本实施例将每个城市或地区作为一个多边形存储在 R 树中, 查询时由起点终点的 经纬度在 R 树中查询出相应的城市或地区, 再调用对应的服务程序。
     本实施例的用于提供公交线路的系统采用负载均衡策略进行架构。 负载均衡建立 在现有网络结构之上, 它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量, 加强 网络数据处理能力, 提高网络的灵活性和可用性。它主要完成以下任务 : 解决网络拥塞问 题, 服务就近提供, 实现地理位置无关性 ; 为用户提供更好的访问质量 ; 提高服务器响应速 度; 提高服务器及其他资源的利用效率 ; 避免了网络关键部位出现单点失效。
     为了满足高服务质量的需求, 本发明采用反向代理技术实现负载均衡策略。代理 服务把客户的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处 理, 这样可以避免单一服务器失效而导致整个服务失效, 从而达到负载均衡的目的。同时, 由于反向代理本身占用系统资源极小, 因此可以以低成本设置多个反向代理作为服务入 口, 进而运用其他负载均衡策略如 DNS 负载均衡。
     在上述实施例中的用于提供公交线路的系统中, 当第一次用户传入某个城市的起 点、 终点经纬度, 进行换乘, 此城市的缓存机制开始触发, 首先进行站对站索引, 同时, 使用 K 维树, 对各站建空间索引。 接着, 通过空间索引, 得知客户可以到达的站点, 接着使用站对站 索引, 采用上述实施例汇总的用于提供公交线路的方法进行调试, 并且使用不同的权值, 规 划出最适合用户的线路方案。
     显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用 的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布在多个计算装置所组成 的网络上, 可选地, 它们可以用计算装置可执行的程序代码来实现, 从而, 可以将它们存储 在存储装置中由计算装置来执行, 或者将它们分别制作成各个集成电路模块, 或者将它们 中的多个模块或步骤制作成单个集成电路模块来实现。这样, 本发明不限制于任何特定的 硬件和软件结合。
     以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。

用于提供公交线路的方法和系统.pdf_第1页
第1页 / 共11页
用于提供公交线路的方法和系统.pdf_第2页
第2页 / 共11页
用于提供公交线路的方法和系统.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《用于提供公交线路的方法和系统.pdf》由会员分享,可在线阅读,更多相关《用于提供公交线路的方法和系统.pdf(11页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101944096A43申请公布日20110112CN101944096ACN101944096A21申请号200910158932822申请日20090708G06F17/3020060171申请人广东融讯信息科技有限公司地址510656广东省广州市天河区黄埔大道西平云路163号6楼自编1房72发明人柳宗伟74专利代理机构北京康信知识产权代理有限责任公司11240代理人余刚54发明名称用于提供公交线路的方法和系统57摘要本发明提供了一种用于提供公交线路的方法和系统,方法包括以下步骤通过K维树找出出发地和目的地附近的公交站点,其中,K维树是公交站点的索引,K等于2或3;根据公。

2、交站点给出出发地到目的地之间的公交线路。本发明克服了现有技术中公交查询系统对数据获取的效率较低,导致用户对公交线路查询的速度较慢问题。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书6页附图2页CN101944103A1/2页21一种用于提供公交线路的方法,其特征在于,包括以下步骤通过K维树找出出发地和目的地附近的公交站点,其中,所述K维树是所述公交站点的索引,K等于2或3;根据所述公交站点给出所述出发地到所述目的地之间的公交线路。2根据权利要求1所述的方法,其特征在于,所述K维树是所述公交站点的索引具体包括根据地理位置的经度值和纬度值建立X轴Y轴的2维空间;。

3、在所述2维树的偶数层按X坐标将所述公交站点排序,将所述公交站点的X坐标上相邻的公交站点作为所述公交站点的左、右子树;在所述2维树的奇数层按Y坐标将所述公交站点排序,将所述公交站点的Y坐标上相邻的公交站点作为所述公交站点的左、右子树;其中,在所述2维树中,设某个公交站点为根结点,其深度为0,将所述2维树分为偶数层和奇数层。3根据权利要求2所述的方法,其特征在于,所述站点信息具体表示为SP1,SP2,X,Y,NAME,ID,其中所述SP1和所述SP2分别表示与所述公交站点相邻的公交站点;所述X和所述Y分别表示所述公交站点的经度值和维度值;所述NAME表示所述公交站点的站点名;所述ID表示所述公交站。

4、点在所述2维树的编号。4根据权利要求1所述的方法,其特征在于,还包括以下步骤将能坐车到所述公交站点的其他所述公交站点用图的方式缓存。5根据权利要求1所述的方法,其特征在于,根据所述公交站点给出所述出发地到所述目的地之间的公交线路具体包括计算所述目的地对应的公交站点与所述目的地之间的距离;如果所述距离小于等于设定值,根据用户设定的权值给出所述出发地到所述目的地的公交线路。6根据权利要求5所述的方法,其特征在于,计算所述目的地对应的公交站点与所述目的地之间的距离具体包括计算所述目的地对应的公交站点A与所述目的地B之间的距离DISTANCE的公式如下DISTANCERARCCOSCPI/180;CS。

5、INLATAPI/180SINLATBPI/180COSLATAPI/180COSLATBPI/180COSMLONAMLONBPI/180;其中,R为地球的平均半径,MLONA和MLATA分别为所述公交站点A的经度值和纬度值,MLONB和MLATB分别为所述目的地B的经度值和纬度值,PI为圆周率。7一种用于提供公交线路的系统,其特征在于,包括索引模块,用于将公交站点索引到K维树;查询模块,用于根据用户输入的出发地和目的地查询所述出发地和所述目的地附近的公交站点;计算模块,用于根据所述公交站点给出所述出发地到所述目的地之间的公交线路。权利要求书CN101944096ACN101944103A2。

6、/2页38根据权利要求7所述的系统,其特征在于,所述查询模块采用NETREMOTING作为中间数据传递协议。权利要求书CN101944096ACN101944103A1/6页4用于提供公交线路的方法和系统技术领域0001本发明涉及交通领域,具体而言,涉及一种用于提供公交线路的方法和系统。背景技术0002现有的公交查询一般是基于数据库进行线路站点关系的查询,具体来说,将起点站的所有线路中能去到终点站的公交线路列出来,或者将经过起点站的所有公交线路列出,再从中找出能去到终点站的公交线路。0003在实现本发明过程中,发明人发现现有技术中公交查询系统对数据获取的效率较低,导致用户对公交线路查询的速度较。

7、慢。发明内容0004本发明旨在提供一种用于提供公交线路的方法和系统,以解决现有技术中公交查询系统对数据获取的效率较低,导致用户对公交线路查询的速度较慢问题。0005在本发明的实施例中,提供了一种用于提供公交线路的方法,包括以下步骤0006通过K维树找出出发地和目的地附近的公交站点,其中,K维树是公交站点的索引,K等于2或3;0007根据公交站点给出出发地到目的地之间的公交线路。0008优选地,在上述方法中,2维树是公交站点的索引具体包括0009根据地理位置的经度值和纬度值建立X轴Y轴的2维空间;0010在2维树的偶数层按X坐标将公交站点排序,将公交站点的X坐标上相邻的公交站点作为公交站点的左、。

8、右子树;0011在2维树的奇数层按Y坐标将公交站点排序,将公交站点的Y坐标上相邻公交站点作为公交站点的左、右子树;0012其中,在2维树中,设某个公交站点为根结点,其深度为0,将2维树分为偶数层和奇数层。0013优选地,在上述方法中,站点信息具体表示为SP1,SP2,X,Y,NAME,ID,其中0014SP1和SP2分别表示与公交站点相邻的公交站点;0015X和Y分别表示公交站点的经度值和维度值;0016NAME表示公交站点的站点名;0017ID表示公交站点在2维树的编号。0018优选地,在上述方法中,还包括以下步骤0019将能坐车到公交站点的其他公交站点用图的方式缓存。0020优选地,在上述。

9、方法中,根据公交站点给出出发地到目的地之间的公交线路具体包括0021计算目的地对应的公交站点与目的地之间的距离;0022如果距离小于等于设定值,根据用户设定的权值给出出发地到目的地的公交线说明书CN101944096ACN101944103A2/6页5路。0023优选地,在上述方法中,计算目的地对应的公交站点与目的地之间的距离具体包括0024计算目的地对应的公交站点A与目的地B之间的距离DISTANCE的公式如下0025DISTANCERARCCOSCPI/180;0026CSINLATAPI/180SINLATBPI/1800027COSLATAPI/180COSLATBPI/180COSM。

10、LONAMLONBPI/180;0028其中,R为地球的平均半径,MLONA和MLATA分别为公交站点A的经度值和纬度值,MLONB和MLATB分别为目的地B的经度值和纬度值,PI为圆周率。0029在本发明的实施例中,还提供了一种用于提供公交线路的系统,包括0030索引模块,用于将公交站点索引到K维树;0031查询模块,用于根据用户输入的出发地和目的地查询出发地和目的地附近的公交站点;0032计算模块,用于根据公交站点给出出发地到目的地之间的公交线路。0033优选地,在上述系统中,查询模块采用NETREMOTING作为中间数据传递协议。0034在本实施例中,通过将的公交站点索引到K维树,完成了。

11、对存储在介质上的公交站点的数据信息的描述,从而可以根据输入的出发地和目的地选择K维树中分支的方向,提高了数据获取的效率,使得用户可以较快地查询到所要乘坐的公交线路,克服了现有技术中公交查询系统对数据获取的效率较低,导致用户对公交线路查询的速度较慢问题。附图说明0035此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中0036图1示出了根据本发明一个实施例的用于提供公交线路的方法流程图;0037图2示出了根据本发明一个实施例的2维树示意图;0038图3示出了根据本发明一个实施例的经过起点的所有公交线路。

12、图;0039图4示出了根据本发明一个实施例的用于提供公交线路的系统模块图;0040图5示出了根据本发明一个实施例的R树示意图。具体实施方式0041下面将参考附图并结合实施例,来详细说明本发明。0042图1示出了根据本发明一个实施例的用于提供公交线路的方法流程图,包括以下步骤0043S102,通过K维树找出出发地和目的地附近的公交站点,其中,K维树是公交站点的索引,K等于2或3;0044S104,根据公交站点给出出发地到目的地之间的公交线路。0045在本实施例中,通过将的公交站点索引到K维树,完成了对存储在介质上的公交站点的数据信息的描述,从而可以根据输入的出发地和目的地选择K维树中分支的方向,。

13、提高了数据获取的效率,使得用户可以较快地查询到所要乘坐的公交线路,克服了现有技说明书CN101944096ACN101944103A3/6页6术中公交查询系统对数据获取的效率较低,导致用户对公交线路查询的速度较慢问题。0046例如,在上述实施例中,公交站点可以是公共汽车、地铁、轻轨等站点。0047优选地,在上述方法中,2维树是公交站点的索引具体包括0048根据地理位置的经度值和纬度值建立X轴Y轴的2维空间;0049在2维树的偶数层按X坐标将公交站点排序,将公交站点的X坐标上相邻的公交站点作为公交站点的左、右子树;0050在2维树的奇数层按Y坐标将公交站点排序,将公交站点的Y坐标相邻的公交站点作。

14、为公交站点的左、右子树;0051其中,在2维树中,设某个公交站点为根结点,其深度为0,将2维树分为偶数层和奇数层。0052在本实施中,通过构造2维的平衡树,可以较快地对数据信息进行查找,提高了查找效率。0053例如,2维树可以这样构建,开始时,定义站点集为S,树的根为整个平面,然后确定分割点P,PS,过点P的平行于Y轴的直线把S分割成两个集合S1和S2,从中选取分割点P1、P2,分别过P1、P2作平行于X轴的直线分割,以此类推。0054图2示出了根据本发明一个实施例的2维树示意图。0055优选地,在上述方法中,站点信息具体表示为SP1,SP2,X,Y,NAME,ID,其中0056SP1和SP2。

15、分别表示与公交站点相邻的公交站点;0057X和Y分别表示公交站点的经度值和维度值;0058NAME表示公交站点的站点名;0059ID表示公交站点在2维树的编号。0060每个公交站点用K维树中一个结点来表示,通过结点中的6个域表现出来。开始的两个域是指向结点两个子节点的指针,各自相对应方向是左和右;X和Y各自保存公交站点经度和纬度值;NAME域用来保存站点名;ID域表示公交站点在数据库对应的ID。0061当结点P是一个X识别器。那么所有具有X坐标值小于P的结点将放在左树中,而X坐标值大于或等于P的结点将放到P的右子树中。对于一个Y识别器的结点有同样的约定。0062优选地,在上述方法中,还包括以下。

16、步骤0063将能坐车到公交站点的其他公交站点用图的方式缓存。0064在本实施例中,通过把每一个站点经过的所有线路能到达的所有公交站点以图的形式保存下来,在下次的公交线路查询汇总,可以节省一步遍历的步骤,节省了时间,提高了查找公交线路的速度。0065图3示出了根据本发明一个实施例的经过起点的所有公交线路图,如图3所示,不带箭头的线表示经过起点的某一条线路,带箭头的线表示保存在图中的边记录。0066图用邻接表保存,在邻接表中,对图中每个顶点建立一个单链表并按建立的次序编号,第I个单链表中的结点表示依附于顶点VI的边对于有向图是以顶点VI为尾的弧。每个结点由三个域组成邻接点域ADJVEX,用以指示与。

17、VI邻接的点在图中的位置,链域NEXTARC用以指向依附于顶点VI的下一条边所对应的结点,存放数据的域INFO用于记录相关信息,例如乘坐线路和距离等。说明书CN101944096ACN101944103A4/6页70067优选地,在上述方法中,根据公交站点给出出发地到目的地之间的公交线路具体包括0068计算目的地对应的公交站点与目的地之间的距离;0069如果距离小于等于设定值,根据用户设定的权值给出出发地到目的地的公交线路。例如,当用户希望得到更省时间的方案,那么速度的权重比例将会更高,最终在对各方案分别计算分数进行排序时,速度较快的线路例如地铁由于分数更高,它们在所有换乘的方案中排名靠前的可。

18、能性就越大。0070优选地,在上述方法中,计算目的地对应的公交站点与目的地之间的距离具体包括0071计算目的地对应的公交站点A与目的地B之间的距离DISTANCE的公式如下0072DISTANCERARCCOSCPI/180;0073CSINLATAPI/180SINLATBPI/1800074COSLATAPI/180COSLATBPI/180COSMLONAMLONBPI/180;0075其中,R为地球的平均半径,MLONA和MLATA分别为公交站点A的经度值和纬度值,MLONB和MLATB分别为目的地B的经度值和纬度值,PI为圆周率。0076地球是一个近乎标准的椭球体,它的赤道半径为63。

19、78140千米,极半径为6356755千米,平均半径6371004千米。如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R。如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值。设第一点A的经纬度为LONA,LATA,第二点B的经纬度为LONB,LATB,按照0度经线的基准,东经取经度的正值LONGITUDE,西经取经度负值LONGITUDE,北纬取90纬度值90LATITUDE,南纬取90纬度值90LATITUDE,则经过上述处理过后的两点被计为MLONA,MLATA和MLONB,。

20、MLATB。0077这里,R和DISTANCE单位是相同,如果是采用6371004千米作为半径,那么DISTANCE就是千米为单位,如果要使用其他单位,比如MILE,还需要做单位换算,1千米0621371192MILE0078如果仅对经度作正负的处理,而不对纬度作90LATITUDE假设都是北半球,南半球只有澳洲具有应用意义的处理,那么公式将是0079CSINLATASINLATB0080COSLATACOSLATBCOSMLONAMLONB;0081DISTANCERARCCOSCPI/180。0082如果三角函数的输入和输出都采用弧度值,那么公式还可以写作0083CSINLATAPI/18。

21、0SINLATBPI/1800084COSLATAPI/180COSLATBPI/180COSMLONAMLONBPI/180;0085DISTANCERARCCOSCPI/180。0086由于起点和终点是由经纬度给出,而各站点的经纬度都已知,因此可以求出各步行段的直线距离,以此来近似实际步行距离。0087图4示出了根据本发明一个实施例的用于提供公交线路的系统模块图,包括0088索引模块10,用于将公交站点索引到K维树;说明书CN101944096ACN101944103A5/6页80089查询模块20,用于根据用户输入的出发地和目的地通过K维树查询出发地和目的地附近的公交站点;0090计算模。

22、块30,用于根据公交站点给出出发地到目的地之间的公交线路。0091在本实施例中,通过将的公交站点索引到K维树,完成了对存储在介质上的公交站点的数据信息的描述,从而可以根据输入的出发地和目的地选择K维树中分支的方向,提高了数据获取的效率,使得用户可以较快地查询到所要乘坐的公交线路,克服了现有技术中公交查询系统对数据获取的效率较低,导致用户对公交线路查询的速度较慢问题。0092优选地,在上述系统中,查询模块采用NETREMOTING作为中间数据传递协议。0093NETREMOTING是微软公司NET编程框架自带的一种远程调用通信协议,远程调用又可称为远程过程调用。该协议允许运行于一台计算机的程序调。

23、用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。0094由于处理全国的数据量非常大,本实施例采用NETREMOTING作为分布式计算的中间数据传递协议,可将不同城市或地区的数据分布开,从而提高并发请求数。0095为了以经纬度判断起点终点所在城市,本实施例采用R树空间区域索引技方法。R树是一种高度平衡的树,由中间节点和叶节点组成,实际数据对象的最小外接矩形存储在叶节点中,中间节点通过聚集其低层节点的外接矩形形成,包含所有这些外接矩形。其后,人们在此基础上针对不同空间运算提出了不同改进,才形成了一个繁荣的索引树族,是目前流行的空间索引。0096R树是B树向多维空间发展的另一种形式,它。

24、将空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的所有子结点的区域都落在它的区域范围之内;叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。每个结点所能拥有的子结点数目有上、下限,下限保证对磁盘空间的有效利用,上限保证每个结点对应一个磁盘页,当插入新的结点导致某结点要求的空间大于一个磁盘页时,该结点一分为二。R树是一种动态索引结构,即它的查询可与插入或删除同时进行,而且不需要定期地对树结构进行重新组织。0097R树可以用来访问二维或者更高维区域对象组成的空间数据。树上有两类结点叶子结点和非叶子结点。每一个结点由若干个索引。

25、项构成。对于叶子结点,索引项形如INDEX,OBJ_ID。其中,INDEX表示包围空间数据对象的最小外接矩形MBR,OBJ_ID标识一个空间数据对象。对于一个非叶子结点,它的索引项形如INDEX,CHILD_POINTER。CHILD_POINTER指向该结点的子结点。INDEX仍指一个矩形区域,该矩形区域包围了子结点上所有索引项MBR的最小矩形区域。图5示出了根据本发明一个实施例的R树示意图。0098R树的插入与许多其他树的操作一样,可以归纳为一个递归过程。首先从根结点出发,按照一定的标准,选择其中一个孩子插入新的空间要素,然后再从以孩子为根的子树的根结点出发重复进行上面操作,直到叶子结点。。

26、设M和MMM为R树结点中单元个数的上限和下限,当新的空间要素的插入使叶子结点中的单元个数超过M时,需要进行结点的分裂操作。分裂操作是将溢出的结点按照一定的规则分为若干部分。在其父结点删除原来对应的单元,并加入由分裂产生的相应的单元。如果这样引起父结点的溢出,则继续对父结点进行分裂操作。分裂操作也是一个递归过程,它保证了空间要素插入后R树仍能保持平衡。说明书CN101944096ACN101944103A6/6页90099从R树中删除一个空间要素与插入类似,首先从R树中查找到记录该空间要素所在的叶子结点,这就是R树的查找。从根结点开始,依次检索包含空间要素的单元所对应孩子结点为根结点的子树。查询。

27、方式利用了R树的结构特征,减少了检索的范围,提高了检索的效率。查找到该空间要素所在的叶子结点后,删除其对应的单元。如果删除后该叶子结点单元个数少于M,需要进行R树的压缩操作,将单元数过少的结点删除。如果父结点因此单元数也少于M,则继续对父结点重复进行该操作。最后将因进行结点调整而被删除的空间要素重新插入到R树中。这就是R树的压缩操作,它使得R树的每个结点单元数不低于M这个下限,从而保证了R树结点的平衡和利用率。0100从R树的结构可以看出,让空间上靠近的空间要素拥有尽可能近的共同祖先,能提高R树的查询效率。在构造R树的时候,尽可能让空间要素的空间位置的远近体现在其最近的共同祖先的远近上,形象的。

28、说就是让聚集在一起的空间要素尽可能早的组合在一起。插入中选择子树的标准,分裂操作、插入操作中选择子树的标准,分裂操作中的分裂方法,都是为了体现这一目标。0101本实施例将每个城市或地区作为一个多边形存储在R树中,查询时由起点终点的经纬度在R树中查询出相应的城市或地区,再调用对应的服务程序。0102本实施例的用于提供公交线路的系统采用负载均衡策略进行架构。负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。它主要完成以下任务解决网络拥塞问题,服务就近提供,实现地理位置无关性;为用户提供更好的访问质量;提高服务器响应。

29、速度;提高服务器及其他资源的利用效率;避免了网络关键部位出现单点失效。0103为了满足高服务质量的需求,本发明采用反向代理技术实现负载均衡策略。代理服务把客户的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,这样可以避免单一服务器失效而导致整个服务失效,从而达到负载均衡的目的。同时,由于反向代理本身占用系统资源极小,因此可以以低成本设置多个反向代理作为服务入口,进而运用其他负载均衡策略如DNS负载均衡。0104在上述实施例中的用于提供公交线路的系统中,当第一次用户传入某个城市的起点、终点经纬度,进行换乘,此城市的缓存机制开始触发,首先进行站对站索引,同时,使用K维树,对各站。

30、建空间索引。接着,通过空间索引,得知客户可以到达的站点,接着使用站对站索引,采用上述实施例汇总的用于提供公交线路的方法进行调试,并且使用不同的权值,规划出最适合用户的线路方案。0105显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。0106以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN101944096ACN101944103A1/2页10图1图2说明书附图CN101944096ACN101944103A2/2页11图3图4图5说明书附图CN101944096A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1