基于复合条件的地理位置信息检索方法及系统

文档序号:26050503发布日期:2021-07-27 15:25阅读:160来源:国知局
基于复合条件的地理位置信息检索方法及系统
本发明涉及地理信息检索
技术领域
,尤其涉及一种基于复合条件的地理位置信息检索方法及系统。
背景技术
:地理位置信息检索广泛应用于日常生活中,用户通常在查询中使用地理名词来限制检索结果和某个特定范围相关联。在地理位置信息检索过程中,至少包含有一种地理位置信息的地名检索,以及其他可定位信息,如邮政编码、地理类型(城市、乡村)或地理方向(北方、南方)等。现有面向普通用户的地理位置信息检索方法,普遍缺乏进行多个复合条件查询的能力。具体来说,现有方法通常采用单一数据源作为空间数据查询基础,数据丰富程度不足以支撑复合条件查询。此外,空间数据复杂的时空特性、多维性和海量数据的特点,使得复合条件查询往往只应用于一些特定领域;更主要的,复合条件查询会涉及大量的复杂空间计算,现有的空间索引技术可以对单次空间查询计算进行优化,但对于复合条件和空间数据量增多的情况,空间索引无法从全局视角进行优化,导致系统性能达不到使用要求。因此,现在亟需一种基于复合条件的地理位置信息检索方法及系统来解决上述问题。技术实现要素:针对现有技术存在的问题,本发明提供一种基于复合条件的地理位置信息检索方法及系统。本发明提供一种基于复合条件的地理位置信息检索方法,包括:获取第一地理实体的复合条件查询表单;基于预设复合条件查询规则,对所述复合条件查询表单进行解析,得到查询目标信息和复杂条件信息;其中,所述查询目标信息是通过所述第一地理实体的poi属性信息获取得到的;所述复杂条件信息是通过第二地理实体的poi属性信息,以及所述第一地理实体和所述第二地理实体之间的空间位置关系信息和数量关系信息获取得到的;所述第二地理实体为除所述第一地理实体以外的地理实体;根据所述查询目标信息和复杂条件信息,获取所述第一地理实体的地理位置信息检索结果。根据本发明提供的一种基于复合条件的地理位置信息检索方法,所述基于预设复合条件查询规则,对所述复合条件查询表单进行解析,得到查询目标信息和复杂条件信息,包括:对所述复合条件查询表单的表单内容进行分解,并将分解后的表单内容转换为实体类,得到第一集合、第二集合、所述第一地理实体和所述第二地理实体之间的空间位置关系信息以及所述第一地理实体和所述第二地理实体之间的数量关系信息;其中,所述第一集合为所述第一地理实体对应的poi属性信息集合,所述第二集合为所述第二地理实体对应的poi属性信息集合;分别将所述第一集合和所述第二集合转换为各自对应的结构化查询语言,并根据每种结构化查询语句,从数据库中获取查询目标信息和所述第二地理实体对应的条件地理信息;根据所述条件地理信息,所述空间位置关系信息和所述数量关系信息,构建复杂条件信息。根据本发明提供的一种基于复合条件的地理位置信息检索方法,所述根据所述查询目标信息和复杂条件信息,获取所述第一地理实体的地理位置信息检索结果,包括:根据所述查询目标信息的数据量大小和数据分布信息,获取对应的查询策略;根据查询策略和所述复杂条件信息,对所述查询目标信息进行筛选,生成对应的地理位置信息查询语句;将所述地理位置信息查询语句提交到数据库中,得到所述第一地理实体的地理位置信息检索结果。根据本发明提供的一种基于复合条件的地理位置信息检索方法,所述方法还包括:通过地理线程池,对不同地图数据api接口提供的poi属性信息,按照城市区域进行地图信息爬取,生成地理数据请求候选集合,并通过所述地理数据请求候选集合向对应api接口发送请求,将得到的请求回复结果存储在数据库中,以用于提供地理位置信息检索结果,所述地图信息爬取至少包括地理区域多级分解;其中,所述地理线程池的爬取频率是根据不同地图数据api接口中预设爬取访问限制时间内的爬取请求成功次数进行调整的。根据本发明提供的一种基于复合条件的地理位置信息检索方法,所述方法还包括:根据所述地理数据请求候选集合,生成对应的poi类型表、poi属性表和poi空间信息表,并存储在数据库中,以用于提供地理位置信息检索结果。本发明还提供一种基于复合条件的地理位置信息检索系统,包括:可视化组件模块,用于获取第一地理实体的复合条件查询表单;复合条件处理模块,用于基于预设复合条件查询规则,对所述复合条件查询表单进行解析,得到查询目标信息和复杂条件信息;其中,所述查询目标信息是通过所述第一地理实体的poi属性信息获取得到的;所述复杂条件信息是通过第二地理实体的poi属性信息,以及所述第一地理实体和所述第二地理实体之间的空间位置关系信息和数量关系信息获取得到的;所述第二地理实体为除所述第一地理实体以外的地理实体;复合条件查询模块,用于根据所述查询目标信息和复杂条件信息,获取所述第一地理实体的地理位置信息检索结果。根据本发明提供的一种基于复合条件的地理位置信息检索系统,所述系统还包括:数据爬取模块,用于通过地理线程池,对不同地图数据api接口提供的poi属性信息,按照城市区域进行地图信息爬取,生成地理数据请求候选集合,并通过所述地理数据请求候选集合向对应api接口发送请求,将得到的请求回复结果存储在数据库中,以用于提供地理位置信息检索结果,所述地图信息爬取至少包括地理区域多级分解;其中,所述地理线程池的爬取频率是根据不同地图数据api接口中预设爬取访问限制时间内的爬取请求成功次数进行调整的。根据本发明提供的一种基于复合条件的地理位置信息检索系统,所述可视化组件模块还用于提供可视化的查询操作界面,以及用于展示地理位置信息检索结果的查询结果界面。本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于复合条件的地理位置信息检索方法的步骤。本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于复合条件的地理位置信息检索方法的步骤。本发明提供的基于复合条件的地理位置信息检索方法及系统,针对现有地理信息的复合条件查询支持不足的问题,充分考虑到地理实体自身的数据特征和空间特征,以及与空间中其他地理实体之间的空间联系等特点构建复合条件查询,从而对地理位置信息进行检索,具有查询场景覆盖广、使用简单和易扩展的特点。附图说明为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明提供的基于复合条件的地理位置信息检索方法的流程示意图;图2为本发明提供的基于复合条件的查询阶段处理示意图;图3为本发明提供的地理线程池的处理流程示意图;图4为本发明提供的地理区域多级分解的示意图;图5为本发明提供的基于复合条件的地理位置信息检索系统的结构示意图;图6为本发明提供的基于复合条件的地理位置信息检索系统的整体框架结构示意图图7为本发明提供的电子设备的结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明提供的基于复合条件的地理位置信息检索方法的流程示意图,如图1所示,本发明提供了一种基于复合条件的地理位置信息检索方法,包括:步骤101,获取第一地理实体的复合条件查询表单。在本发明中,将第一地理实体作为待进行位置检索的目标地理实体,根据第一地理实体设置对应的复合条件查询表单,以用于获取满足该复合条件查询表单的第一地理实体的地理位置信息,例如,用户需要针对一座大桥进行位置检索,将大桥作为第一地理实体,并基于该大桥,输入一系列关于大桥的相关信息,从而根据这些相关信息构建得到复合条件查询表单,用于后续的地理位置信息查询,得到满足条件的大桥所对应的具体信息。在本发明中,复合条件查询表单主要是基于地理实体的兴趣点(pointofinterest,简称poi)信息进行创建的。具体地,复合条件查询表单是基于分步表单的形式构建得到的,首先,在分步表单中的查询目标定义表单中,可以选择poi类别,例如,待检索的地理实体为加油站,则poi类型可以为汽车服务;然后,输入poi名称(可选填),用户可根据检索需要,添加和删减第一地理实体的poi属性条件。进一步地,在分步表单中的复杂条件定义表单中,用户可根据检索需要,添加和删减其他地理实体的poi属性,即第二地理实体的poi属性,以及第二地理实体与第一地理实体之间的关系,例如,第一地理实体与其他地理实体之间的空间位置关系,从而根据poi属性条件和复杂条件,得到复合条件查询表单。需要说明的是,在本发明中,查询目标定义表单中的信息是必须的,复杂条件定义表单中的复杂条件是可选的,本发明以复合条件进行地理位置信息检索,以复杂条件定义表单中存在至少2个复杂条件进行说明;若复杂条件定义表单中未填写复杂条件,即条件可基于现有的地理位置检索方法实现对第一地理实体进行位置信息检索。步骤102,基于预设复合条件查询规则,对所述复合条件查询表单进行解析,得到查询目标信息和复杂条件信息;其中,所述查询目标信息是通过所述第一地理实体的poi属性信息获取得到的;所述复杂条件信息是通过第二地理实体的poi属性信息,以及所述第一地理实体和所述第二地理实体之间的空间位置关系信息和数量关系信息获取得到的;所述第二地理实体为除所述第一地理实体以外的地理实体。步骤103,根据所述查询目标信息和复杂条件信息,获取所述第一地理实体的地理位置信息检索结果。在本发明中,在本发明中,基于预设复合条件查询规则,通过查询目标信息的poi名称、类别及其他属性(包括第一地理实体和第二地理实体)作为筛选条件,即首先通过查询目标条件所涉及地理实体集合的poi名称、类别及其他属性,查询到符合要求的查询目标信息所对应的查询目标结果集合,再通过复杂关系,根据查询目标结果集合中第一地理实体和其他地理实体之间的空间位置关系信息与数量关系信息,再次对查询目标结果集合进行筛选。优选地,在一个查询目标定义中,可以定义多个其他属性的筛选条件,比如“面积/大于/200平方米”等;此外,基于预设复合条件查询规则,还可以定义多个复杂条件。在本发明中,基于复合条件查询表单,生成对应的json数据格式,然后将json分解和转换为后续步骤处理时使用的实体类,根据预设复合条件查询规则,可以分解为查询目标实体类和复杂条件实体类;然后,遍历每一个解析后的实体类,根据空间位置关系和数量关系,将其映射为属性筛选查询时的结构化查询语言(structuredquerylanguage,简称sql),并提交到数据库中进行数据查询,得到对应的检索结果。需要说明的是,在本发明中,数据库用于存储地理空间相关数据,这些数据可通过从不同地图数据提供商处爬取得到。本发明提供的基于复合条件的地理位置信息检索方法,针对现有地理信息的复合条件查询支持不足的问题,充分考虑到地理实体自身的数据特征和空间特征,以及与空间中其他地理实体之间的空间联系等特点构建复合条件查询,从而对地理位置信息进行检索,具有查询场景覆盖广、使用简单和易扩展的特点。在上述实施例的基础上,所述基于预设复合条件查询规则,对所述复合条件查询表单进行解析,得到查询目标信息和复杂条件信息,包括:对所述复合条件查询表单的表单内容进行分解,并将分解后的表单内容转换为实体类,得到第一集合、第二集合、所述第一地理实体和所述第二地理实体之间的空间位置关系信息以及所述第一地理实体和所述第二地理实体之间的数量关系信息;其中,所述第一集合为所述第一地理实体对应的poi属性信息集合,所述第二集合为所述第二地理实体对应的poi属性信息集合;分别将所述第一集合和所述第二集合转换为各自对应的结构化查询语言,并根据每种结构化查询语句,从数据库中获取查询目标信息和所述第二地理实体对应的条件地理信息;根据所述条件地理信息,所述空间位置关系信息和所述数量关系信息,构建复杂条件信息。在本发明中,复合条件查询表单主要包括2个部分,第一个部分为查询目标实体(即第一地理实体)的定义,第二部分为复杂条件定义,其中第一部分是必备的,第二部分是可选的,在本实施例中,以第二部分已定义进行说明。对于一次复合条件查询,最终返回给用户端的查询结果,是经过了多次条件筛选的,第一维度的筛选即是使用查询目标实体自身的静态属性(例如,名称)或动态属性(例如,人流量信息)的筛选,为查询规则中的第一部分,该部分通过查询地理实体自身的名称,类别,或其具备的面积,人流量、评分等属性(poi属性)对结果进行查询;第二维度的筛选是利用查询目标实体与其他地理实体集合的空间位置关系和数量关系,再次进行信息筛选。因此,本发明的预设复合条件查询规则,首先是根据第一地理实体的poi属性获取查询目标信息(即第一地理实体在数据库的信息,例如,满足poi属性的餐厅),根据第二地理实体的poi属性,获取条件目标信息(即第二地理实体在数据库中的信息,包括面积、数量、人流量、评分和出入口数量等,例如,满足poi属性中面积条件的商场或电影院),然后再通过地理实体之间的复杂关系(包括包含关系、是否在目标内、辐射半径和辐射半径内不包含某些地理信息),再次对查询目标信息进行筛选,从而得到满足复合条件查询表单的地理位置信息检索结果。进一步地,以一实施例对预设复合条件查询规则进行具体说明:以查找名为肯德基的餐厅作为第一地理实体进行检索,并且复合条件查询表单需要满足如下要求:要求该肯德基店的评分大于3分;要求该肯德基店的人流量小于50;要求餐厅位于商场之内,并且商场的面积大于5000平方米;要求餐厅辐射半径2000米内有数量大于两个电影院。在本实施例中,第一地理实体定义为:类别是“餐厅”;名称为“肯德基”;它的poi属性条件包括“评分/大于/3”和“人流量/小于/50”,其中,属性条件是可以灵活增删的。对于第二地理实体定义,本实施例共包含了两个第二地理实体以及两个复杂条件,一个第二地理实体定义为:类别为“商场”,名称为空,商场的其他属性需满足“面积/大于/5000”,对应的第一个复杂条件为:与查询目标集合(即基于上述对第一地理实体的定义,构建的第一集合)的空间位置关系为“查询目标在商场内”;另一个第二地理实体定义为:类别为“电影院”,名称为空,电影院的其他属性需满足“数量/大于/2”,对应的第二个复杂条件为:与查询目标集合的空间位置关系为‘辐射半径内/2000m’。由上述实施例可知,本发明提供的预设复合条件查询规则,对于属性筛选和空间关系筛选具有良好的可扩展性,可通过一些常用属性和空间关系来描述复合条件,如果待检索的地理实体为非公开的地理数据集,可以通过数据融合将私有数据进行集成,并存储到数据库中,再添加对应的查询属性筛选条件。例如,如果想要将复合条件查询应用到城市地下管道管理中,可以将地下管道地理实体的空间拓扑和poi属性存储到查询数据库中,并在查询属性筛选条件中添加“检修时间”和“长度”作为可选的属性条件,即可完成例如“查找海淀区内长度超过3km的地下管道有哪些是一年内没有检修过的”的复合条件查询语义。在上述实施例的基础上,所述根据所述查询目标信息和复杂条件信息,获取所述第一地理实体的地理位置信息检索结果,包括:根据所述查询目标信息的数据量大小和数据分布信息,获取对应的查询策略;根据查询策略和所述复杂条件信息,对所述查询目标信息进行筛选,生成对应的地理位置信息查询语句;将所述地理位置信息查询语句提交到数据库中,得到所述第一地理实体的地理位置信息检索结果。在本发明中,图2为本发明提供的基于复合条件的查询阶段处理示意图,可参考图2所示,完整的查询过程由多个不同的查询阶段组成,以上述实施例中查找名为肯德基的餐厅作为第一地理实体进行说明,首先对复合条件查询表单中的语义进行分解(在实现中有所区别,但语义分解是相同思想):{集合a:{类别为餐厅的肯德基,要求其人流量小于50,评分大于3}集合b:{类别为商场,面积大于5000平方米}集合c:{类别为电影院}空间位置关系与数量关系1:{集合a中的餐厅位于集合b中的商场中}空间位置关系与数量关系2:{集合a中的餐厅附近2km内至少包含两个及以上集合c中的电影院}}由上述对语义的分解结果可知,本发明会将json数据进行转换,其中分解得到的集合a(即第一集合)将被转换为查询目标实体类;集合b结合空间位置关系与数量关系1共同转换为复杂条件实体类;集合c与空间位置与数量关系2也同样转换为另外一个复杂条件实体类。需要说明的是,本发明选取了2个地理实体作为目标地理实体的复杂条件,即集合b和集合c均为第二集合。进一步地,对于复合条件的查询步骤,可以分为3个不同阶段,第一阶段,先查询出(从数据库中查询得到)符合集合a、集合b和集合c的结果集合,从集合查询语义可以看出,都是利用poi属性限制进行查询,可将这一阶段称为“poi属性筛选阶段”;第二阶段,是使用第一阶段的查询结果,进行空间位置关系与数量关系的计算,例如,查询到的集合a和集合b,并利用空间位置关系与数量关系1进一步对集合a和集合b的查询结果进行筛选,可将这一阶段称之为“空间关系与数量关系计算”;此外,由于最终需要返回给用户端详细的poi信息,还需要根据poi信息在数据库中的唯一标识符,查询符合条件的poi详细信息(即将具体满足复杂条件检索的肯德基的相关信息返回到用户端),将这一阶段称之为“poi详细信息查询”,即第三阶段。在本发明中,对于第一阶段“poi属性筛选阶段”,分析查询目标实体类,将poi的类别限制条件和名称限制条件拼接到sql查询语句中,再遍历其他属性条件限制,将每一个属性筛选条件都添加到sql查询语句中,添加字符串为“and{attribute}{relation}{count}”,如“andarea>100”。简化后的单个sql语句的表现形式可参考表1所示:表11selectpoi_uid,districtsformattributedata2where{poi类别条件}and{poi名称条件}3and{poperty1}{relation1}{count1}4and{poperty2}{relation2}{count2}5……此时,将在查询目标实体类和复杂条件实体类都映射到sql后,创建查询线程,并发的将sql查询提交到数据库中。当所有的结果返回时,就会进行查询的第二阶段“空间关系与数量关系计算”,此时集合a需要分别与集合b和集合c进行空间关系计算,然而,空间计算十分复杂,即使使用空间索引也难以保证其执行性能。因此,本发明根据第一阶段返回的查询结果,灵活的选择后续的查询策略,根据查询目标信息的数据量大小和数据分布信息,本发明提供了三种查询策略,分别为:查询策略1:当满足以下条件时,采用查询策略1,在实际运用时,条件阈值是可以根据实际使用场景进行调整。math.max(count(a)×count(b),count(a)×count(c))<105;当满足上述条件时,首先创建两个空间与数量关系计算的工作线程用于并行计算,其中,线程一对集合a和集合b进行空间关系和数量关系运算得到符合条件的结果集a;线程二对集合a和集合c进行空间关系和数量运算得到结果集b;然后取集合a和集合b的交集得到最终结果,再通过最终结果从数据库中获取详细的目标poi信息,即得到第一地理实体的地理位置信息检索结果。该模式适用于查询目标结果集和复杂条件结果集数量都比较少的情况,每次的空间关系计算时间都很短,可以通过并行计算缩短时间。查询策略2:在不满足查询策略1时,同时满足以下条件:math.min(count(b),count(c))<103;与查询策略1不同的是,查询策略2将并行计算更改为了串行计算。首先,对集合a和集合b做空间关系与数量关系计算,得到结果集a;再使用结果集a和集合b做空间关系计算,得到最终结果集r。与查询策略1不同,在与集合c做空间关系计算时,查询策略2中集合a的规模小于等于集合a,这种模式适用于有多个复杂条件,并且其中有复杂条件结果集合数量较少的情况,此时会优先与数量小的复杂条件结果集进行空间计算。简单说,就是通过不断减少集合a的数量,减少后续查询规模。从概率上来说,先与数量少的集合做运算的效果最为明显。查询策略3:若前两个策略都不符合,则使用查询策略3进行查询:该模式的思想是在具体计算之前,先通过粗粒度的统计筛选,找到最有可能出现最终结果的区域,优先针对这些区域使用查询策略1的方式进行计算。当已经找到10个符合条件的点时就停止进行运算,调用异步处理类通过异步的方式完成剩余的运算,并将结果写入到redis中,而之前找到的10个结果会直接进入第三阶段,并返回结果给用户端。在本发明中,对于粗粒度的预筛选是使用了poi属性表中的districts字段,该字段是整型数组类型,在进行数据预处理时,将城市划分为边长为两公里的矩形区域并对其编号,poi的districts字段存储了该poi涵盖的主要区域编号。以距离包含空间关系为例,在进行预筛选时,首先分别统计集合b和集合c中落在每个小矩形框(districts)中有多少结果数量,假设当前空间位置与数量条件为辐射半径两公里内数量大于一,那么就以搜索集合a有分布的区域为中心3*3的大矩形框中,分别统计集合b的数量和集合c的数量,有多少个复杂条件集合满足数量大于1的要求,就为该小矩形框打多少分。对于距离范围的查询,预筛选目前只支持2km内和4km内的条件,大于2km且小于4km内是搜索5*5的矩形框,由于是粗粒度筛选,所以不需对精度要求很高。在最后进行查询时,对集合a进行拆分,优先查询评分高的小矩形框内的poi。在根据条件选定了查询策略后,就会进行第二阶段的空间关系与数量关系计算。简化后的地理位置信息查询语句可参考表2:表21selectpoi_id…fromgeomdatact2innerjoin(selectpoi_id,geometryfromgeomdata3wherepoi_idin(complexidslist))cc4onst_dwithin(ct.geometry,cc.geometry,distance5wherect.poi_idin(targetidslist)6…havingcount…如表2所示,其中targetidslist是第一阶段得到的查询目标结果集合,complexidslist是第一阶段中的一个复杂条件的结果集合,在查询时,实际是将targetidslist中的每一个元素与complexidslist集合进行空间关系和数量关系运算。对于查询语句,是用postgis提供的空间函数进行集合间的空间关系计算,通过“havingcount”进行数量关系的计算。在得到第二阶段的结果后,对结果进行复合条件的满足情况统计和排序,截取排序后列表的排名靠前一部分,并新建线程任务进行第三阶段的查询,以获取poi详细信息,列表的剩余部分将转换为字符串形式写入到reids缓存中,键值会添加到返回结果中,用于根据需求,在后续再请求未返回的结果。在本发明中,除了在数据库中查询poi属性,也有部分扩展信息需要在线获取,最终将完整的结果转换为json格式后返回给用户端。在上述实施例的基础上,所述方法还包括:通过地理线程池,对不同地图数据api接口提供的poi属性信息,按照城市区域进行地图信息爬取,生成地理数据请求候选集合,并将通过所述地理数据请求候选集合向对应api接口发送请求,将得到的请求回复结果存储在数据库中,以用于提供地理位置信息检索结果,所述地图信息爬取至少包括地理区域多级分解;其中,所述地理线程池的爬取频率是根据不同地图数据api接口中预设爬取访问限制时间内的爬取请求成功次数进行调整的。在本发明中,通过geothreadpool线程池,应用于请求不同地图数据提供商的api接口,以通过api接口进行请求周围点搜索。图3为本发明提供的地理线程池的处理流程示意图,如图3所示,该线程池主要包含两个特性,地理区域多级分解与爬取频率自动调整。其中,地理区域多级分解是针对地理数据的爬取特点,在请求周围点搜索api时,通过该机制输出请求列表。需要说明的是,地理线程池用于优化原始数据爬取过程,这个过程不是实时的,不用在每次查询时运行,一般会进行全量的爬取,最终经处理形成poi属性表等,在之后的复合条件查询时刻直接操作poi属性表等,不会再进行该爬取流程。图4为本发明提供的地理区域多级分解的示意图,可参考图4所示,具体的流程可以分为三个步骤:第一步,对于城市的覆盖范围,其领域形状是不规则图形,由于调用api具有一定成本,所以在扫描时应尽量避免对其他城市的区域和海洋中部分区域进行扫描。如图4中第一步最左边的矩形图形,图形中的曲线为城市的边界线,那么在这一步中通过预设出多个矩形区域来覆盖整个城市,如图4第一步中的矩形框区域。第二步,对于第一步中,地图上划分的每一个矩形框区域,将其划分为边长约为500m的小矩形框,并且计算每个小矩形框的西南角和东北角的坐标并将其放入列表中,得到小矩形框坐标对列表。第三步,建立多线程任务,将小矩形框坐标对列表放入线程池中进行下一步计算。对每一个小矩形框进行两次遍历,确定出最终查询的经纬度集合,如图4的第三步中,第一次遍历找到圆形区域的中心点经纬度,在遍历完成后,将矩形区域向右上角平移的距离后再次遍历。两次遍历保证了所有圆形区域可以覆盖住当前搜索的矩形区域。在本发明中,geothreadpool线程池的第二个特点是爬取频率的自动调整算法,这是由于大部分在线地图提供商的api都设置了每分钟调用次数。地理线程池中的线程分为工作线程和周期运行线程,其中,周期运行线程每周期为一分钟,又称为一个统计周期,在一个统计周期的起始阶段会对各种参数进行重置,在一个统计周期结束时,按照算法规则进行爬取频率的修改。工作线程用于进行数据爬取和处理。以下将根据算法周期分阶段对算法流程进行说明:初始化阶段:设置地理线程池起始的线程数量为initial_pool_size,最大的线程数量max_pool_size,两次api请求的间隔时间sleep_interval初始化为500ms。周期线程重置阶段:在算法实现中,将统计与重置的时间窗口设置为1分钟,在一个统计周期结束并处理完成后,需要重置参数进入下一个统计周期。将error_record_total,access_record_total参数设置为0,其中,error_record_total代表当前统计周期内,所有工作线程请求失败的次数;access_record_total表当前统计周期内,所有工作线程请求成功的次数。一个统计周期内的运行时阶段:在一个统计周期内,如果有工作线程连续失败5次,则触发连续失败调整机制,注意的是,该机制在算法运行期间有且只会触发一次。假设触发改机制时,当前统计周期已经运行的时间为tinterval,可以计算单次爬取的近似时间(不包含睡眠时间的单次api请求及处理时间)为:tprocess≈tinterval/access_record-sleep_interval;其中,access_record为该工作线程在当前统计周期中一共请求成功的次数。由于出现连续失败极有可能是由于每分钟调用次数用尽,即在tinterval的时间段中用尽了一分钟的使用量,因此将单线程中新的每分钟访问次数调整到access_record次,结合以上公式,最终将新的请求间隔时间调整为:sleep_interval≈60000/access_record-tprocess;一个统计周期的结束阶段:此时依据周期内请求失败总次数作为判断依据,如果周期内总失败次数小于等于1时表示周期运行成功,否则表示表示周期运行失败,另外,有两个重要的参数max_failed和min_success,max_failed代表算法运行期间,周期运行失败时最大的请求时间间隔,min_success代表算法运行期间,周期运行成功时最小的请求时间间隔。在一个统计周期的结束阶段中,如果min_success和max_failed都有值,那么设置新的请求时间间隔为min_success和max_failed的中间值。如果min_success和max_failed有值为空,当周期运行成功时,如果当前线程池中的线程数量小于最大线程池数量且sleep_interval小于等于初始值时,则使线程数增1,sleep_interval保持不变,否则sleep_interval变为当前值的80%;如果周期运行失败,那么调整新的请求时间间隔为,其中err_record_total代表当前统计周期失败总次数:sleep_interval=(1+err_record_total/100)×sleep_interval;算法退出:当max_failed和min_success值小于10ms时,选择最终的sleep_interval为min_success,并终止定时运行线程以退出算法。在上述实施例的基础上,所述方法还包括:根据所述地理数据请求候选集合,生成对应poi类型表、poi属性表和poi空间信息表,并存储在数据库中,以用于提供地理位置信息检索结果。在本发明中,根据地理数据请求候选集合,构建相应的表格存储在数据库中,其中,poi类型表,包含有地理实体的poi类别属性,属于最重要的基础属性,每个poi都属于一个或多个poi类别,在当前表中,每个poi类别由一级分类、二级分类和三级分类,在空间中是由几何类型和属性组成,用户可以根据待检索的地理实体定义poi类别标准。例如,待检索的地理实体为加油站,则在poi类型表中的一级分类为汽车服务,二级分类为加油站,三极分类为中石化。进一步地,poi属性表存储了与poi相关的详细信息,包括常见的poi唯一id、名称、类别、经纬度等,还包括了详细的poi属性,比如面积、评分、人流量、电话、网址等。用于复合条件查询的第一与第三阶段。poi空间信息表存储了poi的唯一id和空间拓扑信息。其中,在postgresql中,使用geometry类型来存储空间拓扑信息,使用该类型即可表示地图上的点、线和面等几何特性。在postgresql中需要引入postgis插件,可以使用空间索引gist对查询进行优化。图5为本发明提供的基于复合条件的地理位置信息检索系统的结构示意图,如图5所示,本发明提供了一种基于复合条件的地理位置信息检索系统,包括可视化组件模块501、复合条件处理模块502和复合条件查询模块503,其中,可视化组件模块501用于获取第一地理实体的复合条件查询表单;复合条件处理模块502用于基于预设复合条件查询规则,对所述复合条件查询表单进行解析,得到查询目标信息和复杂条件信息;其中,所述查询目标信息是通过所述第一地理实体的poi属性信息获取得到的;所述复杂条件信息是通过第二地理实体的poi属性信息,以及所述第一地理实体和所述第二地理实体之间的空间位置关系信息和数量关系信息获取得到;所述第二地理实体为除所述第一地理实体以外的地理实体;复合条件查询模块503用于根据所述查询目标信息和复杂条件信息,获取所述第一地理实体的地理位置信息检索结果。在本发明中,基于复合条件的地理位置信息检索系统由不同的模块组成,为了解决现有地理信息系统的低可扩展和高耦合特点,按照功能对系统进行了拆分。图6为本发明提供的基于复合条件的地理位置信息检索系统的整体框架结构示意图,可参考图6所示,本发明采用前后端分离的开发方式,可视化组件模块501和复合条件查询模块503之间使用restfulapi进行通信(可选地,复合条件处理模块502和复合条件查询模块503可设置为一个整体模块,用于对复合条件查询语义进行解析、分解和映射,并执行具体的查询与计算逻辑,对查询到的结果进行统计与处理),服务器请求具备无状态的特点,易于系统后续的扩展。本发明提供的基于复合条件的地理位置信息检索系统,针对现有地理信息的复合条件查询支持不足的问题,充分考虑到地理实体自身的数据特征和空间特征,以及与空间中其他地理实体之间的空间联系等特点构建复合条件查询,从而对地理位置信息进行检索,具有查询场景覆盖广、使用简单和易扩展的特点。在上述实施例的基础上,可参考图6所示,所述系统还包括:数据管理模块504对地理信息相关的数据进行收集,存储和更新(调度管理),用于数据etl的调度管理,包括管理etl程序的运行时间和周期等;在系统的数据etl05程序中,包括有数据爬取模块,用于通过地理线程池,对不同地图数据api接口提供的poi属性信息,按照城市区域进行地图信息爬取,生成地理数据请求候选集合,并通过所述地理数据请求候选集合向对应api接口发送请求,将得到的请求回复结果存储在数据库中,以用于提供地理位置信息检索结果,所述地图信息爬取至少包括地理区域多级分解;其中,所述地理线程池的爬取频率是根据不同地图数据api接口中预设爬取访问限制时间内的爬取请求成功次数进行调整的。在本发明中,对于系统中涉及的众多地图数据提供商的数据etl505程序,是作为独立的个体,可以采用不同开发方式,通过分布式消息队列技术与系统主系统建立联系,可通过数据管理模块504,发布调度指令到消息队列从而实现对特定数据etl505程序的控制。具体地,数据爬取模块主要针对地理相关数据的爬取特点,设计了geothreadpool线程池,负责数据爬取时的区域规划和爬取频率自动调整。在进行poi相关数据爬取的时候,是按照城市为单位进行的。与寻常的文本类数据爬虫不同,poi的数据爬取需要对地理因素进行考虑,一般采用周围poi数据搜索的方式。周围poi数据搜索即输入一个经纬度和半径,输出范围圆中的所有poi信息,通过区域分解可以将周围信息圆覆盖住完整的城市区域。此外,针对爬取数据源不同api的每分钟访问限制,实时对请求成功与否进行判断,并根据统计结果调整爬取频率和线程数量。具体地,在数据调度过程中,将数据etl调度指令发送到数据etl程序505中,通过交互界面发起针对数据etl任务的定时或周期运行任务,传到后台的数据包括etl任务的发布订阅配置和数据调度配置;在接收到前端请求后,选择定时任务处理方式,对于定时任务来说,需要将前端调度配置中的时间格式转换为距离触发还剩余的时间,然后跳转到下一步;然后,将etl任务的发布订阅配置作为参数,传入到定时或周期运行线程之中,并添加到指定线程池进行管理;等到定时线程执行时间到达后,将任务发布到kafka。对应的数据etl程序会对消息进行消费并开始运行。本发明使用数据来源广泛,针对地理数据的特点,在搜索时采用多级分解的方式对地理区域进行划分,并根据爬取数据源服务器的特点灵活调整线程数量和爬取频率。对于系统的整体的架构,前后端通过rest接口进行交互,独立于系统的数据etl程序则是通过分布式消息中间件进行通信,极大的降低了系统的耦合性,使其系统每一部分都具备高可扩展性。在上述实施例的基础上,所述可视化组件模块501还用于提供可视化的查询操作界面,以及用于展示地理位置信息检索结果的查询结果界面。在本发明中,可视化组件模块501为用户提供了可视化的界面,方便用户进行复合条件查询、查询结果查看和数据管理等。该模块基于组件化的开发方式,使用分步表单引导用户进行复合条件查询表单的填写,其中属性条件和复杂条件都可以通过增删按钮进行灵活调整。最终查询后的结果将展示在结果展示组件中,其结合了地图和文本信息等。可选地,如图6所示,本发明还构建了数据库模块506(即图6中的数据存储层与消息队列),用于为其他模块提供数据存储和计算功能。其中最重要的是poi属性数据表和poi空间数据表,其采用了postgresql+postgis的方式,实现对空间数据的支持,包括进行空间关系计算时使用的空间函数,比如st_dwithin(a,b,200)空间函数,实现了判断地理上b实体是否在a实体200m范围之内。图7为本发明提供的电子设备的结构示意图,如图7所示,该电子设备可以包括:处理器(processor)701、通信接口(communicationsinterface)702、存储器(memory)703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信。处理器701可以调用存储器703中的逻辑指令,以执行基于复合条件的地理位置信息检索方法,该方法包括:获取第一地理实体的复合条件查询表单;基于预设复合条件查询规则,对所述复合条件查询表单进行解析,得到查询目标信息和复杂条件信息;其中,所述查询目标信息是通过所述第一地理实体的poi属性信息获取得到的;所述复杂条件信息是通过第二地理实体的poi属性信息,以及所述第一地理实体和所述第二地理实体之间的空间位置关系信息和数量关系信息获取得到的;所述第二地理实体为除所述第一地理实体以外的地理实体;根据所述查询目标信息和复杂条件信息,获取所述第一地理实体的地理位置信息检索结果。此外,上述的存储器703中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的基于复合条件的地理位置信息检索方法,该方法包括:获取第一地理实体的复合条件查询表单;基于预设复合条件查询规则,对所述复合条件查询表单进行解析,得到查询目标信息和复杂条件信息;其中,所述查询目标信息是通过所述第一地理实体的poi属性信息获取得到的;所述复杂条件信息是通过第二地理实体的poi属性信息,以及所述第一地理实体和所述第二地理实体之间的空间位置关系信息和数量关系信息获取得到的;所述第二地理实体为除所述第一地理实体以外的地理实体;根据所述查询目标信息和复杂条件信息,获取所述第一地理实体的地理位置信息检索结果。又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的基于复合条件的地理位置信息检索方法,该方法包括:获取第一地理实体的复合条件查询表单;基于预设复合条件查询规则,对所述复合条件查询表单进行解析,得到查询目标信息和复杂条件信息;其中,所述查询目标信息是通过所述第一地理实体的poi属性信息获取得到的;所述复杂条件信息是通过第二地理实体的poi属性信息,以及所述第一地理实体和所述第二地理实体之间的空间位置关系信息和数量关系信息获取得到的;所述第二地理实体为除所述第一地理实体以外的地理实体;根据所述查询目标信息和复杂条件信息,获取所述第一地理实体的地理位置信息检索结果。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1