一种数据空间查询方法、装置、电子设备及存储介质与流程

文档序号:32215139发布日期:2022-11-16 07:18阅读:45来源:国知局
一种数据空间查询方法、装置、电子设备及存储介质与流程

1.本发明涉及数据查询技术领域,尤其涉及一种数据空间查询方法、装置、电子设备及及计算机可读存储介质。


背景技术:

2.在电子地图上通常用几何点来表示真实空间中的地理位置,该几何点叫做地理点位或者点位要素,简称点位。在某个区域上常常包含成千,上万个点位。如果将所有的点位直接显示出来,会覆盖掉地图底图,让用户感觉电子地图非常纷乱。因此,需要将多个普通的点位聚合成一个代表性的聚合点位,然后将代表性的聚合点位通过可视化页面显示给用户。
3.当前业内任意地图标的点在大数据量前提下聚合汇总都是比较耗时的,且在某区域内需要聚合的点可能有上万个,现有技术无法对大量地图标的点的聚合进行及时响应。


技术实现要素:

4.本发明的目的在于提供一种数据空间查询方法、装置、电子设备及存储介质,以解决现有技术中现有技术无法对大量地图标的点的聚合进行及时响应的技术问题。
5.本发明的技术方案如下,提供了一种数据空间查询方法,包括:
6.获取目标业务数据,根据所述目标业务数据的经纬度数据构建空间字段,将所述空间字段导入至预设索引中;
7.获取可视化页面地图范围内两个对角顶点的经纬度数据,根据所述两个对角顶点的经纬度数据确定数据查询范围;
8.根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,得到查询结果。
9.进一步地,在根据所述目标业务数据的经纬度数据构建空间字段之后,还包括,将所述空间字段的字段类型映射到elasticsearch中。
10.进一步地,将所述空间字段导入至预设索引中,包括:在不同的预设时间段内,将不同的所述空间字段交替导入至elasticsearch中两个不同的预设索引中。
11.进一步地,在不同的预设时间段内,将不同的所述空间字段交替导入至elasticsearch中两个不同的预设索引中,包括:
12.在第一预设时间段内,将第一部分所述空间字段导入elasticsearch中的第一预设索引中,在第二预设时间段内,将第二部分所述空间字段导入elasticsearch中的第二预设索引中,在第三预设时间段内,将第三部分所述空间字段导入elasticsearch中的第一预设索引中,重复上述步骤,直至所有所述空间字段导入完毕。
13.进一步地,在将所述空间字段导入至预设索引中之后,还包括,将所述第一预设索引的索引名称和所述第二预设索引的索引名称存入缓存;
14.在根据所述两个对角顶点的经纬度数据确定数据查询范围之前,还包括,查询所
述缓存中的所述第一预设索引的索引名称以及所述第二预设索引的索引名称,并且获取所述第一预设索引及所述第二预设索引的状态;当所述第一预设索引状态为导入状态,则以所述第二预设索引作为所述可视化页面地图范围对应的索引,当所述第二预设索引状态为导入状态,则以所述第一预设索引作为所述可视化页面地图范围对应的索引。
15.进一步地,根据所述两个对角顶点的经纬度数据确定数据查询范围,包括:利用空间查询方法以及所述两个对角顶点的经纬度数据确定一个矩阵范围,以所述矩阵范围作为所述数据查询范围。
16.进一步地,根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,包括:
17.根据所述数据查询范围以及所述可视化页面地图的收缩比例获取网格精度值,根据所述网格精度值获取所述地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计。
18.本发明的另一技术方案如下,提供了一种数据空间查询装置,包括空间字段处理模块、查询范围确定模块以及聚合模块;
19.所述空间字段处理模块,用于获取目标业务数据,根据所述目标业务数据的经纬度数据构建空间字段,将所述空间字段导入至预设索引中;
20.所述查询范围确定模块,用于获取可视化页面地图范围内两个对角顶点的经纬度数据,根据所述两个对角顶点的经纬度数据确定数据查询范围;
21.所述聚合模块,用于根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,得到查询结果。
22.本发明的另一技术方案如下,提供了一种电子设备,包括存储器、处理器,所述存储器存储有可被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一项技术方案所述的数据空间查询方法。
23.本发明的另一技术方案如下,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项技术方案所述的数据空间查询方法。
24.本发明的有益效果在于:获取目标业务数据,根据所述目标业务数据的经纬度数据构建空间字段,将所述空间字段导入至预设索引中;获取可视化页面地图范围内两个对角顶点的经纬度数据,根据所述两个对角顶点的经纬度数据确定数据查询范围;根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,得到查询结果;上述技术方案,可以实现对大量地图标的点的聚合,并对聚合进行及时响应。
附图说明
25.图1为本发明实施例的数据空间查询方法的流程示意图;
26.图2为本发明实施例的数据空间查询装置的结构示意图;
27.图3为本发明实施例的电子设备的结构示意图。
具体实施方式
28.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.本技术中多个,是指两个或两个以上,在本技术的描述中,“第一”、“第二”、“第三”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
30.在本说明书中描述的参考“一个可选的实施方式”或“一个具体实施例中”等意味着在本技术的一个或多个实施方式中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
31.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
32.图1是本发明实施例的数据空间查询方法的流程示意图。需注意的是,若有实质上相同的结果,本发明提供的数据空间查询方法并不以图1所示的流程顺序为限。如图1所示,该数据空间查询方法,主要包括以下步骤:
33.s1,获取目标业务数据,根据所述目标业务数据的经纬度数据构建空间字段,将所述空间字段导入至预设索引中;
34.其中,所述目标业务数据可能包括除了经纬度数据以外的其他数据,例如用户个人信息等;
35.s2,获取可视化页面地图范围内两个对角顶点的经纬度数据,根据所述两个对角顶点的经纬度数据确定数据查询范围;其中,所述可视化页面地图范围的形状可以为矩形;
36.s3,根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,得到查询结果。
37.本发明实施例,通过获取目标业务数据,根据所述目标业务数据的经纬度数据构建空间字段,将所述空间字段导入至预设索引中;获取可视化页面地图范围内两个对角顶点的经纬度数据,根据所述两个对角顶点的经纬度数据确定数据查询范围;根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,得到查询结果;可以实现对大量地图标的点的聚合,并对聚合进行及时响应。
38.在一个可选的实施方式中,在根据所述目标业务数据的经纬度数据构建空间字段之后,还包括,将所述空间字段的字段类型映射到elasticsearch中。
39.需要说明的是,在根据所述目标业务数据的经纬度数据构建空间字段之后需要将所述空间字段的字段类型映射到elasticsearch中;elasticsearch为基于apache lucene的搜索的分布式多用户能的全文搜索引擎。
40.一个具体实施例中,根据目标业务数据的经纬度数据新构建geopoint字段,该
geopoint字段为通过经纬度转化的空间字段,具体表现可以为字符串形式,然后将所述空间字段的字段类型映射到elasticsearch中。对于不同的目标业务数据,字段类型有很多种,例如,当目标业务数据为保单数据时,保单数据的净自留额netretention的字段类型为double,产品大类product_class_code字段类型类型为keyword,经纬度空间字段geopoint字段类型为geo_point。通过将所述空间字段的字段类型映射到elasticsearch中,以便后续的数据查询,避免分词,从而提高数据查询效率。
41.另一个具体实施例中,构建空间字段的部分代码如下,
42.geopoint=new geopoint(double.parsedouble(string.valueof(map.get("lat"))),
43.double.parsedouble(string.valueof(map.get("lon"))));
44.上述代码表示,通过目标业务数据里面经纬度构建空间字段。
45.空间字段类型映射的部分代码如下,
46.xcontentfactory.jsonbuilder().startobject()
47..startobject("location").field("type","geo_point").endobject()
48..startobject("department_code").field("type","keyword").endobject()
49.其中,上面第三行表示将不需要分词的字段,指定字段类型为keyword;
50.在一个可选的实施方式中,将所述空间字段导入至预设索引中,包括:在不同的预设时间段内,将不同的所述空间字段交替导入至elasticsearch中两个不同的预设索引中。
51.一个具体实施例中,将存储保单数据的索引中(该索引类似于mysql中的表),对于不需要参与查询条件的字段对应的索引(此处的索引,是用来搜索的索引,与上述提到的表索引不同),将其默认设置更改为false。每条保单数据数据更新完后,将自动刷新时间refresh_interval(刷新周期)进行更改,例如更改为120秒,以此来减少磁盘和内存消耗,刷新周期默认是每1秒更新一次。为了满足业务场景突破默认查询极限,将max_result_window重新设置,其中elasticsearc查询结果限制的默认值,原值为10000,为满足业务场景,可以将查询到保单数量扩展到1000000。
52.另一个具体实施例中,更改自动刷新时间的部分代码如下,
53.settings.builderbuilder=settings.builder();
54.builder.put("refresh_interval","120s");
55.updatesettingsrequestupdatesettingsrequest=new updatesettingsrequest(indexname).settings(builder);
56.上述代码将更改索引默认刷新时间为120s;
57.重新设置默认查询极限的部分代码如下,
58.stringjsonstr="{\"index\":{\"max_result_window\":1000000}}";
59.string http=url+"/_all/_settings";
60.string s=httpclientutil.httpput(http,jsonstr,null,authorization);
61.上述代码使elasticsearch突破10000限制入参,http调用elasticsearch内置接口设置极限值。
62.在一个可选的实施方式中,在不同的预设时间段内,将不同的所述空间字段交替导入至elasticsearch中两个不同的预设索引中,包括:
63.在第一预设时间段内,将第一部分所述空间字段导入elasticsearch中的第一预设索引中,在第二预设时间段内,将第二部分所述空间字段导入elasticsearch中的第二预设索引中,在第三预设时间段内,将第三部分所述空间字段导入elasticsearch中的第一预设索引中,重复上述步骤,直至所有所述空间字段导入完毕。
64.其中,重复上述步骤,直至所有所述空间字段导入完毕,是指,在第四时间段内,将第四部分所述空间字段导入elasticsearch中的第二预设索引中,在第五时间段内,将第五部分所述空间字段导入elasticsearch中的第一预设索引中,按照这种规律,直至所有所述空间字段导入完毕,所有的预设时间段可以均涉及不同时间,其长度可以相同也可以不同,例如就可以均为一天的时间。
65.一些实施例中,若需要将数据表a里面的数据(空间字段)导入elasticsearch,因为数据表a中的数据每天都会更新,所以需要将数据表a导入到elasticsearch,因此,可以在elasticsearch中建两个索引,第一预设索引和第二预设索引,每天去交替更新数据,若当第二预设索引更新完数据,会将第二预设索引的名称存入到缓存,当第一预设索引更新完成,将缓存名称替换成第一预设索引。
66.一个具体实施例中,异步获取目标业务数据导入到elasticsearch中指定索引(类似mysql中的表)以可以提高目标业务数据的同步速度,异步获取目标业务数据导入到elasticsearch中指定索引,部分代码如下,
[0067][0068]
上述代码中,第六行表示异步获取需要插入的数据,第九行表示将需要插入的数据插入elasticsearch中。
[0069]
在一个可选的实施方式中,在将所述空间字段导入至预设索引中之后,还包括,将所述第一预设索引的索引名称和所述第二预设索引的索引名称存入缓存;
[0070]
在根据所述两个对角顶点的经纬度数据确定数据查询范围之前,还包括,查询所述缓存中的所述第一预设索引的索引名称以及所述第二预设索引的索引名称,并且获取所述第一预设索引及所述第二预设索引的状态;当所述第一预设索引状态为导入状态,则以所述第二预设索引作为所述可视化页面地图范围对应的索引,当所述第二预设索引状态为导入状态,则以所述第一预设索引作为所述可视化页面地图范围对应的索引。
[0071]
一个具体实施例中,通过定时任务将保单数据交替同步到两个不同的索引index(表名)下,将需要查询的索引index存入缓存,同步完成数据后自动刷新缓存里面索引
index,以便可视化查询最新数据。将所述第一预设索引的索引名称和所述第二预设索引的索引名称存入缓存,具体为,将它们交替存入同一缓存key下,以便通过key获取最新数据。
[0072]
另一个具体实施例中,将需要查询的索引index存入缓存,同步完成数据后自动刷新缓存里面索引index,部分代码如下
[0073][0074]
上述代码中,更新数据时,先获取缓存redis中存储的查询索引名称,名称为es_policy_info_index时,则当前同步保单数据到elasticsearch的索引名称为es_policy_info_old_index,反之亦然,同步完成之后覆盖原缓存redis存储的值。
[0075]
在一个可选的实施方式中,根据所述两个对角顶点的经纬度数据确定数据查询范围,包括:利用空间查询方法以及所述两个对角顶点的经纬度数据确定一个矩阵范围,以所述矩阵范围作为所述数据查询范围。
[0076]
一个具体实施例中,获取用户想要查看区域的可视化矩形经纬度,根据用户正在查看的可视化页面里的地图范围(浏览器可展示在计算机屏幕上的地图大小),可以获取到可视地图范围最左上和最右下两个地图坐标经纬度,根据两坐标点利用geoboundingboxquery将目标业务数据查询范围截取出来,其中,geoboundingboxquery为elasticsearc自带的一种空间查询方法,可根据上左和下右两个点确定一个矩形,然后以这个矩形范围去查询数据。获取可视化矩形经纬度的部分代码如下,
[0077]
list《geopoint》points=policy.getpoints();
[0078]
querybuilderpositionquerybuilder=
[0079]
querybuilders.geoboundingboxquery("location").setcorners(points.get(0),
[0080]
points.get(1));
[0081]
boolquerybuilder.filter(positionquerybuilder);
[0082]
上述代码表示利用矩形框选地图范围,即为矩阵范围,其中,points为经纬度列表。
[0083]
另一个具体实施例中,可以对矩阵范围进行分散,即可视化范围分散,将截取范围的地图根据网格分为多个矩阵,根据每个矩阵图形指定经纬度异步查询每个矩阵范围数据,相当于将可展示的矩形地图范围分割为多个个等面积矩形,然后取每个矩形的左上角交叉点和右下角交叉点,分别去调用elasticsearch的内置方法去分别做处理的,其中,多个矩阵可以为4个或者8个等数量。
[0084]
在一个可选的实施方式中,根据所述数据查询范围以及所述可视化页面地图的收
缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,包括:
[0085]
根据所述数据查询范围以及所述可视化页面地图的收缩比例获取网格精度值,根据所述网格精度值获取所述地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计。
[0086]
一个具体实施例中,矩阵范围内数据可通过geopoint,利用elasticsearch中的geohashgrid方法及地图收缩比例控制的网格精度值。例如,将附近1km、500m、100m、50m内等数据通过索引聚合在一起做统计,可视化页面地图放大比例是1:5000m,根据elasticsearch对空间网格定义的精度表,取精度值为5,然后通过elasticsearch中的方法geohashgrid将地理网格内(4.9km*4.9km)范围内的所有保单数据聚合统计出来;其中,geopoint为目标业务数据中的一个自定义对象字段,通过目标业务数据中的经纬度转化而来,geopoint中带有一个geohash字段,就像一个个切分地图的网格,精度值越大,网格越小,且地图缩放比例越大精度值越小。
[0087]
另一个具体实施例中,空间字段聚合的部分代码如下,
[0088]
aggregationbuilderbuilders=
[0089]
aggregationbuilders.geohashgrid("location").field("location").precision
[0090]
(dto.getprecisionnum()).size(30000);
[0091]
上述代码中,location字段类型为geo_point,其为地理空间字段,一个页面最多聚合30000个桶的空间字段,precisionnum为网格精度值。通过空间字段查询网格数据的部分代码如下,
[0092]
bool.should(querybuilders.matchphraseprefixquery("geohash",geohash));
[0093]
上述代码表示,查询前缀geohash值,geohash数值越长,则地理网格越小聚合范围越小,数据查询越精确,根据导入的经纬度转化的geohash,可聚合到相同地理网格内的所有目标业务数据。具体在地图范围内获取经纬度数据时,将经纬度数据转换成为geohash值将地图范围内的geohash值与经纬度数据转换的geohash值进行比对,从而获取地理网格内的所有目标业务数据。其中,geohash值为编码形式的数据,geohash值的第一位可以表示十位数、第二位可以代表个位数、第三位可以代表小数点后一位,以此类型,通过地图范围获取geohash值,通过地图收缩比例获取网格的精度。
[0094]
需要说明是,所述可视化页面地图范围的形状可以为圆形、矩形、多边形及椭圆,用户通过在可视化页面绘制上述地图范围,可以获取用户需要知道的区域范围目标业务详情及汇总情况,可以通过可视化页面将获取的数据返回给页面展示。
[0095]
本发明实施例提供的数据空间查询方法,通过获取目标业务数据,根据所述目标业务数据的经纬度数据构建空间字段,将所述空间字段导入至预设索引中;获取可视化页面地图范围内两个对角顶点的经纬度数据,根据所述两个对角顶点的经纬度数据确定数据查询范围;根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,得到查询结果;可以实现对大量地图标的点的聚合,并对聚合进行及时响应。
[0096]
需要说明的是,本发明实施例提供的数据空间查询方法,通过geopoint值和地图
框选,在上万分组的聚合查询,可以实现0到2秒内响应,在页面实时查询聚合汇总时效,较关系型数据库效果显著提高。通过更改elasticsearch刷新设置和剔除不必要索引,可以减少磁盘及内存消耗,通过对数据空间字符的字符类型的映射可以避免不必要分词查询,从而提高数据查询效率。
[0097]
本发明实施例可以实现地图任意标的点位置的目标业务详情可视化,对于目标业务为保单时,可以实现地图任意标的点位置的保单详情可视化,这种可视化可以有效的在自然灾害来临前,了解到灾害涉及区域内保单的详细情况及汇总情况,可有针对性的给客户提前预警并做好防范,也可以很直观的了解到不同地区的投保数据。当前业内任意地图标的点在大数据量前提下聚合汇总都是比较耗时的,且在某区域内需要聚合的点可能有上万个,如果做聚合处理无疑是个严重的问题。基于此,本发明实施例提供数据空间查询方法,基于elasticsearch利用geopoint空间查询的办法对保单数据进行可视化,还可以将可视化范围分散,利用geohashgrid的办法将保单数据聚合在规定范围内。
[0098]
本实施例提供的数据空间查询方法,可以基于人工智能进行构建,基于人工智能技术对相关的数据进行获取和处理,实现无人值守的人工智能的数据空间查询。其中,人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
[0099]
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
[0100]
图2是本发明实施例的数据空间查询装置的结构示意图。如图2所示,该数据空间查询装置20包括空间字段处理模块21、查询范围确定模块22以及聚合模块23;
[0101]
所述空间字段处理模块21,用于获取目标业务数据,根据所述目标业务数据的经纬度数据构建空间字段,将所述空间字段导入至预设索引中;
[0102]
所述查询范围确定模块22,用于获取可视化页面地图范围内两个对角顶点的经纬度数据,根据所述两个对角顶点的经纬度数据确定数据查询范围;
[0103]
所述聚合模块23,用于根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,得到查询结果。
[0104]
进一步地,所述空间字段处理模块21,还用于在根据所述目标业务数据的经纬度数据构建空间字段之后,将所述空间字段的字段类型映射到elasticsearch中。
[0105]
其中,在根据所述目标业务数据的经纬度数据构建空间字段之后需要将所述空间字段的字段类型映射到elasticsearch中;elasticsearch为基于apache lucene的搜索的分布式多用户能的全文搜索引擎。
[0106]
其中,根据目标业务数据的经纬度数据新构建geopoint字段,该geopoint字段为通过经纬度转化的空间字段,具体表现可以为字符串形式,然后将所述空间字段的字段类型映射到elasticsearch中。对于不同的目标业务数据,字段类型有很多种,例如,当目标业务数据为保单数据时,保单数据的净自留额netretention的字段类型为double,产品大类
product_class_code字段类型类型为keyword,经纬度空间字段geopoint字段类型为geo_point。通过将所述空间字段的字段类型映射到elasticsearch中,以便后续的数据查询,避免分词,从而提高数据查询效率。
[0107]
进一步地,所述空间字段处理模块21,将所述空间字段导入至预设索引中,包括:在不同的预设时间段内,将不同的所述空间字段交替导入至elasticsearch中两个不同的预设索引中。
[0108]
其中,将存储保单数据的索引中,对于不需要参与查询条件的字段对应的索引,将其默认设置更改为false。每条保单数据数据更新完后,将自动刷新时间refresh_interval进行更改,例如更改为120秒,以此来减少磁盘和内存消耗,刷新周期默认是每1秒更新一次。为了满足业务场景突破默认查询极限,将max_result_window重新设置,其中elasticsearc查询结果限制的默认值,原值为10000,为满足业务场景,可以将查询到保单数量扩展到1000000。
[0109]
进一步地,所述空间字段处理模块21,在不同的预设时间段内,将不同的所述空间字段交替导入至elasticsearch中两个不同的预设索引中,包括:在第一预设时间段内,将第一部分所述空间字段导入elasticsearch中的第一预设索引中,在第二预设时间段内,将第二部分所述空间字段导入elasticsearch中的第二预设索引中,在第三预设时间段内,将第三部分所述空间字段导入elasticsearch中的第一预设索引中,重复上述步骤,直至所有所述空间字段导入完毕。
[0110]
其中,重复上述步骤,直至所有所述空间字段导入完毕,是指,在第四时间段内,将第四部分所述空间字段导入elasticsearch中的第二预设索引中,在第五时间段内,将第五部分所述空间字段导入elasticsearch中的第一预设索引中,按照这种规律,直至所有所述空间字段导入完毕,所有的预设时间段可以均涉及不同时间,其长度可以相同也可以不同,例如就可以均为一天的时间。
[0111]
进一步地,所述空间字段处理模块21,还用于在将所述空间字段导入至预设索引中之后,将所述第一预设索引的索引名称和所述第二预设索引的索引名称存入缓存;在根据所述两个对角顶点的经纬度数据确定数据查询范围之前,查询所述缓存中的所述第一预设索引的索引名称以及所述第二预设索引的索引名称,并且获取所述第一预设索引及所述第二预设索引的状态;当所述第一预设索引状态为导入状态,则以所述第二预设索引作为所述可视化页面地图范围对应的索引,当所述第二预设索引状态为导入状态,则以所述第一预设索引作为所述可视化页面地图范围对应的索引。
[0112]
其中,通过定时任务将保单数据交替同步到两个不同的索引index(表名)下,将需要查询的索引index存入缓存,同步完成数据后自动刷新缓存里面索引index,以便可视化查询最新数据。
[0113]
进一步地,所述查询范围确定模块22,根据所述两个对角顶点的经纬度数据确定数据查询范围,包括:利用空间查询方法以及所述两个对角顶点的经纬度数据确定一个矩阵范围,以所述矩阵范围作为所述数据查询范围。
[0114]
其中,获取用户想要查看区域的可视化矩形经纬度,根据用户正在查看的可视化页面里的地图范围(浏览器可展示在电脑屏幕上的地图大小),可以获取到可视地图范围最左上和最右下两个地图坐标经纬度,根据两坐标点利用geoboundingboxquery将目标业务
数据查询范围截取出来,其中,geoboundingboxquery为elasticsearc自带的一种空间查询方法,可根据上左和下右两个点确定一个矩形,然后以这个矩形范围去查询数据。
[0115]
一个具体实施例中,可以对矩阵范围进行分散,即可视化范围分散,将截取范围的地图根据网格分为多个矩阵,根据每个矩阵图形指定经纬度异步查询每个矩阵范围数据,相当于将可展示的矩形地图范围分割为多个个等面积矩形,然后取每个矩形的左上角交叉点和右下角交叉点,分别去调用elasticsearch的内置方法去分别做处理的,其中,多个矩阵可以为4个或者8个等数量。所述可视化页面地图范围的形状可以为圆形、矩形、多边形及椭圆,用户通过在可视化页面绘制上述地图范围,可以获取用户需要知道的区域范围目标业务详情及汇总情况,可以通过可视化页面将获取的数据返回给页面展示。
[0116]
进一步地,根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,包括:根据所述数据查询范围以及所述可视化页面地图的收缩比例获取网格精度值,根据所述网格精度值获取所述地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计。
[0117]
一个具体实施例中,矩阵范围内数据可通过geopoint,利用elasticsearch中的geohashgrid方法及地图收缩比例控制的网格精度值。例如,将附近1km、500m、100m、50m内等数据通过索引聚合在一起做统计,可视化页面地图放大比例是1:5000m,根据elasticsearch对空间网格定义的精度表,取精度值为5,然后通过elasticsearch中的方法geohashgrid将地理网格内(4.9km*4.9km)范围内的所有保单数据聚合统计出来;其中,geopoint为目标业务数据中的一个自定义对象字段,通过目标业务数据中的经纬度转化而来,geopoint中带有一个geohash字段,就像一个个切分地图的网格,精度值越大,网格越小,且地图缩放比例越大精度值越小。
[0118]
其中,具体在地图范围内获取经纬度数据时,将经纬度数据转换成为geohash值将地图范围内的geohash值与经纬度数据转换的geohash值进行比对,从而获取地理网格内的所有目标业务数据。其中,geohash值为编码形式的数据,geohash值的第一位可以表示十位数、第二位可以代表个位数、第三位可以代表小数点后一位,以此类型,通过地图范围获取geohash值,通过地图收缩比例获取网格的精度。
[0119]
所述可视化页面地图范围的形状可以为圆形、矩形、多边形及椭圆,用户通过在可视化页面绘制上述地图范围,可以获取用户需要知道的区域范围目标业务详情及汇总情况,可以通过可视化页面将获取的数据返回给页面展示。
[0120]
本发明实施例提供的数据空间查询装置,通过获取目标业务数据,根据所述目标业务数据的经纬度数据构建空间字段,将所述空间字段导入至预设索引中;获取可视化页面地图范围内两个对角顶点的经纬度数据,根据所述两个对角顶点的经纬度数据确定数据查询范围;根据所述数据查询范围以及所述可视化页面地图的收缩比例获取地理网格,根据所述空间字段对所述地理网格范围内的目标业务数据进行聚合统计,得到查询结果;可以实现对大量地图标的点的聚合,并对聚合进行及时响应。
[0121]
图3是本发明实施例的电子设备的结构示意图。如图3所示,该电子设备30包括处理器31及和处理器31通信连接的存储器32。
[0122]
存储器32存储有用于实现上述任一实施例的所述数据空间查询方法的程序指令。
[0123]
处理器31用于执行存储器32存储的程序指令以进行代码测试。
[0124]
其中,处理器31还可以称为cpu(central processing unit,中央处理单元)。处理器31可能是一种集成电路芯片,具有信号的处理能力。处理器31还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0125]
本发明实施例提供一种存储介质,本发明实施例的存储介质存储有能够实现上述所有方法的程序指令,所述存储介质可以是非易失性,也可以是易失性。其中,该程序指令可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
[0126]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0127]
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围。
[0128]
以上所述的仅是本发明的实施方式,在此应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1