三维目标的查询方法、装置、设备及计算机可读存储介质与流程

文档序号:15312390发布日期:2018-08-31 22:10阅读:133来源:国知局

本发明实施例涉及三维空间检索技术领域,特别是涉及一种三维目标的查询方法、装置、设备及计算机可读存储介质。



背景技术:

随着城市的快速发展,传统城市管理方式因其抽象性、专业性、信息流动较慢等问题,已不能满足城市发展的需要以及人民对优质生活的要求。

在互联网技术快速发展的催动作用下,加快推动城市管理的实时性、直观性的运行模式发展进程,加速城市管理的转型升级尤其重要。现有技术中,搜索的目标物体只能在二维平面上进行显示,而现在各大城市高楼林立,只确定目标的二维平面位置,而无法确定目标物的三维空间位置,无法实现精准的目标查询,不利于用户获得准确的定位信息,用户还需要进行进一步的查询。

鉴于此,如何实现目标的精准查询,准确显示目标的空间位置,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种三维目标的查询方法、装置、设备及计算机可读存储介质,实现了目标的精准查询,可在三维空间场景中准确定位目标的空间位置。

为解决上述技术问题,本发明实施例提供以下技术方案:

本发明实施例一方面提供了一种三维目标的查询方法,基于三维地图引擎绘制图形的方法,包括:

获取三维空间场景中的待查询目标点和待查询目标区域;

回调所述待查询目标点,获取所述待查询目标区域的顶点坐标;

在所述待查询目标区域中查询所述待查询目标点的过程中,利用回调返回的顶点坐标,通过判断所述待查询目标点与所述待查询目标区域的位置关系,确定所述待查询目标点在所述待查询目标区域中位置;

在所述三维空间场景中,利用模型加载的方式展示查询得到所述待查询目标点的三维位置。

可选的,所述判断所述待查询目标点与所述待查询目标区域的位置关系包括:

以所述待查询目标点作为起点,以无穷远为终点生成平行于x轴的直线;

循环取所述待查询目标区域的每一条边,执行下述判断过程;

当所述待查询目标区域的当前边不平行于所述直线时,判断所述待查询目标点是否在当前边上;若是,则返回所述待查询目标点在所述待查询目标区域的边上的结果;若否,则判断所述直线和当前边是否相交;若是,则对交点进行计数;若否,则取所述待查询目标区域的非当前边的另一条边;

当循环取完所述待查询目标区域的每一条边时,统计交点的总数;

若交点总数为奇数,则返回所述待查询目标点在所述待查询目标区域内的结果;

若交点总数为偶数,则返回所述待查询目标点不在所述待查询目标区域内的结果。

可选的,所述待查询目标区域的形状为圆形或矩形。

可选的,还包括:

将所述三维位置信息转化为相应文字位置信息,发送至用户端。

可选的,所述获取三维空间场景中待查询目标点和待查询目标区域包括:

接收用户选择的查询资源类型以及查询目标区域范围;

根据用户选择的查询资源类型生成待查询目标点;根据查询目标区域范围生成待查询目标区域。

本发明实施例另一方面提供了一种三维目标的查询装置,包括:

获取信息模块,用于获取三维空间场景中待查询目标点和待查询目标区域;

顶点坐标获取模块,用于回调所述待查询目标点,获取所述待查询目标区域的顶点坐标;

查询模块,用于在所述待查询目标区域中查询所述待查询目标点的过程中,通过回调返回的顶点坐标,利用射线法判断所述待查询目标点与所述待查询目标区域的位置关系,确定所述待查询目标点在所述待查询目标区域中位置;

展示模块,用于在所述三维空间场景中,利用模型加载的方式展示查询得到所述待查询目标点的三维位置。

可选的,所述查询模块包括:

直线生成子模块,用于以所述待查询目标点作为起点,以无穷远为终点生成平行于x轴的直线;

循环判断子模块,用于循环取所述待查询目标区域的每一条边,执行下述判断过程;当所述待查询目标区域的当前边不平行于所述直线时,判断所述待查询目标点是否在当前边上;若是,则返回所述待查询目标点在所述待查询目标区域的边上的结果;若否,则判断所述直线和当前边是否相交;若是,则对交点进行计数;若否,则取所述待查询目标区域的非当前边的另一条边;

