发明内容
本发明所要解决的技术问题是提供一种海量移动目标渲染的方法及装置,用以提高对海量移动目标的空间搜索效率,能够保证海量数据的实时高效刷新并支持海量数据的动态渲染,让用户能够及时全面地了解每个移动目标的状况,提高海量移动目标的营运效率。
为了解决上述问题,本发明公开了一种海量移动目标渲染的方法,包括:
预置索引,所述索引包括一级索引和二级索引,所述一级索引为预划分的地理网格区所在的网格范围与对应的二级索引之间的索引,所述二级索引为落在所述网格范围内的移动目标位置与所述移动目标属性的索引;
接收空间查询请求,所述请求中包括查询范围信息;
定位所述查询范围信息对应的目标地理网格区所在的网格范围;
从所述一级索引中查找与所述目标地理网格区所在的网格范围对应的二级索引;
从所述二级索引中提取落在所述目标地理网格区所在的网格范围内的移动目标位置与所述移动目标属性并进行聚合,形成移动目标数据集;
对所述移动目标数据集进行渲染。
优选地,所述预置索引的步骤包括:
采用R-tree的方式遍历地理网格,获得地理网格区所在的网格范围与对应的二级索引之间的映射关系,依据所述映射关系建立一级索引;统计落在各网格范围内的移动目标位置及对应的移动目标属性;
依据所述落在各网格范围内的移动目标位置及及对应的移动目标属性建立二级索引。
优选地,所述移动目标位置,以及对应的移动目标属性采用键值对的形式记录在内存中。
优选地,所述请求中还包括移动目标的属性搜索条件,所述从二级索引中提取落在所述目标地理网格区所在的网格范围内的移动目标位置与所述移动目标属性并进行聚合,形成移动目标数据集的步骤包括:
从二级索引中提取落在所述目标地理网格区所在的网格范围内的移动目标位置与所述移动目标属性;
筛选出符合所述移动目标的属性搜索条件的移动目标位置与移动目标属性;
对筛选出的移动目标位置与移动目标属性进行聚合,形成移动目标数据集。
优选地,所述查询范围信息为根据用户提交的地图级别,地图行号和地图列号计算获得。
优选地,所述对移动目标数据集进行渲染的步骤包括:
将所述移动目标数据集渲染成瓦片地图或者自定义格式文本。
优选地,所述相邻地理网格区之间具有交叉部分。
本发明实施例还公开了一种海量移动目标渲染的装置,包括:
索引预置模块,用于预置索引,所述索引包括一级索引和二级索引,所述一级索引为预划分的地理网格区所在的网格范围与对应的二级索引之间的索引,所述二级索引为落在所述网格范围内的移动目标位置与所述移动目标属性的索引;
请求接收模块,用于接收空间查询请求,所述请求中包括查询范围信息;
定位模块,用于定位所述查询范围信息对应的目标地理网格区所在的网格范围;
查找模块,用于从所述一级索引中查找与所述目标地理网格区所在的网格范围对应的二级索引;
提取模块,用于从所述二级索引中提取落在所述目标地理网格区所在的网格范围内的移动目标位置与所述移动目标属性并进行聚合,形成移动目标数据集;
渲染模块,用于对所述移动目标数据集进行渲染。
优选地,所述索引预置模块包括:
一级索引建立子模块,用于采用R-tree的方式遍历地理网格,获得地理网格区所在的网格范围与对应的二级索引之间的映射关系,依据所述映射关系建立一级索引;
统计子模块,用于统计落在各网格范围内的移动目标位置及对应的移动目标属性;
二级索引建立子模块,用于依据所述落在各网格范围内的移动目标位置及及对应的移动目标属性建立二级索引。
优选地,所述移动目标位置,以及对应的移动目标和属性采用键值对的形式记录在内存中。
优选地,所述请求中还包括移动目标的属性搜索条件,所述提取模块包括:
提取子模块,用于从二级索引中提取落在所述目标地理网格区所在的网格范围内的移动目标位置与所述移动目标属性;
筛选子模块,用于筛选出符合所述移动目标的属性搜索条件的移动目标位置与移动目标属性;
聚合子模块,用于对筛选出的移动目标位置与移动目标属性进行聚合,形成移动目标数据集。
优选地,所述查询范围信息为根据用户提交的地图级别,地图行号和地图列号计算获得。
优选地,所述渲染渲染模块包括:
渲染子模块,用于将所述移动目标数据集渲染成瓦片地图或者自定义格式文本。
优选地,所述相邻地理网格区之间具有交叉部分。
与现有技术相比,本发明具有以下优点:
在全域范围内根据地理范围和移动目标的搜索条件请求实时显示海量移动目标时,通过以R-tree的方式建立地理网格区所在的网格范围与对应的二级索引之间的索引,以及,依据所述落在各网格范围内的移动目标位置及及对应的移动目标属性建立二级索引,通过以上两级索引,能够提高对海量移动目标的空间搜索效率,将搜索结果进行聚合,并对集合结果进行渲染。让用户能够及时全面地了解每个移动目标的状况。并且在设置索引时,在相邻地理网格区之间具有交叉部分,能够保证落在相邻网格区的交叉区域的移动目标也可以得到渲染。同时,采用键值对的数据结构存储移动目标位置和属性等信息,在捕获到移动目标移动时,快速更新移动目标位置和属性等信息,以保证海量数据的实时高效刷新并支持海量数据的动态显示,提高海量移动目标的营运效率。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明的核心构思之一在于,在全域范围内根据地理范围和移动目标的搜索条件请求实时显示海量移动目标时,通过以R-tree的方式建立地理网格区所在的网格范围与对应的二级索引之间的索引,以及,依据所述落在各网格范围内的移动目标位置及及对应的移动目标属性建立二级索引,通过以上两级索引,能够提高对海量移动目标的空间搜索效率,将搜索结果进行聚合,并对集合结果进行渲染。让用户能够及时全面地了解每个移动目标的状况。并且在相邻地理网格区之间具有交叉部分,能够保证落在相邻网格区的交叉区域的移动目标也可以得到渲染。同时,采用键值对的数据结构存储移动目标的信息,在捕获到移动目标移动时,快速更新移动目标的信息,以保证海量数据的实时高效刷新并支持海量数据的动态显示,提高海量移动目标的营运效率。
参照图1,示出了本发明一种海量移动目标渲染方法实施例的步骤流程图,具体包括以下步骤:
步骤101、预置索引;
具体而言,创建索引可以大大提高系统的性能。对一个数据集做“索引”,是为了提高对这个数据集检索的效率。例如,一本书的“目录”是这本书内容的“索引”,当拿到一本新书,想查看感兴趣内容的时候,一般会先查看目录,确定感兴趣的内容会在哪些页里面,直接翻到对应页,就可以找到感兴趣的内容;又如,去图书馆借阅图书,在操作时不是从图书馆逐层、逐个阅览室去查找需要的图书,而是通过图书索引,输入需要的图书名称或者该图书的索引号,就可以找到所需要的图书的具体位置,通过索引可以大大提高检索效率,通过创建主键索引,可以保证数据库中主键中值的唯一性,在存在数量级很大的数据时,可以大大加快数据的检索速度,这也是本发明实施例创建索引的最主要的原因。
在本发明实施例中,所述索引可以包括一级索引和二级索引,所述一级索引为预划分的地理网格区所在的网格范围与对应的二级索引之间的索引,所述二级索引为落在所述网格范围内的移动目标位置与所述移动目标属性的索引;
在实际情况中,若用户需要了解某市不同区域或街道上移动目标的情况,在这种情况下,需要对地图进行地理网格的划分,以便于分区域地更加清楚地了解该市不同区域或街道上移动目标的情况。
具体而言,所述地理网格是一种以平面子集的规则分级剖分为基础的空间数据结构,具有较高的标准化程度,有利于开发面向空间数据库和几何操作的更有效的算法。它能由粗到细,逐级的分割地球表面,将地球曲面用一定大小的多边形网格进行近似模拟,再现地球表面,其目标是将地理空间的定位和地理特征的描述一体化,并将误差范围控制在网格单元的范围内。可以以位置坐标或别的方式标注地理网格的范围,便于确定目标的具体位置。
在具体操作中,所述地理网格可以由相同坐标范围的矩形构成。
在本发明的一种优选实施例中,所述步骤101可以包括以下子步骤:
子步骤S11、采用R-tree的方式遍历地理网格,获得地理网格区所在的网格范围与对应的二级索引之间的映射关系,依据所述映射关系建立一级索引;
子步骤S12、统计落在各网格范围内的移动目标位置及对应的移动目标属性;
子步骤S13、依据所述落在各网格范围内的移动目标位置及及对应的移动目标属性建立二级索引。
具体而言,R-Tree是一种空间索引数据结构,R-tree是B-tree向多维空间发展的另一种形式,它将空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,其中,R-Tree是n叉树,n称为R-Tree的扇(fan)。非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的所有子结点的区域都落在它的区域范围之内;叶子结点上包含了小于等于n的对象,叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。每个结点对应一个矩形,每个结点所能拥有的子结点数目有上、下限,下限,保证对磁盘空间的有效利用,上限保证每个结点对应一个磁盘页,当插入新的结点导致某结点要求的空间大于一个磁盘页时,该结点一分为二(分裂)。R-Tree是一种动态索引结构,即:它的查询可与插入或删除同时进行,而且不需要定期地对树结构进行重新组织。
R-Tree是一种用于处理多维数据的数据结构,用来访问二维或者更高维区域对象组成的空间数据。R-Tree是一棵平衡树。树上有两类结点:叶子结点和非叶子结点。每一个结点由若干个索引项构成。对于叶子结点,索引项形如(Index,Obj_ID)。其中,Index表示包围空间数据对象的最小外接矩形MBR,Obj_ID标识一个空间数据对象。对于一个非叶子结点,它的索引项形如(Index,Child_Pointer)。Child_Pointer指向该结点的子结点。Index仍指一个矩形区域,该矩形区域包围了子结点上所有索引项MBR的最小矩形区域。参照图2,示出的是一种以R-tree结构存储数据的示例图。
在实际中,地图的呈现可以分多个级别,每个地图级别比例尺不相同,比例尺是地图上的线段长度与实地相应线段长度之比。它表示地图图形的缩小程度,又称缩尺,例如1∶10万,即图上1厘米长度相当于实地100000厘米(即1000米)。因而不同的地图级别所呈现的区域范围有所差异,一般而言,在同样图幅上,比例尺越大,地图所表示的范围越小,图内表示的内容越详细,精度越高;比例尺越小,地图上所表示的范围越大,反映的内容越简略,精确度越低。在实际操作中,用户可以根据实际需要,例如根据海量移动目标的数量,在地图呈现时选择合适的地图级别,并对地图级别进行划分。
例如,海量移动目标的数量在百万级时,可根据地图级别为1,将中国区分成4个地理网格,若海量移动目标的数量达到了千万级,可根据地图级别为2,将中国区分成16个地理网格,此时若还不能满足用户的性能要求,可将地图级别调整到3,将中国区分成64个地理网格,以此类推。参照图3,示出的是本发明实施例根据地图级别划分地理网格的示例图。如图3所示Level1、Level2、Level3分别表示地图级别为1、2、3级。地图级别为1,将中国区分成0、1、2、3这4个地理网格;地图级别为2,再将0、1、2、3这4个地理网格分别划分为(00、01、02、03)、(11、11、12、13)、(22、21、22、23)、(30、31、32、33),共16个地理网格,以此类推。
若划分的地理网格的数量比较多,可用R-Tree来保存,从而根据地理网格区所在的网格范围与对应的二级索引之间的映射关系,依据所述映射关系建立一级索引。
为了使本领域技术人员能够更好地理解本发明实施例,参考图4,示出的是预划分的地理网格区所在的网格范围与对应的二级索引之间关系,图4所示的二级Tree1、二级Tree2、二级Tree3…二级Tree20等所在的20个地理网格为预划分的地理网格,其中二级Tree1所在网格范围对应二级Tree1、二级Tree2所在网格范围对应二级Tree2、二级Tree3所在网格范围对应二级Tree3等对应关系即为地理网格区所在的网格范围与对应的二级索引之间的映射关系,依据此映射关系建立一级索引。
当然,上述方法仅仅用作示例,在实际中,本领域技术人员还可以根据实际需要以任何方式划分地理网格,例如,以3*3、5*5等形式,或者以3*4、4*6等形式对地理网格进行划分均是可以的,本发明对此无需加以限制。
实时统计落在各网格范围内的移动目标位置及对应的移动目标属性,在具体操作中,每个网格都可以有一个R-tree,每棵R-tree记录落在一个地理网格区所在网格范围的移动目标的位置范围的移动目标属性等信息。例如,参考图4,实时统计如图4所示二级Tree1中存储内容:落在二级Tree1所在网格范围的移动目标1的位置范围,移动目标1、落在二级Tree1所在网格范围的移动目标2的位置范围,移动目标2、落在二级Tree1所在网格范围的移动目标3的位置范围,移动目标3……等形成落在二级Tree1所在网格范围内的移动目标位置及对应的移动目标属性的索引,以此类推形成落在二级Tree2—落在二级Tree20所在网格范围内的移动目标位置及对应的移动目标属性的索引。
应用本发明实施例,在接收到用户根据地理范围要求实时渲染海量移动目标时,能够快速定位到指定区域对移动目标进行空间查询,提高海量数据获取的效率。
在本发明的一种优选实施例中,所述移动目标属性的信息可以包括移动目标标识,移动目标行驶方向,行驶速度,上报时间,牌号,所属企业,归属地,类型等等。具体而言,所述移动目标标识可以为用户给移动目标标注的ID,移动目标位置可以为移动目标在某个时间点的经纬度坐标。
作为本发明实施例应用的一种示例,系统实时接收或定时主动获取的外部系统移动目标位置和属性等信息可以存储在内存中,具体可以采用哈希表的形式进行存储,哈希表结构是基于{键,值}的数据结构序列,接收的数据转换成{键,值}对结构的数据,将移动目标位置作为关键字存于哈希表,对应的值为相应的移动目标属性等信息。由于移动目标的随时移动,其位置坐标也随之变化,如果在哈希表中存在与所述移动目标属性相同的关键词,即移动目标标识,对应地,可以实时替换更新该移动目标对应的位置坐标及属性等信息;如果不存在某个移动目标标识,可以将该移动目标位置坐标及对应的移动目标属性等信息存入内存,作为一条新的{键,值}对结构数据进行存储。
哈希表(Hashtable,也叫散列表),根据关键码值(Keyvalue)而直接进行访问的数据结构。通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表,若结构中存在关键字和K相等的记录,则所述记录必定存储在f(K)的位置上。在存储或查找记录时,不需对所有记录逐一比较便可直接存储或提取关键字对应的记录,以加快数据存储或提取速度。
所述移动目标位置和属性的信息,可以是系统实时接收或定时主动从外部系统获取,本领域技术人员也可以根据实际需要采用任何一种方式来获取移动目标位置和属性的信息,本发明对此无需加以限制。
作为本发明实施例的一种示例,二级索引中落在所述网格范围内的移动目标位置与所述移动目标属性的信息也可以以键值对的形式存储,在移动目标位置坐标得到更新时,从而实现所述二级索引中落在所述网格范围内的移动目标位置与所述移动目标属性等信息的实时更新。
步骤102、接收空间查询请求,所述请求中可以包括查询范围信息;
在实际操作中,用户请求实时空间查询请求时,用户可以根据实际需要,针对一定范围内对移动目标进行渲染,例如,用户需要了解某一街道上移动目标的情况。
步骤103、定位所述查询范围信息对应的目标地理网格区所在的网格范围;
作为本发明实施例的一种示例,所述查询范围信息可以为指定的地理范围,例如,所述查询范围信息可以为某个具体的经纬度范围,通过该具体的经纬度范围可以快速定位到落在此经纬度范围的目标地理网格区所在的网格范围。
步骤104、从所述一级索引中查找与所述目标地理网格区所在的网格范围对应的二级索引;
步骤105、从所述二级索引中提取落在所述目标地理网格区所在的网格范围内的移动目标位置与所述移动目标属性并进行聚合,形成移动目标数据集;
在本发明的一种优选是实例中,所述请求中还包括移动目标的属性搜索条件,所述步骤105可以包括以下子步骤:
子步骤S21、从二级索引中提取落在所述目标地理网格区所在的网格范围内的移动目标位置与所述移动目标属性;
子步骤S22、筛选出符合所述移动目标的属性搜索条件的移动目标位置与移动目标属性;
子步骤S23、对筛选出的移动目标位置与移动目标属性进行聚合形成移动目标数据集。
用户提出空间查询请求时,也可以针对移动目标的搜索条件对移动目标进行渲染,例如,用户需要查看同一归属地的移动目标在指定区域内的实时情况等。
为了使本领域技术人员能够更好地理解本发明实施例,参考图5,示出的是应用本发明实施例进行空间查询的示例图,如图5所示查询范围1所标记的图框,其查询请求为查询范围信息和移动目标的某一属性搜索条件,具体操作如下:
(1)根据查询范围1,通过一级索引R-tree对应到落在查询范围1内的二级Tree3、二级Tree4、二级Tree7;
(2)根据落在查询范围1内的二级Tree3,从二级索引R-tree中提取二级Tree3中移动目标集合1;
(3)根据落在查询范围1内的二级Tree4,从二级索引R-tree中提取二级Tree4中移动目标集合2;
(4)根据落在查询范围1内的二级Tree7,从二级索引R-tree中提取二级Tree7中移动目标集合3;
(5)将移动目标集合1、移动目标集合2、移动目标集合3,三个集合几何合并返回成自定义的协议格式文本或渲染成地图图片。
在本发明的一种优选实施例中,所述查询范围信息还可以为地图级别,地图行号,地图列号等信息。所述查询范围信息为根据用户提交的地图级别,地图行号和地图列号计算获得。
根据用户请求的地图级别,地图行号,地图列号等信息,可以计算出指定的地理范围,根据地理范围可以知道用哪一级R-tree进行地理网格的查询。为了使本领域技术人员能够更好地理解本发明实施例,下面通过一个将地图级别,地图行号,地图列号等信息计算出地理范围的具体实例进行分析。具体采用的方法是:以墨卡托投影的方式绘制地图,通过将墨卡托投影坐标系换算成地理坐标系,再根据地图级别与地图像素、地面分辨率、地图比例尺之间的换算关系将具体的地图级别,地图行号,地图列号等信息计算出地理范围,再查找落在此地理范围内的地理网格区所在的网格范围。
墨卡托投影(MercatorProjection),又名“等角正轴圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定,假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅标准纬线为零度(即赤道)的“墨卡托投影”绘制出的世界地图。参照图6,示出的是采用“墨卡托投影”绘制出的世界地图的示例图。
具体而言,墨卡托投影以整个世界范围,赤道作为标准纬线,本初子午线作为中央经线,两者交点为坐标原点,向东向北为正,向西向南为负。南北极在地图的正下、上方,而东西方向处于地图的正右、左。
由于墨卡托投影坐标系(MercatorProjection)在两极附近是趋于无限值得,因此它并没完整展现了整个世界,地图上最高纬度是85.05度。为了简化计算,实践中采用球形映射,而不是椭球体形状。虽然采用墨卡托投影坐标系只是为了方便渲染地图,需要知道的是,这种映射可能会给Y轴方向带来0.33%的误差。
由于赤道半径为6378137米,则赤道周长为2*π*r=20037508.3427892,因此X轴的取值范围为:[-20037508.3427892,20037508.3427892]。当纬度接近两极,即90°时,Y值趋向于无穷。因此通常把Y轴的取值范围也限定在[-20037508.3427892,20037508.3427892]之间。因此在墨卡托投影坐标系(米)下的坐标范围是:最小为(-20037508.3427892,-20037508.3427892)到最大坐标为(20037508.3427892,20037508.3427892)。将墨卡托投影坐标系换算成地理坐标系(Geographicalcoordinates)。
地理经度的取值范围是[-180,180],纬度不可能到达90°,通过纬度取值范围为[20037508.3427892,20037508.3427892]反计算可得到纬度值为85.05112877980659。因此纬度取值范围是[-85.05112877980659,85.05112877980659]。地理坐标系(经纬度)对应的范围是:最小地理坐标(-180,-85.05112877980659),最大地理坐标(180,85.05112877980659)。此处涉及地面分辨率(GroundResolution)。地面分辨率是以一个像素(pixel)代表的地面尺寸(米)。以BingMaps为例,使用它,可以在网络浏览器中观察到世界上的每一个角落。当地图级别(Level)为1级时,图片大小为512*512(4个地理网格,每个地理网格在呈现时,以瓦片呈现,也称为Tile),那么赤道空间分辨率为:赤道周长/512。其他纬度的空间分辨率则为纬度圈长度/512,极端的北极则为0。在Level为2时,赤道的空间分辨率为赤道周长/1024,其他纬度为纬度圈长度1024。很明显,GroundResolution取决于两个参数,地图级别Level和纬度latitude,Level决定图片的像素,latitude决定地面距离的长短。
地面分辨率的公式为,单位:米/像素:
groundresolution=(cos(latitude*pi/180)*2*pi*6378137meters)/(256*2levelpixels)
例如,在最低地图级别(1级),地图是512*512像素。每下一个地图级别,地图的高度和宽度分别乘于2。例如,地图级别为2级时,像素为1024*1024,地图级别为3级时,像素为2048*2048像素,地图级别为4级时,像素为4096*4096像素,等等,以此类推。通常而言,地图的宽度和高度可以由以下式子计算得到:mapwidth=mapheight=256*2^levelpixels。
地图比例尺(MapScale)是指测量相同目标时,地图上距离与实际距离的比例。通过地图分辨率在计算可知由Level可得到图片的像素大小,那么需要把其转换为以米为单位的距离,涉及到DPI(dotperinch),暂时可理解为类似的PPI(pixelperinch),即每英寸代表多少个像素。256*2level/DPI即得到相应的英寸inch,再把英寸inch除以0.0254转换为米。实地距离为:cos(latitude*pi/180)*2*pi*6378137meters;因此比例尺的公式为:
mapscale=256*2level/screendpi/0.0254/(cos(latitude*pi/180)*2*pi*6378137)
比例尺=1:(cos(latitude*pi/180)*2*pi*6378137*screendpi)/(256*2level*0.0254)
地面分辨率和地图比例尺之间的关系:
mapscale=1:groundresolution*screendpi/0.0254meters/inch
以地图级别为23级为例,表1示出的是地图级别与地图像素、地面分辨率、地图比例尺的换算关系。
表1
为了优化地图系统性能,提高地图下载和显示速度,可以将所有地图分割成256*256像素大小的正方形小块。由于在每个地图级别下的像素数量都不一样,因此地图图片(Tile)的数量也不一样。每个tile都有一个XY坐标值,可以从左上角至右下角分别以(0,0)至(2^level–1,2^level–1)的形式表示。例如地图级别在3级时,所有tile的坐标值范围可以以(0,0)至(7,7)表示,参考图7,示出的是地图级别为3级时,各地图图片及其坐标范围。
当已知一个像素的XY坐标值时,则这个像素所在的Tile的XY坐标值为:
tileX=floor(pixelX/256)tileY=floor(pixelY/256)
为了简化索引和存储地图图片,每个tile的二维XY值可以转换成一维字串,即可以以四叉树键值(quardtreekey,简称quadkey)的方式进行数据存储。每个quadkey独立对应某个地图级别下的一个tile,并且它可以被用作数据库中B-tree索引值。为了将坐标值转换成quadkey,可以将Y和X坐标二进制值交错组合,并转换成4进制值及对应的字符串,从而进行地理范围的换算。例如,假设在地图级别为3时,tile的XY坐标值为(3,5),quadkey计算如下:
tileX=3=011(二进制)
tileY=5=101(二进制)
quadkey=100111(二进制)=213(四进制)=“213”
Quadkey还有其他一些有意思的特性。第一,quadkey的长度等于该tile所对应的放大级别;第二,每个tile的quadkey的前几位和其父tile(上一放大级别所对应的tile)的quadkey相同,参考图3,如图3所示,Level1中tile2是Level2中tile20至23的父tile,相似的,Level2中tile13是Level3中tile130至133的父tile。最后,quadkey提供的一维索引值通常显示了两个tile在XY坐标系中的相似性。具体而言,两个相邻的tile对应的quadkey非常接近。这对于优化数据库的性能非常重要,因为相邻的tile通常被同时请求显示,可以将这些tile存放在相同的磁盘区域中,以减少磁盘的读取次数。因此应用本发明实施例可以提高在服务器终端对指定范围信息内的移动目标进行空间查询的效率。
当然,上述实施例为了便于本领域技术人员理解对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例,例如,在上述实施例中,将所有地图分割成256*256像素大小的正方形小块,在实际应用中本领域技术人员可以根据实际需要以任何形式对地图进行划分均是可以的,本发明实施例对此不作限制。
为了使本领域技术人员能够更好地理解本发明实施例,参考图5,图5所示查询范围2所对应的图框为针对地图级别、地图行号、地图列号所提出的空间查询请求,参考上述地图级别,地图行号,地图列号等信息计算出地理范围的方法,计算出查询请求中地图级别、地图行号、地图列号所对应的网格范围为查询范围2;从一级索引R-tree找到查询范围2对应的二级Tree12;根据二级索引,从二级Tree12中提取落在查询范围2内的移动目标集合,将所述移动目标集合渲染成瓦片地图或者自定义格式文本。参考图8,示出的是根据地图级别、地图行号、地图列号请求将移动目标集合渲染成瓦片地图的示例图。
当然,上述例子仅仅用作示例,本领域技术人员根据实际情况以任意顺序查找移动目标均是可以的,本发明实施例对此不作限定。
应用本发明实施例,通过一级索引对应的二级索引可以提高在服务器终端空间查询指定地理范围内海量移动目标的效率。
步骤106、渲染所述筛选出的移动目标的信息。
在本发明的一种优选实施例中,所述步骤106可以包括以下子步骤:
子步骤S41、将所述移动目标数据集渲染成瓦片地图或者自定义格式文本。
参考图9示出的本发明实施例一种海量移动目标渲染应用的示例图,具体操作过程如下:
(1)监控页触发叠加移动目标显示按钮或命令;
(2)通过地图API(应用程序编程接口)调用本方法系统的实时渲染服务接口叠加移动目标的位置瓦片地图和支持高亮提示的脚本;
(3)地图缩放、移动等操作时,能够自动更新叠加地理范围内的移动目标位置瓦片地图和支持高亮提示的脚本;
(4)鼠标移动到移动目标位置时可以实现高亮提示,点击移动目标位置的图标,在适当位置显示移动目标属性等详细信息,例如,参照图10,点击移动目标位置可以显示移动目标的ID,牌号,经纬度坐标等信息。
在渲染时,所述数据集可以是基于瓦片的JSONP格式数据,XML格式数据集,在实际应用中,本发明技术人员可以根据实际需要对所述数据集的格式,本发明实施例对此不作限制。
应用本发明实施例还可以兼容互联网谷歌地图、微软地图、高德地图等地图API,可以实现各种地图API的图片无缝叠加,可以实现海量数据的动态显示,具有高效的实时刷新功能,其动态刷新频率高,支持数据可达百万以上。
在具体实现中,可以通过在电子地图上增加新层,并把新层设置为活动层,从而实现移动目标在电子地图上的呈现,还可以在新层上增加一定的特性,例如移动目标的图标的颜色、形状、大小等,并将其呈现在地图上,移动目标在运动过程中,根据接收到的移动目标的位置的信息,在地图上将移动目标定位到不同的位置,实时刷新地图可以实现移动目标的移动。在实际应用中,本发明技术人员可以根据实际需要对所述特性进行定义,本发明实施例对此不作限制。
在本发明的一种优选实施例中,所述相邻地理网格区之间具有交叉部分。
在实际中,所述地理网格区所在的网格范围可以以经纬度范围对其进行标注。参考图11,示出了本发明实施例以经纬度范围对地理网格区所在的网格范围进行限定的示例图。如图11中所示,1-4所标记每个地理网格区具有部分重叠区域,其目的是为保证着落在各相邻地理网格区交叉区域的移动目标都能够在地图上实时渲染。
当然,上述例子仅仅用作示例,本领域技术人员根据实际情况在其他应用场景,例如对移动目标调控界面上执行所述方法也是可行的,本发明对此无需加以限制。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参照图12,示出了根据本发明实施例的一种海量移动目标渲染的装置实施例的结构框图,具体可以包括以下模块:
索引预置模块1201,用于预置索引,所述索引包括一级索引和二级索引,所述一级索引为预划分的地理网格区所在的网格范围与对应的二级索引之间的索引,所述二级索引为落在所述网格范围内的移动目标位置与所述移动目标属性的索引;
请求接收模块1202,用于接收空间查询请求,所述请求中包括查询范围信息;
定位模块1203,用于定位所述查询范围信息对应的目标地理网格区所在的网格范围;
查找模块1204,用于从所述一级索引中查找与所述目标地理网格区所在的网格范围对应的二级索引;
提取模块1205,用于从所述二级索引中提取落在所述目标地理网格区所在的网格范围内的移动目标位置与所述移动目标属性并进行聚合形成移动目标数据集;
渲染模块1206,用于对所述移动目标数据集进行渲染。
在本发明的一种优选实施例中,所述索引预置模块1201可以包括:
一级索引建立子模块,用于采用R-tree的方式遍历地理网格,获得地理网格区所在的网格范围与对应的二级索引之间的映射关系,依据所述映射关系建立一级索引;
统计子模块,用于统计落在各网格范围内的移动目标位置及对应的移动目标属性;二级索引建立子模块,用于依据所述落在各网格范围内的移动目标位置及及对应的移动目标属性建立二级索引。
在本发明是实施例中,所述移动目标位置,以及对应的移动目标和属性采用键值对的形式记录在内存中。
在本发明的一种优选实施例中,所述请求中还包括移动目标的属性搜索条件,所述提取模块1205可以包括:
提取子模块,用于从二级索引中提取落在所述目标地理网格区所在的网格范围内的移动目标位置与所述移动目标属性;
筛选子模块,用于筛选出符合所述移动目标的属性搜索条件的移动目标位置与移动目标属性;
聚合子模块,用于对筛选出的移动目标位置与移动目标属性进行聚合形成移动目标数据集。
在本发明的一种优选实施例中,所述查询范围信息为根据用户提交的地图级别,地图行号和地图列号计算获得。在本发明的一种优选实施例中,所述渲染模块1206可以包括:
渲染子模块,用于将所述移动目标数据集渲染成瓦片地图或者自定义格式文本。在本发明的另一种优选实施例中,所述相邻地理网格区之间具有交叉部分。
相邻地理网格区具有部分重叠区域,其目的是为保证着落在各相邻地理网格区交叉区域的移动目标都能够在地图上实时渲染。
由于本发明的装置实施例基本相应于前述的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种海量移动目标渲染的方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。