地图切片的生成方法、装置、存储介质及电子设备
技术领域
本申请涉及数据处理领域,具体而言,涉及一种地图切片的生成方法、装置、存储介质及电子设备。
背景技术
现在较为流行的地图底图技术是栅格切片底图,其本质上是将空间数据分别渲染为不同缩放级别的地图图片,然后将各个级别的图片按照一定规则切分,按照一定的规则组织,存储到硬盘或数据库中,构成一幅完整的地图。栅格切片地图有其优越性,例如有效减少了传输数据体积,多级缩放等。
以及,现有的矢量切片技术的思路与栅格切片的思路一致,即以金字塔的方式切割矢量数据,从而生成具有层级及行列索引的矢量数据描述性文件。具体的,可以根据矢量数据源及切片裁剪的设置层级参数,从最大层级开始逐级向最小层级开始制作切片,每一级逐行逐列进行切片制作。当前层级制作矢量切片的切片数据暂存于内存中,以供下一级切片的制作使用;当当前层级全部矢量切片制作完成后,开始制作下一层级(小一级)的矢量切片,并依次计算并获取每一块切片所需要的上一级所制作的4块切片中的所有切片数据,进行当前切片的制作。制作过程中可以排除无效切片数据(即由高级别分辨率向低级别分辨率进行切片计算像元小于一个像素的要素)并保留有效切片数据存储于内存中,以供下一级切片的制作使用,如此循环,直至所有设置的层级全部制作完成。
但现有的地图切片方式(例如栅格切片、矢量切片、或者其他类型的对影像数据的切片方法)以金字塔的方式制作切片,在制作每一层级时会加载该层级所需的所有切片数据进入内存,以供下一级切片的制作,这样需要使用大量的内存(特别是制作最大层级时的内存占用非常大)。以及,切片数据的使用存在不连贯的问题:当前层级相应切片制作之后切片数据即留存于内存中,直至下一级相应位置的切片制作时才会再次读取,反复的切片数据存取降低了切片的制作效率。
发明内容
本申请实施例的目的在于提供一种地图切片的生成方法、装置、存储介质及电子设备,以降低制作地图切片时的内存占用和提高制作地图切片的效率。
为了实现上述目的,本申请的实施例通过如下方式实现:
第一方面,本申请实施例提供一种地图切片的生成方法,切片的层级包括相邻的第一层级和第二层级,所述第一层级的待生成切片数量和所述第二层级的待生成切片数量为多个,且所述第一层级的待生成切片数量高于所述第二层级的待生成切片数量,所述方法包括:获取原始数据;根据所述原始数据,生成所述第一层级的切片;在确定所述第一层级已生成的切片中包括所述第二层级中任一待生成切片对应的所有目标切片时,根据所述目标切片,生成所述第二层级的切片,以实现对所述原始数据的切片,其中,所述第二层级的每个切片基于所述第一层级中一个或多个切片生成。
通过在确定第一层级已生成的切片中包括第二层级中任一待生成切片对应的所有目标切片时,即根据目标切片生成第二层级的切片。这样的方式,在制作每一个层级(最小层级除外)时,无需等到当前层级全部地图切片制作完成后,才开始制作下一层级(小一级)的地图切片,这样对内存的占用很小。并且,这样的方式,在制作每一个层级的地图切片时,其所需切片数据的使用连贯,无需经过反复的存取,能够有效提升地图切片的制作效率。
结合第一方面,在第一方面的第一种可能的实现方式中,在所述根据所述原始数据,生成所述第一层级的切片之前,所述方法还包括:根据对所述原始数据的投影,确定出所述原始数据在投影下的数据范围;根据所述数据范围,确定出所述原始数据与所述第一层级的每个待生成切片之间的第一对应关系;对应的,所述根据所述原始数据,生成所述第一层级的切片,包括:根据所述第一对应关系和所述原始数据,生成所述第一层级的切片。
在该实现方式中,通过确定出原始数据在投影下的数据范围,可以进一步确定出原始数据与第一层级的每个待生成切片之间的第一对应关系,从而准确地确定出制作第一层级的每个地图切片所需的原始数据,能够保证制作的地图切片的准确性。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述数据范围,确定出所述原始数据与所述第一层级的每个待生成切片之间的第一对应关系,包括:根据所述数据范围,确定出所述第一层级的第一行列号,其中,所有所述第一行列号对应的原始数据的范围涵盖所述数据范围,且不同的所述第一行列号对应不同范围的原始数据,以及,不同的所述第一行列号对应所述第一层级中不同的待生成切片;根据所述第一行列号,确定出所述第一层级中待生成切片的第一索引值,其中,所述第一层级中不同待生成切片对应不同第一索引值,所述第一索引值用于揭示所述第一层级中待生成切片的生成次序;生成所述第一层级中每个待生成切片的第一索引值与所述数据范围内的原始数据之间的对应关系,所述对应关系为所述第一对应关系。
在该实现方式中,通过数据范围可以确定出第一层级中待生成切片的第一行列号,而基于第一行列号可以确定出第一层级中待生成切片的第一索引值,第一行列号可以确定地图切片制作时使用的原始数据,第一索引值则可以确定第一层级中地图切片的制作次序,从而保证地图切片制作的有序性及准确性,有利于避免地图切片制作的重复和遗漏。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述第一对应关系和所述原始数据,生成所述第一层级的切片,包括:从所述第一索引值中确定出当前待处理的第一目标索引值;根据所述第一索引值与行列号之间的对应关系,确定出所述第一目标索引值对应的第一目标行列号;根据所述第一行列号与所述数据范围内的原始数据之间的对应关系,确定出所述第一目标行列号对应的目标原始数据;根据所述目标原始数据,生成所述第一层级的切片。
在该实现方式中,通过确定出当前待处理的第一目标索引值,即可基于其对应的第一目标行列号确定出对应的目标原始数据,进而生成第一层级的切片。这样的方式可以保证制作的地图切片的准确性。
结合第一方面的第二种或第三种可能的实现方式,在第一方面的第四种可能的实现方式中,在所述根据所述第一对应关系和所述原始数据,生成所述第一层级的切片之后,所述方法还包括:判断当前所述第一层级中已生成的切片的第一索引值与所述第二层级的任一待生成切片的第二索引值之间是否满足预设条件,其中,所述第二层级中不同待生成切片对应不同第二索引值;若是,确定所述第一层级已生成的切片中包括所述第二层级中一待生成切片对应的所有目标切片。
在该实现方式中,通过在生成第一层级的切片之后,判断其第一索引值与第二层级的任一待生成切片的第二索引值之间是否满足预设条件,在满足预设条件时,即可确定第一层级已生成的切片中包括第二层级中一待生成切片对应的所有目标切片。通过索引值之间的关系,可以简单准确地确定当前是否满足制作上一层级的地图切片的条件,有利于保证在满足条件时及时进行上一层级的地图切片的制作。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述第二层级中一个非边缘的切片对应所述第一层级中多个切片,所述判断当前所述第一层级中已生成的切片的第一索引值与所述第二层级的任一待生成切片的第二索引值之间是否满足预设条件,包括:确定出当前所述第一层级中已生成的切片的第一索引值对应的第一行列号,并判断该第一行列号是否为最大行号、最大列号或者收尾行列号,其中,所述收尾行列号表示对应上一层级同一待生成切片的多个切片中生成顺序最末的一个切片所对应的行列号,所述第二层级为所述第一层级的上一层级;若该第一行列号是最大行号、最大列号或收尾行列号,确定当前所述第一层级中已生成的切片的第一索引值与所述第二层级的一个待生成切片的第二索引值之间满足预设条件。
在该实现方式中,通过第一层级已生成的切片的索引值所对应的行列号,判断其是否为最大行号、最大列号或收尾行列号中的一种,若是,即可确定满足条件,可以制作上一层级的切片。这样的判断条件,可以在遍历过程中不遗漏边缘部分(最大行号、最大列号),保证制作切片时原始数据的完整性。而收尾行列号,可以快速识别,进而能够及时对可以制作上一层级的切片进行处理,并制作上一层级的切片,从而有效提高切片数据的使用效率,避免对同一切片数据的反复存取,以提升地图切片的制作效率。
结合第一方面的第四种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据所述目标切片,生成所述第二层级的切片,包括:根据与已生成的切片的第一索引值满足所述预设条件的第二目标索引值,确定出与所述第二目标索引值对应的所有第一索引值;根据所述第二目标索引值对应的所有第一索引值,确定出对应的待用切片;获取每个所述待用切片对应的切片数据;根据获取的所述切片数据,生成所述第二层级的切片,并清理所述待用切片对应的切片数据。
在该实现方式中,通过确定出满足预设条件的第二目标索引值所对应的所有第一索引值,进一步确定出这些第一索引值对应的待用切片,从而基于待用切片对应的切片数据,生成第二层级的切片,并及时清理待用切片对应的切片数据,可以使得切片数据的使用非常连贯,无需反复存取,从而提高地图切片的制作效率,并能够在使用这些切片数据后尽快将其从内存中清理掉,尽可能减少对内存的占用,从而降低对内存的占用和对设备内存条件的要求。
第二方面,本申请实施例提供一种地图切片的生成装置,切片的层级包括相邻的第一层级和第二层级,所述第一层级的待生成切片数量和所述第二层级的待生成切片数量为多个,且所述第一层级的待生成切片数量高于所述第二层级的待生成切片数量,所述方法包括:原始数据获取模块,用于获取原始数据;第一层级切片模块,用于根据所述原始数据,生成所述第一层级的切片;第二层级切片模块,用于在确定所述第一层级已生成的切片中包括所述第二层级中任一待生成切片对应的所有目标切片时,根据所述目标切片,生成所述第二层级的切片,以实现对所述原始数据的切片,其中,所述第二层级的每个切片基于所述第一层级中一个或多个切片生成。
第三方面,本申请实施例提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面或第一方面可能的实现方式中任一项所述的地图切片的生成方法。
第四方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述程序指令被处理器加载并执行时,实现第一方面或第一方面可能的实现方式中任一项所述的地图切片的生成方法。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种地图切片的生成方法的流程图。
图2为本申请实施例提供的一种地图切片的生成顺序的示意图。
图3为本申请实施例提供的一种多个层级的地图切片的制作流程的示意图。
图4为本申请实施例提供的一种地图切片的生成装置的结构框图。
图5为本申请实施例提供的一种电子设备的结构框图。
图标:10-地图切片的生成装置;11-原始数据获取模块;12-第一层级切片模块;13-第二层级切片模块;20-电子设备;21-存储器;22-通信模块;23-总线;24-处理器。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
在需要制作地图切片(例如对某地的地图制作地图切片)时,可以采用栅格切片、矢量切片等方式制作地图切片,为了提高地图切片的制作效率,可以执行本申请实施例提供的地图切片的生成方法。
请参阅图1,图1为本申请实施例提供的地图切片的生成方法的流程图。地图切片的生成方法可以包括步骤S10、步骤S0和步骤S30。
为了便于理解本方案,此处先对本申请实施例提供的地图切片的生成方法的背景进行简要的介绍。
在制作地图切片时,通常涉及到多个层级的地图切片的制作,例如,需要制作n-m个层级的地图切片,那么,第n个层级(即需要制作的地图切片的数量最多的一个层级)可以视为第一层级,而第n-1个层级可以视为第二层级,以此类推,直到第m个层级,即为本次制作的地图切片的最高层级。其中,第n-x个层级为第n-x+1个层级的上一层级,第n-x+1个层级为第n-x个层级的下一层级,每相邻的两个层级之间的切片(即地图切片)存在对应关系,且上一层级的一个切片对应下一层级的一个或多个(例如一个、两个、四个、九个等)切片。n、m、x均为正整数,x处于m与n之间,且n-m大于等于2。
目前普遍采用上一层级的一个切片对应下一层级的四个切片的方式,但不限定于此,另外,目前的技术中,每两个相邻层级之间切片的对应关系,通常是采用同一种,例如,第二层级的一个切片对应第一层级的四个切片,第三层级的一个切片对应第二层级的四个切片等,但不应视为对本申请的限定,本申请实施例提供的地图切片的生成方法,还可以采用第二层级的一个切片对应第一层级的四个切片,第三层级的一个切片对应第二层级的两个切片,第四层级的一个切片对应第三层级的九个切片等多种不同对应关系的方式,此处不作限定,可以根据实际需要选取。
在多个层级的地图切片的制作过程中,可以采用从最大层级(即第n个层级,也即第一层级)逐渐向最小层级(即第m个层级)制作地图切片。
目前常规的地图切片制作方式是在一个层级的地图切片全部制作完成后,在开始该层级上一层级的地图切片的制作,这样的方式效率较低,且在制作较大层级(特别是最大层级)时对内存的占用过多,且耗时过长,导致在制作不同层级的地图切片时,需要对制作地图切片所需的切片数据进行反复的存取,大大降低地图切片的制作效率。
为了提高地图切片的制作效率,降低制作地图切片时对内存的占用率,在本实施例中,可以执行步骤S10。
步骤S10:获得原始数据。
在本实施例中,可以获取待切片的原始数据。例如,在对A地的地图进行地图切片的制作时,可以获取A地地图对应的原始数据。其中,原始数据可以为制作地图切片的影像数据(例如卫星图像)、栅格数据、矢量数据等,此处不作限定。
在获得原始数据后,以及,在执行步骤S20之前,可以根据对原始数据的投影,确定出原始数据在投影下的数据范围。
示例性的,可以对原始数据进行墨卡托投影,确定出该原始数据在墨卡托投影方式下的数据范围:(xmin,ymin)至(xmax,ymax)。当然,也可以采用其他投影方式,例如双标准纬线等角圆锥投影、等差分纬线多圆锥投影、正轴方位投影等方式,此处不作限定。
而后,可以根据原始数据的数据范围,确定出原始数据与第一层级(即第n个层级)的每个待生成切片之间的第一对应关系。
示例性的,可以根据数据范围,确定出第一层级的第一行列号,其中,所有第一行列号对应的原始数据的范围涵盖数据范围,且不同的第一行列号对应不同范围的原始数据,以及,不同的第一行列号对应第一层级中不同的待生成切片。
例如,可以根据数据范围:(xmin,ymin)至(xmax,ymax),计算出该原始数据在第一层级(即第n个层级)的切片的行号(也即待生成切片的行号)为:rowmin到rowmax,其中,rowmin<owmax;以及,计算出该原始数据在第一层级(即第n个层级)的切片的列号(也即待生成切片的行号)为:colmin到colmax,其中,colmin<olmax。其中,第一层级的切片的行号和第一层级的切片的列号即为第一行列号。
另外,为了便于对后续层级(第n-1个层级到第m个层级)的行列号的确定和使用(行列号可以用来确定地图切片的范围,例如,当前层级中地图切片是否位于最大行、最大列等),此处还可以确定出剩余层级(即除第一层级之外的所有层级)中每个层级的起始行列号或所有行列号,以便后续的使用。当然,此处不应视为对本申请的限定,也可以在其他时机确定其他层级的行列号,或者在一些可能的实现方式中不使用行列号也是可行的。
通过确定出原始数据在投影下的数据范围,可以进一步确定出原始数据与第一层级的每个待生成切片之间的第一对应关系,从而准确地确定出制作第一层级的每个地图切片所需的原始数据,能够保证制作的地图切片的准确性。
确定出第一行列号之后,可以根据第一行列号,确定出第一层级中待生成切片的第一索引值,其中,第一层级中不同待生成切片对应不同第一索引值,第一索引值用于揭示第一层级中待生成切片的生成次序;生成第一层级中每个待生成切片的第一索引值与数据范围内的原始数据之间的对应关系,该对应关系即为第一对应关系。
示例性的,可以根据第一行列号计算第一层级中待生成切片的第一索引值(也即切片的第一索引值)。可以根据第一行列号,计算第一层级中待生成切片的索引范围(例如Z型索引范围):即,根据第一行列号中最小的值(rowmin,colmin)计算的第一索引值最小,记为indexmin,而对应该最小第一行列号(rowmin,colmin)的待生成切片所对应的第一索引值indexmin也是最小的;同理,根据第一行列号中最大的值(rowmax,colmax)计算的第一索引值最大,记为indexmax,而对应该最大第一行列号(rowmax,colmax)的待生成切片所对应的第一索引值indexmax也是最大的,由此可以计算出第一层级中待生成切片的索引范围,以及,可以计算出第一层级中每个待生成切片的第一索引值。
例如,可以采用以下方式计算第一索引值,具体参阅代码:
确定出第一层级中待生成切片的第一索引值后,可以按照第一索引值的大小,从小到大进行地图切片的制作,如图2所示(需要注意的是,其中的数值表示制作顺序,并不限定为第一索引值的具体数值,以及,图2中示出的制作顺序为Z型顺序,但在其他一些可实现的方式中,也可以采用其他类型的,例如一字型;另外,此处以上一层级的一个切片对应下一层级的四个切片为例,但不作限定)。
通过数据范围可以确定出第一层级中待生成切片的第一行列号,而基于第一行列号可以确定出第一层级中待生成切片的第一索引值,第一行列号可以确定地图切片制作时使用的原始数据,第一索引值则可以确定第一层级中地图切片的制作次序,从而保证地图切片制作的有序性及准确性,有利于避免地图切片制作的重复和遗漏。
在进行对第一层级的地图切片的制作时,可以执行步骤S20。
步骤S20:根据原始数据,生成第一层级的切片。
在本实施例中,可以根据第一对应关系和原始数据,生成第一层级的切片。
示例性的,可以从第一索引值中确定出当前待处理的第一目标索引值,例如,确定出当前的待生成切片的第一索引值中最小的一个为第一目标索引值。确定出第一目标索引值后,可以根据第一索引值与行列号之间的对应关系,确定出第一目标索引值对应的第一目标行列号,并结合第一行列号与数据范围内的原始数据之间的对应关系,确定出第一目标行列号对应的目标原始数据。从而可以根据目标原始数据,生成第一层级的该切片,其中,生成的第一层级的切片与第一目标索引值对应。
通过确定出当前待处理的第一目标索引值,即可基于其对应的第一目标行列号确定出对应的目标原始数据,进而生成第一层级的切片。这样的方式可以保证制作的地图切片的准确性。
在生成第一层级的一个地图切片后,可以确定第一层级已生成的切片中是否包括第二层级中任一待生成切片对应的所有目标切片。
示例性的,可以判断当前第一层级中已生成的切片的第一索引值与第二层级的任一待生成切片的第二索引值之间是否满足预设条件,其中,第二层级中不同待生成切片对应不同第二索引值。判断的过程可以是在制作切片的过程中,也可以是在完成一个切片的制作后,此处不作限定。
需要说明的是,此处的预设条件,可以根据实际的情况设定,此处不作限定。例如,预设条件可以为:最新生成的切片的第一索引值为第二层级中的一个地图切片的第二索引值所对应的多个索引值中的最大一个;或者,第一层级中最新生成的地图切片的第一索引值是第二层级中某个待生成切片的第二索引值的S倍(S为上一层级的一个切片对应下一层级的切片的数量)等,此处不作限定。
示例性的,在第二层级中一个非边缘的切片对应第一层级中多个(例如S个)切片时,判断当前第一层级中已生成的切片的第一索引值与第二层级的任一待生成切片的第二索引值之间是否满足预设条件的方式可以为:
确定出当前第一层级中已生成的切片的第一索引值对应的第一行列号,并判断该第一行列号是否为最大行号、最大列号或者收尾行列号,其中,收尾行列号表示对应上一层级同一待生成切片的多个切片中生成顺序最末的一个切片所对应的行列号。若该第一行列号是最大行号、最大列号或收尾行列号,可以确定当前第一层级中已生成的切片的第一索引值与第二层级的一个待生成切片的第二索引值之间满足预设条件。
此处以一个具体的例子(制作顺序为如图2所示的Z型,S=4,且第一行列号以(0,0)为起始行列号)来进行说明:假设当前制作的地图切片的第一索引值(imdextmp)所对应的行号(rowtmp)与列号(coltmp)满足(rowtmp%2==1&&coltmp%2==1)时,即可以确定满足预设条件。
另外,考虑到原始数据范围的边缘(例如右侧边缘与下侧边缘)的切片的索引值可能无法满足非边缘的地图切片的对应关系(例如,最大行数为7,最大列数为7的第一层级,其第7行或第7列的地图切片,难以满足非边缘的地图切片的对应关系)。为了保证制作的地图切片的数据完整性,避免数据丢失,可以补充判断条件:假设当前地图切片的索引值所对应的当前层级的行列号,满足行号等于当前层级最大行号或列号等于当且层级最大列号,则依旧判断其满足预设条件,但在索引值之间的对应关系上可以不作要求(也可以设定最大行号或最大列号的地图切片对应的索引值不连续,从而使其满足索引值的条件,可以根据实际需要进行设定,此处不作限定)。
通过在生成第一层级的切片之后,判断其第一索引值与第二层级的任一待生成切片的第二索引值之间是否满足预设条件,在满足预设条件时,即可确定第一层级已生成的切片中包括第二层级中一待生成切片对应的所有目标切片。通过索引值之间的关系,可以简单准确地确定当前是否满足制作上一层级的地图切片的条件,有利于保证在满足条件时及时进行上一层级的地图切片的制作。
而通过第一层级已生成的切片的索引值所对应的行列号,判断其是否为最大行号、最大列号或收尾行列号中的一种,若是,即可确定满足条件,可以制作上一层级的切片。这样的判断条件,可以在遍历过程中不遗漏边缘部分(最大行号、最大列号),保证制作切片时原始数据的完整性。而收尾行列号,可以快速识别,进而能够及时对可以制作上一层级的切片进行处理,并制作上一层级的切片,从而有效提高切片数据的使用效率,避免对同一切片数据的反复存取,以提升地图切片的制作效率。
当前第一层级中已生成的切片的第一索引值与第二层级的一个待生成切片的第二索引值之间满足预设条件,即表示确定第一层级已生成的切片中包括第二层级中任一待生成切片对应的所有目标切片。由此,可以执行步骤S30。
步骤S30:在确定第一层级已生成的切片中包括第二层级中任一待生成切片对应的所有目标切片时,根据目标切片,生成第二层级的切片,以实现对原始数据的切片,其中,第二层级的每个切片基于第一层级中一个或多个切片生成。
在本实施例中,可以根据与已生成的切片的第一索引值满足预设条件的第二目标索引值,确定出与第二目标索引值对应的所有第一索引值。
示例性的,为了方便说明,此处以制作顺序为如图2所示的Z型,S=4,且第一行列号以(0,0)为起始行列号为例。第一块地图切片(例如第一索引值为1)的第一行列号为(0,0),第二块地图切片(例如第一索引值为2)的第一行列号为(0,1),第三块地图切片(例如第一索引值为3)的第一行列号为(1,0),第四块地图切片(例如第一索引值为4)的第一行列号为(1,1)。在索引值为4的第四块地图切片制作完成后,可以确定满足预设条件,那么,通过该切片的第一索引值(为4),可以确定出与之对应的第二索引值(为1)。当然,在不同的设定情况下,索引值之间可能有不同的对应关系,此处仅是举例说明,不作限定。
确定出对应的第二目标索引值后,即可进一步确定出第二目标索引值对应的所有第一索引值,以便确定出对应的待用切片。假设当前新生成的地图切片的第一索引值为indextmp,第一行列号为(rowtmp,coltmp),且满足预设条件,那么,其对应的第二目标索引值即为indextmp/4(此处相邻层级间索引值的关系为:下一层级的索引值为上一层级索引值的4倍,但不限定于此)。而该第二目标索引值(indextmp/4)对应的所有第一索引值有indextmp、indextmp-1、indextmp-2、indextmp-3,对应的第一行列号则分别为:(rowtmp-1,coltmp-1)、(rowtmp,coltmp-1)、(rowtmp-1,coltmp)和(rowtmp,coltmp)。在本实施例中,可以采用对应的第一索引值确定出对应的待用切片,也可以采用对应的第一行列号确定出对应的待用切片,此处不作限定。
确定出对应的待用切片后,可以获取每个待用切片对应的切片数据,并根据获取的切片数据,生成第二层级的切片,并清理待用切片对应的切片数据,其中,生成的第二层级的切片与第二目标索引值对应。
需要说明的是,切片对应的切片数据,表示该切片保留的数据,例如,制作第一层级的切片时,需要原始数据,而制作第二层级时,是基于第一层级中的切片对应的切片数据而生成,不同之处在于,在非最大层级的切片制作时,需要的是下一层级中切片对应的切片数据,而切片数据可能保留了原始数据中所有的要素,但也有可能做了一些过滤(例如,第一层级中的切片中包含地图中的房屋要素、街道要素、小区要素、城区要素、城市要素等,而第二层级的切片中,将房屋要素过滤,保留街道要素、小区要素、城区要素、城市要素),此即为原始数据与切片数据的区别所在。
例如,制作的第二层级的该切片的第二索引值为indextmp/4,制作该切片的切片数据由第一层级行列号分别为(rowtmp-1,coltmp-1)、(rowtmp,coltmp-1)、(rowtmp-1,coltmp)和(rowtmp,coltmp)的四块地图切片的切片数据构成,此时可以从内存中获取到这四块切片对应的原始数据,从而进行第二层级索引值为indextmp/4的地图切片的制作。
示例性的,为了保证地图切片的质量,可以在制作过程中排除无效切片数据(即由高级别分辨率向低级别分辨率进行切片计算像元小于一个像素的要素)。制作完成后,可以清理待用切片对应的切片数据,即,将第一层级中四块地图切片(即未完成制作时的待用切片)对应的原始数据(存储在内存中的切片数据,即原始数据)从内存中清理,只保留构成当前切片(制作的第二层级的地图切片)的切片数据。
通过确定出满足预设条件的第二目标索引值所对应的所有第一索引值,进一步确定出这些第一索引值对应的待用切片,从而基于待用切片对应的切片数据,生成第二层级的切片,并及时清理待用切片对应的切片数据,可以使得切片数据的使用非常连贯,无需反复存取,从而提高地图切片的制作效率,并能够在使用这些切片数据后尽快将其从内存中清理掉,尽可能减少对内存的占用,从而降低对内存的占用和对设备内存条件的要求。
另外,在制作n-m个层级的地图切片中,可以在确定下一层级已生成的切片中包括上一层级中任一待生成切片对应的所有切片时,根据上一层级中该待生成切片在下一层级对应的所有切片,生成上一层级中的该切片,以实现对原始数据的n-m个层级的切片。
示例性的,请参阅图3,可以按照上述制作第二层级的切片的思路,进行后续的判断,且当生成的第二层级的切片的第二索引值indextmp/4所对应的行列号依然满足预设条件时,可以进行第二层级的上一层级的地图切片的制作(制作过程可以参阅前文所述,此处不再赘述),直至完成第m个层级的切片的制作。需要说明的是,图3中所示出的数值,仅是制作流程上的顺序,并非某个层级的索引值。
通过在确定下一层级已生成的切片中包括上一层级中任一待生成切片对应的所有切片时,根据上一层级中该待生成切片在下一层级对应的所有切片,生成上一层级中的该切片,这样能够高效地进行对原始数据的在n-m个层级的地图切片的制作,且能够有效降低内存占用情况,改善因切片数据的使用不连贯而对切片数据进行反复存取导致的地图切片制作效率低的问题。
另外,为了进一步提高效率,还可以采用多线并行处理的方式进行n-m个层级的地图切片的制作,具体的方式可以以实际需要为准,此处不作限定。
在本实施例中,采用本申请实施例提供的地图切片的生成方法对单省份1960万要素的原始数据进行0至15级的地图切片制作,基于8核16G内存的服务器耗时12小时全部制作完成,验证地图切片的生成方法的高效性。
另外,本实施例中以一种建立每个层级之间切片对应关系,并依据索引值进行切片的方式为例对本申请实施例提供的地图切片的生成方法进行详细介绍,但不应视为对本申请的限定。在本实施例中,还可以在其他的切片方式中应用地图切片的生成方法(即,在地图切片的生成过程中,采用其他的方式实现切片的生成),例如,采用四叉树的方法(例如四叉树后序遍历方法)实现不同层级中切片的对应(四叉树的方法主要应用于下一层级中四个切片对应上一层级中一个切片的情形,在下一层级中k个切片对应上一层级中一个切片时,可以采用与四叉树类似的方式,不过树的数量不同,此处不作限定),以此实现对多个层级的地图切片的制作。采用四叉树的方式,在运行地图切片的生成方法时具有效率高、逻辑简单且好维护等优点。
因此,本申请实施例提供的地图切片的生成方法中相邻层级件切片的对应方式、切片的制作顺序等,不应视为对本申请的限定。
请参阅图4,基于同一发明构思,本申请实施例中还提供一种地图切片的生成装置10,切片的层级包括相邻的第一层级和第二层级,所述第一层级的待生成切片数量和所述第二层级的待生成切片数量为多个,且所述第一层级的待生成切片数量高于所述第二层级的待生成切片数量,所述方法包括:
原始数据获取模块11,用于获取原始数据。
第一层级切片模块12,用于根据所述原始数据,生成所述第一层级的切片。
第二层级切片模块13,用于在确定所述第一层级已生成的切片中包括所述第二层级中任一待生成切片对应的所有目标切片时,根据所述目标切片,生成所述第二层级的切片,以实现对所述原始数据的切片,其中,所述第二层级的每个切片基于所述第一层级中一个或多个切片生成。
在本实施例中,所述地图切片的生成装置10还包括原始数据处理模块,用于在所述第一层级切片模块12根据所述原始数据,生成所述第一层级的切片之前,根据对所述原始数据的投影,确定出所述原始数据在投影下的数据范围;根据所述数据范围,确定出所述原始数据与所述第一层级的每个待生成切片之间的第一对应关系。
在本实施例中,所述原始数据处理模块,还用于根据所述数据范围,确定出所述第一层级的第一行列号,其中,所有所述第一行列号对应的原始数据的范围涵盖所述数据范围,且不同的所述第一行列号对应不同范围的原始数据,以及,不同的所述第一行列号对应所述第一层级中不同的待生成切片;根据所述第一行列号,确定出所述第一层级中待生成切片的第一索引值,其中,所述第一层级中不同待生成切片对应不同第一索引值,所述第一索引值用于揭示所述第一层级中待生成切片的生成次序;生成所述第一层级中每个待生成切片的第一索引值与所述数据范围内的原始数据之间的对应关系,所述对应关系为所述第一对应关系。
在本实施例中,所述第一层级切片模块12,还用于从所述第一索引值中确定出当前待处理的第一目标索引值;根据所述第一索引值与行列号之间的对应关系,确定出所述第一目标索引值对应的第一目标行列号;根据所述第一行列号与所述数据范围内的原始数据之间的对应关系,确定出所述第一目标行列号对应的目标原始数据;根据所述目标原始数据,生成所述第一层级的切片。
在本实施例中,所述地图切片的生成装置10还包括预设条件判断模块,用于在所述第一层级切片模块12根据所述原始数据,生成所述第一层级的切片之后,判断当前所述第一层级中已生成的切片的第一索引值与所述第二层级的任一待生成切片的第二索引值之间是否满足预设条件,其中,所述第二层级中不同待生成切片对应不同第二索引值;若是,确定所述第一层级已生成的切片中包括所述第二层级中一待生成切片对应的所有目标切片。
在本实施例中,所述第二层级中一个非边缘的切片对应所述第一层级中多个切片,所述预设条件判断模块,还用于确定出当前所述第一层级中已生成的切片的第一索引值对应的第一行列号,并判断该第一行列号是否为最大行号、最大列号或者收尾行列号,其中,所述收尾行列号表示对应上一层级同一待生成切片的多个切片中生成顺序最末的一个切片所对应的行列号,所述第二层级为所述第一层级的上一层级;若该第一行列号是最大行号、最大列号或收尾行列号,确定当前所述第一层级中已生成的切片的第一索引值与所述第二层级的一个待生成切片的第二索引值之间满足预设条件。
在本实施例中,所述第二层级切片模块13,还用于根据与已生成的切片的第一索引值满足所述预设条件的第二目标索引值,确定出与所述第二目标索引值对应的所有第一索引值;根据所述第二目标索引值对应的所有第一索引值,确定出对应的待用切片;获取每个所述待用切片对应的切片数据;根据获取的所述切片数据,生成所述第二层级的切片,并清理所述待用切片对应的切片数据。
请参阅图5,图5为本申请实施例提供的一种电子设备20的结构框图。
在本实施例中,电子设备20可以为终端设备,例如个人电脑、笔记本电脑等,此处不作限定。当然,电子设备20也可以为服务器,例如网络服务器、云服务器、服务器集群等,此处不作限定。
示例性的,电子设备20可以包括:通过网络与外界连接的通信模块22、用于执行程序指令的一个或多个处理器24、总线23、不同形式的存储器21,例如,磁盘、ROM(Read-OnlyMemory,只读存储器)、RAM(Random Access Memory,随机存取存储器),或其任意组合。其中,存储器21、通信模块22和处理器24之间通过总线23连接。
示例性的,存储器21中存储有程序。处理器24可以从存储器21调用并运行这些程序,从而可以通过运行程序而执行地图切片的生成方法,以高效制作地图切片。
以及,本申请实施例还提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如本申请实施例中的地图切片的生成方法。
综上所述,本申请实施例提供一种地图切片的生成方法、装置存储介质及电子设备,通过在确定第一层级已生成的切片中包括第二层级中任一待生成切片对应的所有目标切片时,即根据目标切片生成第二层级的切片。这样的方式,在制作每一个层级(最小层级除外)时,无需等到当前层级全部地图切片制作完成后,才开始制作下一层级(小一级)的地图切片,这样对内存的占用很小。并且,这样的方式,在制作每一个层级的地图切片时,其所需切片数据的使用连贯,无需经过反复的存取,能够有效提升地图切片的制作效率。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。