统计交点总数子模块,用于当循环取完所述待查询目标区域的每一条边时,统计交点的总数;

结果反馈子模块,用于若交点总数为奇数,则返回所述待查询目标点在所述待查询目标区域内的结果;若交点总数为偶数,则返回所述待查询目标点不在所述待查询目标区域内的结果。

可选的,在所述利用模型加载的方式展示查询得到所述待查询目标点的三维位置之后,还包括:

发送模块,用于将所述三维位置信息转化为相应文字位置信息,发送至用户端。

本发明实施例还提供了一种三维目标的查询设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述三维目标的查询方法的步骤。

本发明实施例最后还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前任一项所述三维目标的查询方法的步骤。

本发明实施例提供了一种三维目标的查询方法,获取三维空间场景中待查询目标点和待查询目标区域;回调待查询目标点,获取待查询目标区域的顶点坐标;在待查询目标区域中查询待查询目标点的过程中,利用回调返回的顶点坐标,通过判断待查询目标点与待查询目标区域的位置关系,确定待查询目标点在待查询目标区域中位置;在三维空间场景中,利用模型加载的方式展示查询得到待查询目标点的三维位置。

本申请提供的技术方案的优点在于,基于三维地图引擎绘制图形的方法,将绘制出的图形信息进行关键点获取,通过绘制回调后的关键点事件回调调用相关的后端接口,通过对应的模型加载的方法展示查询出结果集,实现在三维空间场景中确定待查询目标点在待查询目标区域内的位置,得到的待查询目标点的位置信息为三维空间位置,即既包括二维平面信息,还包括深度信息,实现了目标点的精准查询,可在三维空间场景中准确定位查询目标的空间位置。

此外,本发明实施例还针对三维目标的查询方法提供了相应的实现装置、设备及计算机可读存储介质,进一步使得所述方法更具有实用性,所述装置具有相应的优点。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种三维目标的查询方法的流程示意图;

图2为本发明实施例提供判断待查询目标点与待查询目标区域的位置关系的流程示意图;

图3为本发明实施例提供的另一种三维目标的查询方法的流程示意图;

图4为本发明实施例提供的三维目标的查询装置的一种具体实施方式结构图;

图5为本发明实施例提供的三维目标的查询装置的另一种具体实施方式结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。

首先参见图1,图1为本发明实施例提供的一种三维目标的查询方法的流程示意图,基于三维地图引擎绘制图形的方法,本发明实施例可包括以下内容:

s101:获取三维空间场景中的待查询目标点和待查询目标区域。

三维空间场景可为三维地图,可先接收用户在三维空间场景中选择的查询资源类型以及查询目标区域范围;根据用户选择的查询资源类型生成待查询目标点;根据查询目标区域范围生成待查询目标区域。

资源类型为三维空间场景中包括的各类模型的类别,例如信号塔、饭店、名胜古迹等。查询目标区域范围为查找资源类型的区域,例如在第一区域查找饭店,第一区域为待查询目标区域,饭店为待查询目标点。

待查询目标区域在三维空间场景中进行选择时,可为圆形或者也可为矩形,或者其他任何形状,本申请对此不做任何限定。

s102:回调待查询目标点,获取待查询目标区域的顶点坐标。

对在三维空间场景中绘制完成待查询目标区域后,在获取回调事件(回调待查询目标点)之后,返回待查询目标区域的顶点坐标。

s103:在待查询目标区域中查询待查询目标点的过程中,利用回调返回的顶点坐标,通过判断待查询目标点与待查询目标区域的位置关系,确定待查询目标点在待查询目标区域中位置。

通过回调返回的顶点坐标进行后端查询点(待查询目标点)和面(待查询目标区域)关系的判断,具体判断过程可参阅图2所示,具体为:

以待查询目标点作为起点,以无穷远为终点生成平行于x轴的直线;

循环取待查询目标区域的每一条边,执行下述判断过程:

当待查询目标区域的当前边不平行于直线时(判断待查询目标区域的当前边是否平行于直线时),判断待查询目标点是否在当前边上;若是,则返回待查询目标点在待查询目标区域上的结果;若否,则判断直线和当前边是否相交;若是,则对交点进行计数;若否,则取待查询目标区域的非当前边的另一条边;

