公开/公告号CN106997355A
专利类型发明专利
公开/公告日2017-08-01
原文格式PDF
申请/专利权人 北京四维图新科技股份有限公司;
申请/专利号CN201610046174.0
发明设计人 史川;
申请日2016-01-25
分类号
代理机构北京市天玺沐泽专利代理事务所(普通合伙);
代理人鲍晓
地址 100028 北京市朝阳区曙光西里甲5号凤凰置地广场A座写字楼16-17层
入库时间 2023-06-19 02:53:54
法律状态公告日
法律状态信息
法律状态
2020-06-02
授权
授权
2017-08-25
实质审查的生效 IPC(主分类):G06F17/30 申请日:20160125
实质审查的生效
2017-08-01
公开
公开
技术领域
本发明涉及计算机领域,尤其涉及一种基于Mongodb获取距离、确定距离最短线段的方法及装置。
背景技术
Mongodb是当前最流行的Nosq1数据库之一,Mongodb是一个基于分布式文件存储的数据库。Mongodb支持矢量数据的存储和空间查询计算,自带有Near函数,利用Near函数可计算出以某点为中心,在一定范围内离中心点距离最短的线。
Mongodb自带的Near函数计算点到线的距离,是通过计算该点到线上的每个形状点的距离实现的。线是由一系列的坐标串构成,一个形状点就代表一个坐标位置,由于某些线很长且直,只有首尾端点组成,那么点到线的距离就是点到最近端点的距离。如图1所示P1、P2是线段P1P2的首末端点,P是线段外一点,则d1是Mongodb中Near函数给出的点P到线段P1P2的距离。然而,点P到线段P1P2的距离实际上是点P到线段P1P2的垂直距离d,因此,采用上述方法得到的点P到线段P1P2的距离往往与实际的垂直距离d偏差较大。
发明内容
本发明要解决的技术问题是提供一种基于Mongodb获取距离、确定距离最短线段的方法及装置,用于解决现有技术中,Mongodb自带的Near函数计算点到线的距离误差大的缺陷。
为解决上述技术问题,本发明提供一种基于Mongodb获取距离的方法,所述方法包括:
当线段上相邻的两个形状点之间的长度大于预定值时,则在所述线段上所述相邻的两个形状点的中间位置插入一形状点,直至所述线段上每相邻的两个形状点之间的长度都小于等于预定值时,停止插入形状点;
将线段外所选固定点与所述线段上各形状点距离的最小值,确定为所述固定点到所述线段的距离。
为了实现上述方法,本发明提供一种基于Mongodb获取距离的装置,包括:判断模块、处理模块及获取模块,其中,
所述判断模块,用于判断线段上相邻的两个形状点之间的长度与预定值的关系;
所述处理模块,用于当线段上相邻的两个形状点之间的长度大于预定值时,则在所述线段上所述相邻的两个形状点的中间位置插入一形状点,直至所述线段上每相邻的两个形状点之间的长度都小于等于预定值时,停止插入形状点;
所述获取模块,用于将线段外所选固定点与所述线段上各形状点距离的最小值,确定为所述固定点到所述线段的距离。
本发明还提供一种基于Mongodb确定距离最短线段的方法,其特征在于,所述方法包括:
确定包含固定点的缓冲区;
选择所述缓冲区内若干条线段;
计算所述固定点到每条线段的距离;
将所述缓冲区内距离所述固定点距离最小的线段,确定为所述固定点的最近线段;
所述计算所述固定点到每条线段的距离包括:
当线段上相邻的两个形状点之间的长度大于预定值时,则在该线段上所述相邻的两个形状点的中间位置插入一形状点,直至该线段上每相邻的两个形状点之间的长度都小于等于预定值时,停止插入形状点;
将所述固定点与该线段上各形状点距离的最小值,确定为所述固定点到该线段的距离。
可选的,所述确定包含固定点的缓冲区,包括:
确定所述固定点;
以所述固定点为圆心以预设值为半径划定圆形区域作为所述缓冲区。
为了实现上述基于Mongodb确定距离最短线段的方法,本发明还提供一种基于Mongodb获取距离最短线段的装置,其特征在于,所述装置包括:获取模块、选择模块、计算模块、第一处理模块、第二处理模块及第三处理模块;其中,
所述获取模块,用于确定包含固定点的缓冲区;
所述选择模块,用于选择所述缓冲区内若干条线段;
所述计算模块,用于计算所述固定点到每条线段的距离;
所述第一处理模块,用于将所述缓冲区内距离所述固定点距离最小的线段,确定为所述固定点的最近线段;
所述第二处理模块,用于当线段上相邻的两个形状点之间的长度大于预定值时,则在该线段上所述相邻的两个形状点的中间位置插入一形状点,直至该线段上每相邻的两个形状点之间的长度都小于等于预定值时,停止插入形状点;
所述第三处理模块,用于将所述固定点与该线段上各形状点距离的最小值,确定为所述固定点到该线段的距离。
可选的,所述获取模块包括:选择单元及处理单元;其中,
所述选择单元,用于确定所述固定点;
所述处理单元,用于以所述固定点为圆心以预设值为半径划定圆形区域作为所述缓冲区。
本发明采用差值计算方法将线段划出若干个形状点,且相邻两个形状点之间的长度不大于预定值。采用上述方法依次计算点P到线段AB上每个形状点的距离,以其中的最小值作为点P到线段AB的距离。相较于现有技术中获得点P到线段AB的距离,采用本发明实施例提供的计算点P到线段AB的距离的方法获得的点P到线段AB的距离更加接近于点P到线段AB的垂直距离,精确度更高。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是现有技术中Mongodb自带的Near函数计算点到线的距离的示意图;
图2是本发明一可选实施例提供的基于Mongodb获取距离的方法流程示意图;
图3是本发明一可选实施例提供的基于Mongodb确定距离最短线段的方法示意图;
图4是本发明一可选实施例基于Mongodb获取距离的示意图;
图5是本发明实施例提供的基于Mongodb确定距离最短线段的方法的流程示意图;
图6是本发明一可选实施例提供的基于Mongodb确定距离最短线段的示意图;
图7是本发明实施例提供的基于Mongodb获取距离的装置的结构示意图;
图8是本发明一可选实施例提供一种基于Mongodb获取距离最短线段的装置。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
现有技术中,对于一确定线段以及线段外一点,可以采用Mongodb自带的Near函数计算得到的点到线段的距离,但是采用此方法得到的点到线段的距离与实际的点到线的距离偏差较大,为此,本发明实施例提供一种准确性更高的计算点到线的距离的方法。
如图2所示,一种基于Mongodb获取距离的方法,该方法包括:
步骤201、当线段上相邻的两个形状点之间的长度大于预定值时,则在所述线段上所述相邻的两个形状点的中间位置插入一形状点,直至所述线段上每相邻的两个形状点之间的长度都小于等于预定值时,停止插入形状点;
可选的,形状点可以是直角坐标系中的坐标点,形状点可以由横坐标值与纵坐标值确定。
开始形状点A和结尾形状点B之间的总长度可以根据形状点A的坐标位置和形状点B的坐标位置确定,即可以用平面坐标系下的两点(形状点A和形状点B)间距离公式计算得到。
该预定值可以依实际需求而不同,例如该预定值可以是几米、几分米、几厘米、几毫米等等。
可选的,判断总长度是否大于预定值,如果是,执行步骤:
在开始形状点A和结尾形状点B之间的中点位置插入第一分割点C,且第一分割点C位于线段AB上。
该中点位置可根据直角坐标系中的中点,即该中点位置可以根据形状点A和形状点B的坐标位置确定。
在一个具体示例中,可以采用如下方式实现上述步骤:
将矢量的Polyline导入到Mongodb中,Polyline在Mongodb中是按照二维的坐标序列串存储,如:{″_id″:ObjectId(″535884771dbba31858ad2101″),″geo″:{″type″:″Polyline″,″Coordinates″:[[[96.722,38.755],[97.3482,38.6922],[97.1674,38.0752],[96.5474,38.1383]]]}},然后建立二维索引。
遍历每个Polyline对象,计算每两个形状点之间的距离,如果该距离小于预设的预定值(例如该预定值为1米)则进行差值运算
可选的,本步骤包括:确定开始形状点A与第一分割点C之间的第一长度t1不大于预定值,并且结尾形状点B与第一分割点C之间的第二长度t2不大于预定值。
t1、t2可用平面坐标系下的两点间距离公式计算得到,即t1可根据开始形状点A的坐标值和第一分割点C的坐标值获得,t2可根据结尾形状点B和第一分割点C的坐标值获得。
开始形状点A与第一分割点C之间的第一长度可以采用与步骤S201类似的方法获得,结尾形状点B与第一分割点C之间的第二长度也可以采用与确定线段AB的开始形状点A和结尾形状点B之间的总长度类似的方法获得。
步骤202、将线段外所选固定点与所述线段上各形状点距离的最小值,确定所述固定点到所述线段的距离。
可选的,在该步骤中,获取线段外一固定点P与开始形状点A之间的第一间距d1、固定点P与结尾形状点B之间的第二间距d2以及固定点P与第一分割点C之间的第三间距d3。
d1、d2、d3可用平面坐标系下的两点间距离公式计算得到,即d1可根据固定点P的坐标值和开始形状点A的坐标值获得,d2可根据固定点P的坐标值与结尾形状点B的坐标值获得,d3可根据固定点P的坐标值和第一分割点C的坐标值获得。
可选的,在该步骤中包括:确定第一间距d1、第二间距d2以及第三间距d3中最小者作为固定点P到线段AB的距离。
可以依次将d1与d2、d3做比较,找出最小者。
本发明实施例采用差值计算方法将线段划出若干个形状点,且相邻两个形状点之间的长度不大于预定值。采用上述方法依次计算点P到线段AB上每个形状点的距离,以其中的最小值作为点P到线段AB的距离。相较于现有技术中获得点P到线段AB的距离,采用本发明实施例提供的计算点P到线段AB的距离的方法获得的点P到线段AB的距离更加接近于点P到线段AB的垂直距离,精确度更高。
如图3,本发明一可选实施例提供基于Mongodb确定距离最短线段的方法,包括如下步骤:
步骤301、确定包含固定点的缓冲区;
步骤302、选择所述缓冲区内若干条线段;
步骤303、计算所述固定点到每条线段的距离;
步骤304、将所述缓冲区内距离所述固定点距离最小的线段,确定为所述固定点的最近线段;
其中,所述计算所述固定点到每条线段的距离包括:
步骤201、当线段上相邻的两个形状点之间的长度大于预定值时,则在该线段上所述相邻的两个形状点的中间位置插入一形状点,直至该线段上每相邻的两个形状点之间的长度都小于等于预定值时,停止插入形状点;
步骤202、将所述固定点与该线段上各形状点距离的最小值,确定为所述固定点到该线段的距离。
需要说明的是,本发明另外一些实施例提供的基于Mongodb获取点到线段的距离的方法,还可以包括以下步骤M1-M5:
步骤M1:确定开始形状点A与第一分割点C之间的第一长度t1大于预定值且结尾形状点B与第一分割点C之间的第二长度t2不大于预定值。
步骤M2:在开始形状点A与第一分割点C之间的第二中点位置插入第二分割点D。
这里的第二中点位置可以采用上述实施例中第一中点位置类似的获得方式获得。
依据上述实施例,如果开始形状点A与第一分割点C之间的第一长度和结尾形状点B与第一分割点C之间的第二长度t2均不大于预定值,则不再对线段AB进行分割、添加分割点。
步骤M3:确定开始形状点A与第二分割点D之间的第三长度t3不大于预定值且第二分割点D与第一分割点C之间的第四长度t4不大于预定值。
t3、t4可用平面坐标系下的两点间距离公式计算得到,即t3可根据开始形状点A的坐标值和第二分割点D的坐标值获得,t4可根据第二分割点D和第一分割点C的坐标值获得。
如果开始形状点A与第一分割点C之间的第一长度大于预定值,则继续对线段AB进行分割、添加分割点,直至线段AB上所有的相邻形状点之间的长度不大于预定值。
步骤M4:获取固定点P与第二分割点D之间的第四间距d4。
d4可用平面坐标系下的两点间距离公式计算得到,即d4可根据固定点P的坐标值和开始形状点A的坐标值获得。
步骤M5:确定第一间距d1、第二间距d2、第三间距d3以及第四间距d4中最小者为固定点P到线段AB的距离。
可以将d4与d1、d2、d3中的最小者做比较,找出四者中的最小者。
此外,另外一些实施例中,本发明实施例提供的基于Mongodb获取点到线段的距离的方法还可以包括以下步骤N1-N5:
步骤N1:确定结尾形状点B与第一分割点C之间的第二长度t2不大于预定值。
步骤N2:在结尾形状点B与第一分割点C之间的第三中点位置插入第三分割点E。
这里的第三中点位置可以采用上述实施例中第一中点位置类似的获得方式获得。
步骤N3:确定结尾形状点B与第三分割点E之间的第五长度t5不大于预定值且第一分割点C与第三分割点E之间的第六长度t6不大于预定值。
t5、t6可用平面坐标系下的两点间距离公式计算得到,即t5可根据结尾形状点B的坐标值和第三分割点E的坐标值获得,t6可根据第一分割点C和第三分割点E的坐标值获得。
如果结尾形状点B与第三分割点E之间的第五长度t5大于预定值,和/或,第一分割点C和第三分割点E之间的第六长度t6大于预定值,则继续对线段AB进行分割、添加分割点,直至线段AB上所有的相邻形状点之间的长度不大于预定值。
步骤N4:获取结尾形状点B与第三分割点E之间的第五间距d5。
d5可用平面坐标系下的两点间距离公式计算得到,即d5可根据固定点P的坐标值和开始形状点A的坐标值获得。
步骤N5:确定第一间距d1、第二间距d2、第三间距d3、第四间距d4以及第五间距d5中最小者为固定点P到线段AB的距离。
可以将d5与d1、d2、d3、d4中的最小者做比较,找出五者中的最小者。
本发明实施例提供的基于Mongodb获取距离的装置,采用差值计算方法将线段划出若干个形状点,且相邻两个形状点之间的长度不大于预定值。采用上述方法依次计算点P到线段AB上每个形状点的距离,以其中的最小值作为点P到线段AB的距离。相较于现有技术中获得点P到线段AB的距离,采用本发明实施例提供的计算点P到线段AB的距离的方法获得的点P到线段AB的距离更加接近于点P到线段AB的垂直距离,精确度更高。
此外,本发明一可选实施例还提供一种基于Mongodb获取距离的方法,如图5、6所示,该方法可以包括如下步骤:
步骤S501:确定包含固定点P的缓冲区Q。
一些实施例中,步骤S501可以采用以下步骤实现:
首先可以确定固定点P;
然后可以以固定点P为圆心,以预设值为半径划定圆形区域作为缓冲区Q。
步骤S502:选择缓冲区Q内若干条线段。
一些实施例中,缓冲区Q内可能有很多条线段,可以选择这些线段中的全部线段,也可以选择这些线段中的一部分线段。其中,选出的这些线段可以均不经过固定点P。
例如图6中,P1-P12构成很多条线段,可以选择其中的线段P1P2和线段P8P9。
步骤S503:计算固定点P到每条线段的距离。
可以采用上述图2所示的基于Mongodb获取距离的方法计算点P到线段P1P2的距离以及点P到线段P8P9的距离,例如根据此方法得到的点P到线段P1P2的距离为d1,点P到线段P8P9的距离为d3。
步骤S504:确定距离最小者对应的线段为到固定点P距离最短的线段。
若d1小于d3,则P1P2为到固定点P距离最短的线段;反之,则P8P9为到固定点P距离最短的线段。
采用上述方法确定的到固定点距离最近的线段会更为精确。
另外,如图7所示,本发明一可选实施例还提供一种基于Mongodb获取距离的装置,如图4所示,该装置可以包括:判断模块701、处理模块702及获取模块703,其中,
所述判断模块701,用于判断线段上相邻的两个形状点之间的长度与预定值的关系;
所述处理模块702,用于当线段上相邻的两个形状点之间的长度大于预定值时,则在所述线段上所述相邻的两个形状点的中间位置插入一形状点,直至所述线段上每相邻的两个形状点之间的长度都小于等于预定值时,停止插入形状点;
所述获取模块703,用于将线段外所选固定点与所述线段上各形状点距离的最小值,确定为所述固定点到所述线段的距离。
此外,如图8所示,本发明一可选实施例提供一种基于Mongodb获取距离最短线段的装置。此装置包括:获取模块801、选择模块802、计算模块803、第一处理模块804、第二处理模块805及第三处理模块806;其中,
所述获取模块801,用于确定包含固定点的缓冲区;
所述选择模块802,用于选择所述缓冲区内若干条线段;
所述计算模块803,用于计算所述固定点到每条线段的距离;
所述第一处理模块804,用于将所述缓冲区内距离所述固定点距离最小的线段,确定为所述固定点的最近线段;
所述第二处理模块805,用于当线段上相邻的两个形状点之间的长度大于预定值时,则在该线段上所述相邻的两个形状点的中间位置插入一形状点,直至该线段上每相邻的两个形状点之间的长度都小于等于预定值时,停止插入形状点;
所述第三处理模块806,用于将所述固定点与该线段上各形状点距离的最小值,确定为所述固定点到该线段的距离。
可选的,所述获取模块801包括:选择单元811及处理单元812;其中,
所述选择单元811,用于确定所述固定点;
所述处理单元812,用于以所述固定点为圆心以预设值为半径划定圆形区域作为所述缓冲区。
上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
机译: 获取物体并确定物体与车辆之间的距离的方法,包括基于记录的由光发射器发射的光的反射信息来确定物体与车辆之间的距离。
机译: 车辆最短停车距离预测方法和车辆最短停车距离预测装置
机译: 车辆最短停顿距离预测方法及车辆最短停顿距离预测装置