当循环取完待查询目标区域的每一条边时,统计交点的总数;

判断交点总数为奇数还是偶数;

若交点总数为奇数,则返回待查询目标点在待查询目标区域内的结果;

若交点总数为偶数,则返回待查询目标点不在待查询目标区域内的结果。

s104:在三维空间场景中,利用模型加载的方式展示查询得到待查询目标点的三维位置。

在待查询目标区域中查询待查询目标点的个数可能为0个,也可能为1个,还可能为多个。

当待查询目标区域中没有待查询目标点时,直接显示无此目标点。

当待查询目标区域中有多个待查询目标点时,将获得的每个待查询目标点的三维位置均展示出来。

在本发明实施例提供的技术方案中,基于三维地图引擎绘制图形的方法,将绘制出的图形信息进行关键点获取,通过绘制回调后的关键点事件回调调用相关的后端接口,通过对应的模型加载的方法展示查询出结果集,实现在三维空间场景中确定待查询目标点在待查询目标区域内的位置,得到的待查询目标点的位置信息为三维空间位置,即既包括二维平面信息,还包括深度信息,实现了目标点的精准查询,可在三维空间场景中准确定位查询目标的空间位置。

其中,采用射线法判断所述待查询目标点与所述待查询目标区域的位置关系的实现程序可为:

射线法判断待查询目标点(point)与待查询目标区域(polygon)的位置关系,polygon为简单多边形,顶点逆时针排列;

如果待查询目标点在待查询目标区域内,则返回0;

如果待查询目标点在待查询目标区域的边上,则返回1;

如果待查询目标点在待查询目标区域外,则返回2;

constdoubleinfinity=1e10;

constdoubleesp=1e-5;

constintmax_n=1000;

structpoint{

doublex,y;

};

structlinesegment{

pointpt1,pt2;

};

typedefvector<point>polygon;

//计算叉乘|p0p1|×|p0p2|

doublemultiply(pointp1,pointp2,pointp0)

{

return((p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y));

}

//判断线段是否包含点point

boolisonline(pointpoint,linesegmentline)

{

return((fabs(multiply(line.pt1,line.pt2,point))<esp)&&

((point.x-line.pt1.x)*(point.x-line.pt2.x)<=0)&&

((point.y-line.pt1.y)*(point.y-line.pt2.y)&lt;=0));

}

//判断线段相交

boolintersect(linesegmentl1,linesegmentl2)

{

return((max(l1.pt1.x,l1.pt2.x)>=min(l2.pt1.x,l2.pt2.x))&&(max(l2.pt1.x,l2.pt2.x)>=min(l1.pt1.x,l1.pt2.x))&&

(max(l1.pt1.y,l1.pt2.y)>=min(l2.pt1.y,l2.pt2.y))&&

(max(l2.pt1.y,l2.pt2.y)>=min(l1.pt1.y,l1.pt2.y))&&

(multiply(l2.pt1,l1.pt2,l1.pt1)*multiply(l1.pt2,l2.pt2,l1.pt1)>=0)&&

(multiply(l1.pt1,l2.pt2,l2.pt1)*multiply(l2.pt2,l1.pt2,l2.pt1)&gt;=0)

);

}

//判断point在polygon内

boolinpolygon(constpolygon&polygon,pointpoint)

{

intn=polygon.size();

intcount=0;

linesegmentline;

line.pt1=point;

line.pt2.y=point.y;

line.pt2.x=-infinity;

for(inti=0;i&lt;n;i++){

//得到多边形的一条边

linesegmentside;

side.pt1=polygon[i];

side.pt2=polygon[(i+1)%n];

if(isonline(point,side)){

return1;

}

//如果side平行x轴则不作考虑

if(fabs(side.pt1.y-side.pt2.y)&lt;esp){

continue;

}

if(isonline(side.pt1,line)){

if(side.pt1.y&gt;side.pt2.y)count++;

}elseif(isonline(side.pt2,line)){

if(side.pt2.y&gt;side.pt1.y)count++;

}elseif(intersect(line,side)){

count++;

}

}

if(count%2==1){return0;}

else{return2;}

}

}

可选的,在一种具体的实施方式下,请参见图3,基于上述实施例,本发明实施例还可包括:

s105:将三维位置信息转化为相应文字位置信息,发送至用户端。

当查询得到的待查询目标点有多个时,可将多个空间位置信息均转化为相应的文字位置信息发送至用户端。

当待查询目标区域中没有待查询目标点时,将没有查询到目标点的信息发送至客户端。

用户端为承载预先绑定用户账号信息的硬件设备,例如智能移动终端设备,手机、平板等。

用户可以直接将位置信息进行存储或者方便查找,有利于提升用户使用体验。

本发明实施例还针对三维目标的查询方法提供了相应的实现装置,进一步使得所述方法更具有实用性。下面对本发明实施例提供的三维目标的查询装置进行介绍,下文描述的三维目标的查询装置与上文描述的三维目标的查询方法可相互对应参照。

参见图4,图4为本发明实施例提供的三维目标的查询装置在一种具体实施方式下的结构图,该装置可包括:

获取信息模块401,用于获取三维空间场景中待查询目标点和待查询目标区域。

顶点坐标获取模块402,用于回调待查询目标点,获取待查询目标区域的顶点坐标。

查询模块403,用于在待查询目标区域中查询待查询目标点的过程中,通过回调返回的顶点坐标,利用射线法判断待查询目标点与待查询目标区域的位置关系,确定待查询目标点在待查询目标区域中位置。

展示模块404,用于在三维空间场景中,利用模型加载的方式展示查询得到待查询目标点的三维位置。

可选的,在本实施例的一些实施方式中,请参阅图5,所述装置例如还可以包括:

发送模块405,用于将三维位置信息转化为相应文字位置信息,发送至用户端。

在一种具体的实施方式中,所述查询模块403可包括:

直线生成子模块,用于以待查询目标点作为起点,以无穷远为终点生成平行于x轴的直线;

循环判断子模块,用于循环取待查询目标区域的每一条边,执行下述判断过程;当待查询目标区域的当前边不平行于直线时,判断待查询目标点是否在当前边上;若是,则返回待查询目标点在待查询目标区域的边上的的结果;若否,则判断直线和当前边是否相交;若是,则对交点进行计数;若否,则取待查询目标区域的非当前边的另一条边;

统计交点总数子模块,用于当循环取完待查询目标区域的每一条边时,统计交点的总数;

结果反馈子模块,用于若交点总数为奇数,则返回待查询目标点在待查询目标区域内的结果;若交点总数为偶数,则返回待查询目标点不在待查询目标区域内的结果。

可选的,在另外一种实施方式中,所述获取信息模块301可包括:

接收子模块,用于接收用户选择的查询资源类型以及查询目标区域范围;

生成子模块,用于根据用户选择的查询资源类型生成待查询目标点;根据查询目标区域范围生成待查询目标区域。

本发明实施例所述三维目标的查询装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例基于三维地图引擎绘制图形的方法,将绘制出的图形信息进行关键点获取,通过绘制回调后的关键点事件回调调用相关的后端接口,通过对应的模型加载的方法展示查询出结果集,实现在三维空间场景中确定待查询目标点在待查询目标区域内的位置,得到的待查询目标点的位置信息为三维空间位置,即既包括二维平面信息,还包括深度信息,实现了目标点的精准查询,可在三维空间场景中准确定位查询目标的空间位置。

本发明实施例还提供了一种三维目标的查询设备,具体可包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序以实现如上任意一实施例所述三维目标的查询方法的步骤。

本发明实施例所述三维目标的查询设备的各功能模块的功能可根据上述方法实施例中三维目标的查询方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例实现了目标点的精准查询,可在三维空间场景中准确定位查询目标的空间位置。

本发明实施例还提供了一种计算机可读存储介质,存储有三维目标的查询程序,所述三维目标的查询程序被处理器执行时如上任意一实施例所述三维目标的查询方法的步骤。

本发明实施例所述计算机可读存储介质的各功能模块的功能可根据上述方法实施例中三维目标的查询方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

由上可知,本发明实施例实现了目标点的精准查询,可在三维空间场景中准确定位查询目标的空间位置。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种三维目标的查询方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1