CN109936372A - 压缩和解压缩经纬度数据的方法、装置和存储介质 - Google Patents
压缩和解压缩经纬度数据的方法、装置和存储介质 Download PDFInfo
- Publication number
- CN109936372A CN109936372A CN201910120960.4A CN201910120960A CN109936372A CN 109936372 A CN109936372 A CN 109936372A CN 201910120960 A CN201910120960 A CN 201910120960A CN 109936372 A CN109936372 A CN 109936372A
- Authority
- CN
- China
- Prior art keywords
- longitude
- latitude
- level
- compressed
- latitude data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Instructional Devices (AREA)
Abstract
本发明提供了压缩和解压缩经纬度数据的方法、装置和计算机可读存储介质。压缩经纬度数据的方法包括:获取压缩参数,其中,压缩参数包括地理位置精度和索引分层数;获取经纬度数据集合;根据地理位置精度和索引分层数,确定与基准经纬度数据相关联的基准地理区域,在基准地理区域中按照层级划分区块;计算待压缩经纬度数据所表示的经纬度在每个层级中的区块位置;根据预先存储的位置‑字符映射表得到与区块位置相对应的字符,根据字符获得经压缩的经纬度数据;将压缩参数、基准经纬度数据以及经压缩的经纬度数据存储在压缩数据组中。本发明提出的压缩和解压缩经纬度数据的方法和装置能够实现基于文本的压缩,便于独立解码,并且具有高压缩率。
Description
技术领域
本发明一般地涉及数据处理技术,更具体地涉及用于压缩经纬度数据和对经压缩的经纬度数据进行解压缩的方法、装置和计算机可读存储介质。
背景技术
经纬度系统可以用来描述在经纬度坐标系中的位置以及位置集。在基于GIS(Geographic Information System,地理信息系统)和LBS(Location Based Service,基于位置服务)的系统中具有广泛的应用。在实际应用中,经常需要对大量的经纬度数据集进行存储和传输,例如网页上基于经纬度点集所进行的绘画渲染等。通过应用经纬度数据压缩方法,可以降低数据存储和传输的成本。
常见的经纬度数据压缩方法包括基于二进制的压缩、基于前后数据差值的压缩等,压缩率较低。
发明内容
为了解决现有技术中存在的上述问题,本发明的一个方面提供一种一种用于压缩经纬度数据的方法。所述方法包括:获取压缩参数,其中,所述压缩参数包括地理位置精度和索引分层数;获取经纬度数据集合;根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;针对所述经纬度数据集合中除所述基准经纬度数据以外的待压缩经纬度数据,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置;根据预先存储的位置-字符映射表得到与所述区块位置相对应的字符,并且根据所述字符获得经压缩的经纬度数据,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;将所述压缩参数、所述基准经纬度数据以及所述经压缩的经纬度数据存储在压缩数据组中。
本发明的另一方面提供了一种用于对经压缩的经纬度数据进行解压缩的方法。所述方法包括:获取压缩数据组,其中,所述压缩数据组包括压缩参数、基准经纬度数据和经压缩的经纬度数据,其中所述压缩参数包括地理位置精度和索引分层数,并且其中所述经压缩的经纬度数据包括字符;根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;根据所述经压缩的经纬度数据中的字符以及预先存储的位置-字符映射表,确定所述经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;根据所述经压缩的经纬度数据所表示的经纬度在每个层级中的所述区块位置、所述基准经纬度数据、所述地理位置精度和所述索引分层数来计算所述经压缩的经纬度数据所表示的经纬度作为解压缩的经纬度数据。
本发明的又一方面提供了一种用于压缩经纬度数据的装置。所述装置包括:压缩参数获取模块,配置用于获取压缩参数,其中,所述压缩参数包括地理位置精度和索引分层数;经纬度数据集合获取模块,配置用于获取经纬度数据集合;第一区块划分模块,配置用于根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;区块位置计算模块,配置用于针对所述经纬度数据集合中除所述基准经纬度数据以外的待压缩经纬度数据,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置;位置字符映射模块,配置用于根据预先存储的位置-字符映射表得到与所述区块位置相对应的字符,并且根据所述字符获得经压缩的经纬度数据,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;存储模块,配置用于将所述压缩参数、所述基准经纬度数据以及所述经压缩的经纬度数据存储在压缩数据组中。
本发明的又一方面提供了一种用于对经压缩的经纬度数据进行解压缩的装置。所述装置包括:压缩数据组获取模块,配置用于获取压缩数据组,其中,所述压缩数据组包括压缩参数、基准经纬度数据和经压缩的经纬度数据,其中所述压缩参数包括地理位置精度和索引分层数,并且其中所述经压缩的经纬度数据包括字符;第二区块划分模块,配置用于根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;字符位置映射模块,配置用于根据所述经压缩的经纬度数据中的字符以及预先存储的位置-字符映射表,确定所述经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;经纬度数据计算模块,配置用于根据所述经压缩的经纬度数据所表示的经纬度在每个层级中的所述区块位置、所述基准经纬度数据、所述地理位置精度和所述索引分层数来计算所述经压缩的经纬度数据所表示的经纬度作为解压缩的经纬度数据。
本发明的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,执行如上所述的任何方法。
本发明提出的压缩和解压缩经纬度数据的方法、装置和计算机可读存储介质能够将经纬度数据编码为文本字符,符合字符编码集,可以方便地接入任何文本数据;基于多层级的网状结构位置索引可以实现高压缩率;解码性能高,可以独立解码提取压缩数据集中的任意数据个体。
附图说明
通过参考附图阅读下文的详细描述,本发明实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示出了根据本发明的实施方式的用于压缩经纬度数据的方法的流程图;
图2示出了根据本发明的实施方式的用于对经压缩的经纬度数据进行解压缩的方法的流程图;
图3示出了根据本发明的实施方式的用于压缩经纬度数据的装置的框图;
图4示出了根据本发明的实施方式的用于对经压缩的经纬度数据进行解压缩的装置的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
需要注意,虽然本文中使用“第一”、“第二”等表述来描述本发明的实施方式的不同模块、步骤和数据等,但是“第一”、“第二”等表述仅是为了在不同的模块、步骤和数据等之间进行区分,而并不表示特定的顺序或者重要程度。实际上,“第一”、“第二”等表述完全可以互换使用。
如图1所示,本发明的一个实施方式提出了一种用于压缩经纬度数据的方法100。方法100包括步骤S101-S106。
在步骤S101中,获取压缩参数,其中,压缩参数包括地理位置精度和索引分层数。
在一些实施方式中,压缩参数可以是固定的,也可以是可调整的。
在一些实施方式中,压缩参数可以根据使用场景或当前要处理的经纬度数据集合的属性而进行调整,灵活度很高。
为了便于描述,本发明中将地理位置精度记为S。在实际应用中,针对使用场景的不同,对经纬度的精度要求有不同的要求:例如,GPS(Global Positioning System,全球定位系统)的民用级定位误差在10-20米左右。在大多数场景中,在不影响业务的前提下,适当降低精度可以减少数据量,降低能耗,提升性能。例如,对于一个记录行车轨迹的应用,10米的精度可以满足业务需求,即S=10.0米。
为了便于描述,本发明中将索引分层数记为L。索引层级多,有利于提高地理分区的覆盖范围,选择合适的索引分层数可以提升压缩性能。
在步骤S102中,获取经纬度数据集合。
在一些实施方式中,经纬度数据集合可以是有关联的一组经纬度数据。作为示例,当应用软件批量添加用户的足迹时,需要扫描用户的相册,从相册的图片中获取经纬度进行上报。那么用户相册的图片中的经纬度信息就是一个经纬度数据集合。
在步骤S103中,根据地理位置精度和索引分层数,确定与经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在基准地理区域中按照层级划分区块。其中,每个层级包括多个当前层级区块,一个当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是索引分层数,最底层的层级中的区块的大小与地理位置精度相关。
在一些实施方式中,与基准经纬度数据相关联的基准地理区域可以是以基准经纬度数据所表示的基准经纬度为中心点的地理区域。在另一些实施方式中,基准地理区域可以是以基准经纬度作为一个顶点的地理区域。基准地理区域可以具有多种形状,可以包括但不限于正方形、矩形、六边形、菱形等。
例如,当基准地理区域是正方形时,可以将基准地理区域划分为N*N个正方形区块,其中每个正方形区块再划分为M*M个正方形区块,以此类推,直到到达索引分层数的最底层。其中,M和N是大于1的整数,M与N可以相同或者不相同。
例如,当基准地理区域是矩形时,可以将基准地理区域划分为P*Q个矩形区块,其中每个矩形区块再划分为R*S个矩形区块,以此类推,直到到达索引分层数的最底层。其中,P、Q、R、S是大于1的整数,并且P、Q、R、S可以相同或者不相同。
基准地理区域以及所划分的区块的形状,只要满足能够实现多层级划分的条件即可,不限于以上所述的形状。
在一些实施方式中,最底层的区块的大小与地理位置精度相关。例如,当区块是正方形时,地理位置精度可以是区块的边长或者边长的倍数。又例如,当区块是矩形时,地理位置精度可以是矩形的长度或宽度,或者长度或宽度的倍数。本发明在此方面不做限制。
在步骤S104中,针对经纬度数据集合中除基准经纬度数据以外的待压缩经纬度数据,计算待压缩经纬度数据所表示的经纬度在每个层级中的区块位置。
在一些实施方式中,对于经纬度数据集合中的基准经纬度数据,不对其进行压缩。对于除基准经纬度数据以外的待压缩经纬度数据,可以按照数据排列的顺序进行压缩,可以按照数据排列的倒序进行压缩,或者可以按照其他任何顺序进行压缩。
在一些实施方式中,在步骤S104中,可以对经纬度数据集合中的全部待压缩经纬度数据进行计算,也可以对其中的部分待压缩数据进行计算。作为示例,可以根据实际业务需要,有选择性地对其中的部分待压缩数据进行计算。举例而言,可以根据待压缩数据在经纬度数据集合中的顺序进行选择。备选地,也可以根据待压缩数据自身的属性而进行选择。
在一些实施方式中,每个层级中的区块位置可以使用区块在本层级中的行号和列号来表示。
在步骤S105中,根据预先存储的位置-字符映射表得到与区块位置相对应的字符,并且根据字符获得经压缩的经纬度数据。其中,位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系。
在一些实施方式中,如果每一层级中包括相同的行和列,则可以采用相同的位置-字符映射表。当然,每一层级也可以采用不同的位置-字符映射表。
仅作为示例,在某一层级包括4*2个区块的情况下,可以采用8个字符“abcdefgh”来分别索引每个区块。
表1:
A | B | C | D | E | F | G | H |
I | J | K | L | M | N | O | P |
Q | R | S | T | U | V | W | X |
Y | Z | a | b | c | d | e | f |
g | h | i | j | k | l | m | n |
o | p | q | r | s | t | u | v |
w | x | y | z | 0 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | + | / |
以上表1示出了位置-字符映射表的一个具体示例。在该示例中,一个层级中包括8*8个区块,对每一个小区块依次从左往右,从上到下,使用字符进行编号。仅作为示例,字符集可以为“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”,共64个字符。当然,以上表1仅是示例,一个层级中包括的区块数目和布置形式可以根据实际情况做调整,也可以使用其他任何标准字符集中的任何字符来表示,本发明在此方面不做限制。
在一些实施方式中,字符可以是任何标准字符集中的字符。通过使用标准字符集中的字符,压缩的经纬度数据可以很方便地与其他文本数据整合使用。例如可以在嵌入基于文本的JSON(JavaScript Object Notation,JS对象简谱)、XML(eXtensible MarkupLanguage,可扩展标记语言)等网络表示层协议中进行传输。
在步骤S106中,将压缩参数、基准经纬度数据以及经压缩的经纬度数据存储在压缩数据组中。
在一些实施方式中,可以将根据不同的地理位置精度获得的经压缩的经纬度数据存储在不同的压缩数据组中。通过将不同精度的数据分组,可以根据存储和传输的需求而获取相应精度的压缩数据组。例如,经纬度数据在商圈级地理区域的应用和国家级地理区域的应用,可以分别采用不同精度的压缩数据组。
备选地,可以将压缩参数、基准经纬度数据和经压缩的经纬度数据以任何适当的形式进行组织,以便于存储和传输。
通过上述方法100,可以将一组经纬度数据转换为多个层级中的区块位置,继而将区块位置映射为字符。这样经压缩的经纬度数据的编码可以方便地接入任何文本数据,便于在基于文本格式传输的场景下使用。并且,经纬度数据集合通常有一些附属的信息,通常我们用文本标识。例如,“中国”和“中国的国界经纬数据集合”,这对数据需要关联在一起基于文本传输,从而基于文本的经纬度压缩数据可以方便地用于常见的数据传输和存储方式。而且,本发明提出的经纬度数据压缩方法可以具有高压缩率。例如,在索引分层数L=4的情况下,每个经纬度数据被编码为四个字符,极大地压缩了数据存储空间。另外,本发明提出的经纬度数据压缩方法对于每个经纬度数据的编码是相互独立的,没有利用数据之间的关联性,压缩后的经纬度数据也是相互独立的,每个数据可以单独提取使用。
在一些实施方式中,根据基准经纬度数据确定的基准地理区域可以足够大,使得当前经纬度数据集合中的所有经纬度数据对应的经纬度都落入该基准地理区域中。
在另一些实施方式中,基准地理区域可以不限定为能包括集合中的所有经纬度数据对应的经纬度。
在一些实施方式中,在基准地理区域不一定包括集合中的所有经纬度数据对应的经纬度的情况下,计算待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤还可以包括:判断当前待压缩经纬度数据所表示的经纬度是否在基准地理区域中;如果当前待压缩经纬度数据所表示的经纬度不在基准地理区域中,则:停止执行计算当前待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤;在经纬度数据集合中的未压缩经纬度数据中确定新的基准经纬度数据,根据新的基准经纬度数据,确定新的基准地理区域,在新的基准地理区域中重新按照层级划分区块;计算未压缩经纬度数据中除新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。通过这种方式,可以对不在原定基准地理区域中的数据划定新的地理区域,从而基于新的地理区域进行压缩处理。
例如,当某个待压缩经纬度数据所表示的经纬度不在基准地理区域中时,可以停止当前的压缩编码过程,以新的基准经纬度数据确定新的基准地理区域,然后针对未压缩的经纬度数据开始新的一轮压缩编码过程。
通过这种方式,可以保持对经纬度数据集合中的经纬度数据进行顺序压缩,保留原有的顺序。在对数据顺序有严格要求的场景下,可以采用这种方式。
例如,当某个待压缩经纬度数据所表示的经纬度不在基准地理区域中,则可以选择该待压缩经纬度数据作为新的基准经纬度数据。当然,也可以在经纬度数据集合中选择其他未压缩的经纬度数据作为新的基准经纬度数据。
在一些实施方式中,在基准地理区域不一定包括集合中的所有经纬度数据对应的经纬度的情况下,计算待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤还可以包括:判断待压缩经纬度数据所表示的经纬度是否在基准地理区域中;针对在基准地理区域中的待压缩经纬度数据,执行计算待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤;针对不在基准地理区域中的待压缩经纬度数据,执行以下步骤:在不在基准地理区域中的待压缩经纬度数据中确定新的基准经纬度数据;根据新的基准经纬度数据,确定新的基准地理区域,在新的基准地理区域中重新按照层级划分区块;计算不在基准地理区域中的待压缩经纬度数据中除新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。
例如,当待压缩经纬度数据所表示的经纬度不在基准地理区域中时,可以先跳过该待压缩经纬度数据,继续对经纬度数据集合中的其他经纬度数据继续进行压缩编码,待整个集合中的数据都处理完毕之后,再对超出基准地理区域的经纬度数据进行集中处理,确定新的基准经纬度数据,并针对未压缩的经纬度数据开始新的一轮压缩编码过程。
通过这种方式,会最大程度地保证原定基准地理区域内较多的数据在一次压缩编码过程中进行压缩。
在一些实施方式中,计算待压缩经纬度数据所表示的经纬度在每个层级中的区块位置包括:计算待压缩经纬度数据所表示的经纬度在当前层级中所处于的当前层级区块覆盖的区域范围以及当前层级区块的顶点的经纬度;根据待压缩经纬度数据所表示的经纬度、当前层级区块覆盖的区域范围以及当前层级区块的顶点的经纬度来计算待压缩经纬度数据所表示的经纬度在当前层级的下一层级中的区块位置。
在一些实施方式中,区块位置可以用区块在当前层级中的行号和列号来表示。
在一些实施方式中,区域范围可以是距离范围,例如边长、长度、宽度等,也可以是地理范围,例如,经度范围和纬度范围。
在一些实施方式中,计算待压缩经纬度数据所表示的经纬度在当前层级中所处于的当前层级区块覆盖的区域范围以及当前层级区块的顶点的经纬度包括:在当前层级是第一层级时,根据待压缩经纬度数据所表示的经纬度、地理位置精度和索引分层数来计算待压缩经纬度数据所表示的经纬度在第一层级中所处于的当前层级区块覆盖的区域范围以及当前层级区块的顶点的经纬度;在当前层级不是第一层级时,根据待压缩经纬度数据所表示的经纬度在当前层级的上一层级中所处于的上一层级区块的顶点的经纬度以及上一层级区块在上一层级中的区块位置来计算待压缩经纬度数据所表示的经纬度在当前层级中所处于的当前层级区块覆盖的区域范围以及当前层级区块的顶点的经纬度。
在计算第一层级的区块覆盖范围和顶点时,根据基准经纬度数据提供的地理区域范围和第一层级的区块设置。在计算第一层级以下的层级中的区块范围和顶点时,可以借助于之前计算得到的上一层级的区块的相关数据,可以简化计算,提升压缩效率。
在一些实施方式中,基准经纬度数据可以是经纬度数据集合中的第一个未经压缩的经纬度数据。选取第一个未压缩经纬度数据作为基准经纬度数据,便于对经纬度数据按其原有顺序进行操作,在解压缩时也便于保持该原有顺序。尤其在对数据顺序有要求的场景中,这种处理方式可以带来极大便利。
备选地,基准经纬度数据可以是经纬度数据集合中的任一经纬度数据。
备选地,可以对经纬度数据集合中的基准经纬度数据进行预处理,以选择最适合的基准经纬度数据,使得以该基准经纬度数据划定的地理区域可以包括尽可能多的经纬度数据。
在下文中,为了便于清楚简洁地说明本发明的技术构思,提出这样一个假设示例:索引层级数L=4,地理位置精度S=10.0米,基准地理区域是以基准经纬度G为中心点的正方形区域,记为R1。将R1划分为8*8个小正方形区块。对于每一个R1中的小区块R2,同样划分8*8共64个小区块。通过同样的方法,建立R3,直到R(L)。这样,R1描述了以G为中心点,边长为8*8*8*8*10=5120米的正方形区域。G周边在R1区域内的所有经纬度数据点集,都可以定位到第四层,512*512=262144个小格其中的一个。
在上文所述的具体示例的情况下,有以下常量:meterPerLat(每纬度多少米)、meterPerLng(每经度多少米)、latPerMeter(每米多少纬度)、lngPerMeter(每米多少经度)。
为了便于说明,在本说明书中,例如针对给定的点A,以A.lat表示A的纬度,以A.lng表示A的经度。
在示例中,给定基准经纬度G,其纬度表示为G.lat,经度表示为G.lng。假设待压缩的经纬度数据是P。通常,经度的取值在-180.0到+180.0之间;而纬度的取值在-90.0到+90.0之间。为了便于运算对经纬度做预处理使其都成为正数,例如,将经度值加180,将纬度值加90,形成归一化的经度和纬度。
以G为中心建立R1,可得出:R1的边长D1=8∧L*S;第n层级的区块的边长Dn=8∧(L-n+1)*S。其中,8∧L表示8的L次幂,8∧(L-n+1)表示8的(L-n+1)次幂。
则R1的四个顶点的经纬度分别为:
左上顶点的经纬度Prl_topleft=(G.lng-D1/2.0*lngPerMeter,G.lat-D1/2.0*latPerMeter);
右上顶点的经纬度Prl_topright=(G.lng+D1/2.0*lngPerMeter,G.lat-D1/2.0*latPerMeter);
左下顶点的经纬度Prl_downleft=(G.lng-D1/2.0*lngPerMeter,G.lat+D1/2.0*latPerMeter);
右下顶点的经纬度Prl_downright=(G.lng+D1/2.0*lngPerMeter,G.lat+D1/2.0*latPerMeter)。
在以上四个公式中,等号右边括号中,逗号之前的项表示该点的经度,逗号之后的项表示该点的纬度。另外,以左上顶点的经纬度Prl_topleft为例,以Prl_topleft.lat表示左上顶点的纬度,以Prl_topleft.lng表示左上顶点的经度。其他顶点以此类推。
针对未压缩的经纬度数据P,其经纬度分别用P.lng和P.lat来表示,判断P是否在基准地理区域R1中可以包括:
若满足P.lat<=Prl_topleft.lat,且P.lng>=Prl_topleft.lng;并且,P.lng>=Prl_downright.lng且P.lat<=Prl_topleft.lat,则可以判断则P在R1中,否则不在。
P的区块位置可以包括P所在的区块在第一层级中的行号Row和列号Colum。计算待压缩经纬度数据P所表示的经纬度在第一层级中的区块位置可以按照如下公式计算:
行号row=(int)(Prl_topleft.lat-P.lat)/(D1*latPerMeter)
列号col=(int)(P.lng-Pr1_topleft.lng)/(D1*latPerMeter)
其中,(int)是取整运算。
得到行号和列号之后,根据上文表1所示的映射表,可以查到第一层级中的区块对应的字符,例如,相对应的字符为“A”。则该区块在下文中称为A块。
针对第一层级以下的层级,重复以上操作进行编码,直到到达索引深度L。在一些实施方式中,在寻找第二层级编码时,可以直接根据第一层级的行列号计算出A块的经纬度的范围值,无需根据A块的中心点来计算,得到经纬度范围之后按照上述类似的步骤计算第2层编码,其他层类似。
例如,R的经度范围为[lng_min,lng_max],纬度范围为[lat_min,lat_max]。则A区块所能覆盖的经度范围为unit_lng=(lng_max-lng_min)/8;A区块所能覆盖的纬度范围为unit_lat=(lat_max-lat_min)/8。从而,A区块的经度取值范围为[lng_min+unit_lng*col,lng_min+unit_lng*(col+1)],A区块的纬度取值范围为[lat_min+unit_lat*row,lat_min+unit_lat*(row+1)]。
通常我们使用三位小数来表示一个经纬度,如[123.422,39.324],共16个字符。在上文所述的具体示例中,当理想情况下,即所有经纬度数据都能在一个地理分区中进行索引时,而经纬度数据量趋向无穷大,则压缩率可以表示为(16-L)/16。取L=4时,压缩率高达75%。可以看出,本发明提出的压缩经纬度数据的方法具有较高的压缩率。
如图2所示,本发明的一个实施方式提出了一种用于对经压缩的经纬度数据进行解压缩的方法200。方法200包括步骤S201-S204。其中,方法200中与方法100中相同的术语或者概念,已经在上文描述方法100时进行了说明,在此不再赘述。
在步骤S201中,获取压缩数据组。其中,压缩数据组包括压缩参数、基准经纬度数据和经压缩的经纬度数据。其中,压缩参数包括地理位置精度和索引分层数,并且其中经压缩的经纬度数据包括字符。
在一些实施方式中,获取的压缩参数、基准经纬度数据和经压缩的经纬度数据能够以任何形式存储在压缩数据组中。
在步骤S202中,根据地理位置精度和索引分层数,确定与经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在基准地理区域中按照层级划分区块。其中,每个层级包括多个当前层级区块,一个当前层级区块被划分为下一层级中的多个下一层级区块。层级的数目是索引分层数,最底层的层级中的区块的大小与地理位置精度相关。
步骤S202的过程与方法100中的步骤S101基本相同,因此省略其详细说明。
在步骤S203中,根据经压缩的经纬度数据中的字符以及预先存储的位置-字符映射表,确定经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置。其中,位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系。
在一些实施方式中,按照经编码的字符的顺序,参照位置-字符映射表,就可以逐层读出区块的位置。
在步骤S204中,根据经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置、基准经纬度数据、地理位置精度和索引分层数来计算经压缩的经纬度数据所表示的经纬度作为解压缩的经纬度数据。
经纬度数据的解压缩方法200可以对已压缩数据中的任意单条数据进行解压缩,解码性能高。
在一些实施方式中,计算经压缩的经纬度数据所表示的经纬度包括:计算经压缩的经纬度数据所表示的经纬度在最底层的层级中所处于的最底层区块的中心点的经纬度作为经压缩的经纬度数据所表示的经纬度。
在一些实施方式中,计算经压缩的经纬度数据所表示的经纬度在最底层的层级中所处于的最底层区块的中心点的经纬度包括:根据压缩参数确定最底层的层级中的最底层区块的区域范围和顶点的经纬度;根据区域范围和顶点的经纬度计算中心点的经纬度。
解压缩方法200是压缩方法100的逆运算,其具体计算过程可参考方法100的压缩计算过程,在此不再进行详细描述。
本发明提出的经纬度压缩和解压缩方法,可以将一组经纬度数据转换为多个层级中的区块位置,继而将区块位置映射为字符。这样经压缩的经纬度数据的编码可以方便地接入任何文本数据,便于在基于文本格式传输的场景下使用。并且,经纬度数据集合通常有一些附属的信息,通常我们用文本标识。例如,“中国”和“中国的国界经纬数据集合”,这对数据需要关联在一起基于文本传输,从而基于文本的经纬度压缩数据可以方便地用于常见的数据传输和存储方式。而且,本发明提出的经纬度数据压缩方法可以具有高压缩率,例如,在索引分层数L=4的情况下,每个经纬度数据被编码为四个字符,极大地压缩了数据存储空间。另外,本发明提出的经纬度数据压缩和解压缩方法对于每个经纬度数据的编码是相互独立的,没有利用数据之间的关联性,压缩后的经纬度数据也是相互独立的,每个数据可以单独提取和解压缩。
如图3所示,本发明的一个实施方式提出了一种用于压缩经纬度数据的装置300。如图所示,装置300包括压缩参数获取模块301、经纬度数据集合获取模块302、第一区块划分模块303、区块位置计算模块304、位置字符映射模块305、存储模块306。
压缩参数获取模块301可以配置用于获取压缩参数。其中,压缩参数包括地理位置精度和索引分层数。
经纬度数据集合获取模块302可以配置用于获取经纬度数据集合。
第一区块划分模块303可以配置用于根据地理位置精度和索引分层数,确定与经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在基准地理区域中按照层级划分区块。其中,每个层级包括多个当前层级区块,一个当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是索引分层数,最底层的层级中的区块的大小与地理位置精度相关。
区块位置计算模块304可以配置用于针对经纬度数据集合中除基准经纬度数据以外的待压缩经纬度数据,计算待压缩经纬度数据所表示的经纬度在每个层级中的区块位置。
位置字符映射模块305可以配置用于根据预先存储的位置-字符映射表得到与区块位置相对应的字符,并且根据字符获得经压缩的经纬度数据。其中,位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系。
存储模块306可以配置用于将压缩参数、基准经纬度数据以及经压缩的经纬度数据存储在压缩数据组中。
在一些实施方式中,区块位置计算模块304还可以配置用于:判断当前待压缩经纬度数据所表示的经纬度是否在基准地理区域中;如果当前待压缩经纬度数据所表示的经纬度不在基准地理区域中,则:停止执行计算当前待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的操作;在经纬度数据集合中的未压缩经纬度数据中确定新的基准经纬度数据;根据新的基准经纬度数据,确定新的基准地理区域,在新的基准地理区域中重新按照层级划分区块;计算未压缩经纬度数据中除新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。
在一些实施方式中,区块位置计算模块304还可以配置用于:判断待压缩经纬度数据所表示的经纬度是否在基准地理区域中;针对在基准地理区域中的待压缩经纬度数据,执行计算待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的操作;针对不在基准地理区域中的待压缩经纬度数据,执行以下操作:在不在基准地理区域中的待压缩经纬度数据中确定新的基准经纬度数据;根据新的基准经纬度数据,确定新的基准地理区域,在新的基准地理区域中重新按照层级划分区块;计算不在基准地理区域中的待压缩经纬度数据中除新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。
在一些实施方式中,区块位置计算模块304可以包括:范围及顶点计算模块,配置用于计算待压缩经纬度数据所表示的经纬度在当前层级中所处于的当前层级区块覆盖的区域范围以及当前层级区块的顶点的经纬度;下一层级区块位置计算模块,配置用于根据待压缩经纬度数据所表示的经纬度、当前层级区块覆盖的区域范围以及当前层级区块的顶点的经纬度来计算待压缩经纬度数据所表示的经纬度在当前层级的下一层级中的区块位置。
在一些实施方式中,范围及顶点计算模块还可以配置用于:在当前层级是第一层级时,根据待压缩经纬度数据所表示的经纬度、地理位置精度和索引分层数来计算待压缩经纬度数据所表示的经纬度在第一层级中所处于的当前层级区块覆盖的区域范围以及当前层级区块的顶点的经纬度;在当前层级不是第一层级时,根据待压缩经纬度数据所表示的经纬度在当前层级的上一层级中所处于的上一层级区块的顶点的经纬度以及上一层级区块在上一层级中的区块位置来计算待压缩经纬度数据所表示的经纬度在当前层级中所处于的当前层级区块覆盖的区域范围以及当前层级区块的顶点的经纬度。
在一些实施方式中,存储模块306还可以配置用于:将根据不同的地理位置精度获得的经压缩的经纬度数据存储在不同的压缩数据组中。
在一些实施方式中,基准经纬度数据可以是经纬度数据集合中的第一个未经压缩的经纬度数据。
装置300中的各个模块所实现的功能与上文描述的方法100中的步骤相对应,其具体实现和技术效果请参见上文对于方法步骤的描述,在此不再赘述。
如图4所示,本发明的一个实施方式提出了一种用于对经压缩的经纬度数据进行解压缩的装置400。装置400包括压缩数据组获取模块401、第二区块划分模块402、字符位置映射模块403和经纬度数据计算模块404。
压缩数据组获取模块401可以配置用于获取压缩数据组。其中,压缩数据组包括压缩参数、基准经纬度数据和经压缩的经纬度数据。其中压缩参数包括地理位置精度和索引分层数,并且其中经压缩的经纬度数据包括字符。
第二区块划分模块402可以配置用于根据地理位置精度和索引分层数,确定与经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在基准地理区域中按照层级划分区块。其中,每个层级包括多个当前层级区块,一个当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是索引分层数,最底层的层级中的区块的大小与地理位置精度相关。
字符位置映射模块403可以配置用于根据经压缩的经纬度数据中的字符以及预先存储的位置-字符映射表,确定经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置。其中,位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系。
经纬度数据计算模块404可以配置用于根据经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置、基准经纬度数据、地理位置精度和索引分层数来计算经压缩的经纬度数据所表示的经纬度作为解压缩的经纬度数据。
在一些实施方式中,经纬度数据计算模块404可以包括:中心点计算模块,配置用于计算经压缩的经纬度数据所表示的经纬度在最底层的层级中所处于的最底层区块的中心点的经纬度作为经压缩的经纬度数据所表示的经纬度。
在一些实施方式中,中心点计算模块还可以配置用于:根据压缩参数确定最底层的层级中的最底层区块的区域范围和顶点的经纬度;根据区域范围和顶点的经纬度计算中心点的经纬度。
装置400中的各个模块所实现的功能与上文描述的方法200中的步骤相对应,其具体实现和技术效果请参见上文对于方法步骤的描述,在此不再赘述。
在一些实施方式中,本发明提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在由处理器执行时,执行上文所述的任何方法。
在一些实施方式中,本发明还提供了以下技术方案:
方案1.一种用于压缩经纬度数据的方法,所述方法包括:
获取压缩参数,其中,所述压缩参数包括地理位置精度和索引分层数;
获取经纬度数据集合;
根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;
针对所述经纬度数据集合中除所述基准经纬度数据以外的待压缩经纬度数据,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置;
根据预先存储的位置-字符映射表得到与所述区块位置相对应的字符,并且根据所述字符获得经压缩的经纬度数据,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;
将所述压缩参数、所述基准经纬度数据以及所述经压缩的经纬度数据存储在压缩数据组中。
方案2.根据方案1所述的方法,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤还包括:
判断当前待压缩经纬度数据所表示的经纬度是否在所述基准地理区域中;
如果所述当前待压缩经纬度数据所表示的经纬度不在所述基准地理区域中,则:
停止执行计算所述当前待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤;
在所述经纬度数据集合中的未压缩经纬度数据中确定新的基准经纬度数据;
根据所述新的基准经纬度数据,确定新的基准地理区域,在所述新的基准地理区域中重新按照层级划分区块;
计算所述未压缩经纬度数据中除所述新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。
方案3.根据方案1所述的方法,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤还包括:
判断所述待压缩经纬度数据所表示的经纬度是否在所述基准地理区域中;
针对在所述基准地理区域中的待压缩经纬度数据,执行计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤;
针对不在所述基准地理区域中的待压缩经纬度数据,执行以下步骤:
在不在所述基准地理区域中的待压缩经纬度数据中确定新的基准经纬度数据;
根据所述新的基准经纬度数据,确定新的基准地理区域,在所述新的基准地理区域中重新按照层级划分区块;
计算不在所述基准地理区域中的待压缩经纬度数据中除所述新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。
方案4.根据方案1所述的方法,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置包括:
计算所述待压缩经纬度数据所表示的经纬度在所述当前层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度;
根据所述待压缩经纬度数据所表示的经纬度、所述当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度来计算所述待压缩经纬度数据所表示的经纬度在所述当前层级的下一层级中的区块位置。
方案5.根据方案4所述的方法,计算所述待压缩经纬度数据所表示的经纬度在所述当前层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度包括:
在所述当前层级是第一层级时,根据所述待压缩经纬度数据所表示的经纬度、所述地理位置精度和所述索引分层数来计算所述待压缩经纬度数据所表示的经纬度在所述第一层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度;
在所述当前层级不是第一层级时,根据所述待压缩经纬度数据所表示的经纬度在所述当前层级的上一层级中所处于的上一层级区块的顶点的经纬度以及所述上一层级区块在所述上一层级中的区块位置来计算所述待压缩经纬度数据所表示的经纬度在所述当前层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度。
方案6.根据方案1所述的方法,将所述压缩参数、所述基准经纬度数据以及所述经压缩的经纬度数据存储在压缩数据组中包括:
将根据不同的所述地理位置精度获得的经压缩的经纬度数据存储在不同的压缩数据组中。
方案7.根据方案1所述的方法,所述基准经纬度数据是所述经纬度数据集合中的第一个未经压缩的经纬度数据。
方案8.一种用于对经压缩的经纬度数据进行解压缩的方法,所述方法包括:
获取压缩数据组,其中,所述压缩数据组包括压缩参数、基准经纬度数据和经压缩的经纬度数据,其中所述压缩参数包括地理位置精度和索引分层数,并且其中所述经压缩的经纬度数据包括字符;
根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;
根据所述经压缩的经纬度数据中的字符以及预先存储的位置-字符映射表,确定所述经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;
根据所述经压缩的经纬度数据所表示的经纬度在每个层级中的所述区块位置、所述基准经纬度数据、所述地理位置精度和所述索引分层数来计算所述经压缩的经纬度数据所表示的经纬度作为解压缩的经纬度数据。
方案9.根据方案8所述的方法,计算所述经压缩的经纬度数据所表示的经纬度包括:
计算所述经压缩的经纬度数据所表示的经纬度在最底层的层级中所处于的最底层区块的中心点的经纬度作为所述经压缩的经纬度数据所表示的经纬度。
方案10.根据方案9所述的方法,计算所述经压缩的经纬度数据所表示的经纬度在最底层的层级中所处于的最底层区块的中心点的经纬度包括:
根据所述压缩参数确定最底层的层级中的最底层区块的区域范围和顶点的经纬度;
根据所述区域范围和所述顶点的经纬度计算所述中心点的经纬度。
方案11.一种用于压缩经纬度数据的装置,所述装置包括:
压缩参数获取模块,配置用于获取压缩参数,其中,所述压缩参数包括地理位置精度和索引分层数;
经纬度数据集合获取模块,配置用于获取经纬度数据集合;
第一区块划分模块,配置用于根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;
区块位置计算模块,配置用于针对所述经纬度数据集合中除所述基准经纬度数据以外的待压缩经纬度数据,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置;
位置字符映射模块,配置用于根据预先存储的位置-字符映射表得到与所述区块位置相对应的字符,并且根据所述字符获得经压缩的经纬度数据,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;
存储模块,配置用于将所述压缩参数、所述基准经纬度数据以及所述经压缩的经纬度数据存储在压缩数据组中。
方案12.根据方案11所述的装置,所述区块位置计算模块还配置用于:
判断当前待压缩经纬度数据所表示的经纬度是否在所述基准地理区域中;
如果所述当前待压缩经纬度数据所表示的经纬度不在所述基准地理区域中,则:
停止执行计算所述当前待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的操作;
在所述经纬度数据集合中的未压缩经纬度数据中确定新的基准经纬度数据;
根据所述新的基准经纬度数据,确定新的基准地理区域,在所述新的基准地理区域中重新按照层级划分区块;
计算所述未压缩经纬度数据中除所述新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。
方案13.根据方案11所述的装置,所述区块位置计算模块还配置用于:
判断所述待压缩经纬度数据所表示的经纬度是否在所述基准地理区域中;
针对在所述基准地理区域中的待压缩经纬度数据,执行计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的操作;
针对不在所述基准地理区域中的待压缩经纬度数据,执行以下操作:
在不在所述基准地理区域中的待压缩经纬度数据中确定新的基准经纬度数据;
根据所述新的基准经纬度数据,确定新的基准地理区域,在所述新的基准地理区域中重新按照层级划分区块;
计算不在所述基准地理区域中的待压缩经纬度数据中除所述新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。
方案14.根据方案11所述的装置,所述区块位置计算模块包括:
范围及顶点计算模块,配置用于计算所述待压缩经纬度数据所表示的经纬度在所述当前层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度;
下一层级区块位置计算模块,配置用于根据所述待压缩经纬度数据所表示的经纬度、所述当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度来计算所述待压缩经纬度数据所表示的经纬度在所述当前层级的下一层级中的区块位置。
方案15.根据方案14所述的装置,所述范围及顶点计算模块还配置用于:
在所述当前层级是第一层级时,根据所述待压缩经纬度数据所表示的经纬度、所述地理位置精度和所述索引分层数来计算所述待压缩经纬度数据所表示的经纬度在所述第一层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度;
在所述当前层级不是第一层级时,根据所述待压缩经纬度数据所表示的经纬度在所述当前层级的上一层级中所处于的上一层级区块的顶点的经纬度以及所述上一层级区块在所述上一层级中的区块位置来计算所述待压缩经纬度数据所表示的经纬度在所述当前层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度。
方案16.根据方案11所述的装置,所述存储模块还配置用于:
将根据不同的所述地理位置精度获得的经压缩的经纬度数据存储在不同的压缩数据组中。
方案17.根据方案11所述的装置,所述基准经纬度数据是所述经纬度数据集合中的第一个未经压缩的经纬度数据。
方案18.一种用于对经压缩的经纬度数据进行解压缩的装置,所述装置包括:
压缩数据组获取模块,配置用于获取压缩数据组,其中,所述压缩数据组包括压缩参数、基准经纬度数据和经压缩的经纬度数据,其中所述压缩参数包括地理位置精度和索引分层数,并且其中所述经压缩的经纬度数据包括字符;
第二区块划分模块,配置用于根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;
字符位置映射模块,配置用于根据所述经压缩的经纬度数据中的字符以及预先存储的位置-字符映射表,确定所述经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;
经纬度数据计算模块,配置用于根据所述经压缩的经纬度数据所表示的经纬度在每个层级中的所述区块位置、所述基准经纬度数据、所述地理位置精度和所述索引分层数来计算所述经压缩的经纬度数据所表示的经纬度作为解压缩的经纬度数据。
方案19.根据方案18所述的装置,所述经纬度数据计算模块包括:
中心点计算模块,配置用于计算所述经压缩的经纬度数据所表示的经纬度在最底层的层级中所处于的最底层区块的中心点的经纬度作为所述经压缩的经纬度数据所表示的经纬度。
方案20.根据方案19所述的装置,所述中心点计算模块还配置用于:
根据所述压缩参数确定最底层的层级中的最底层区块的区域范围和顶点的经纬度;
根据所述区域范围和所述顶点的经纬度计算所述中心点的经纬度。
方案21.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,执行方案1-10中任一项所述的方法。
尽管在附图中以特定的顺序描述操作,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或是要求执行全部所示的操作以得到期望的结果。在特定环境中,多任务和并行处理可能是有利的。
本发明的方法和装置能够利用标准编程技术来完成,利用基于规则的逻辑或者其他逻辑来实现各种方法步骤。还应当注意的是,此处以及权利要求书中使用的词语“装置”和“模块”意在包括使用一行或者多行软件代码的实现和/或硬件实现和/或用于接收输入的设备。
此处描述的任何步骤、操作或程序可以使用单独的或与其他设备组合的一个或多个硬件或软件模块来执行或实现。在一个实施方式中,软件模块使用包括包含计算机程序代码的计算机可读介质的计算机程序产品实现,其能够由计算机处理器执行用于执行任何或全部的所描述的步骤、操作或程序。
出于示例和描述的目的,已经给出了本发明实施的前述说明。前述说明并非是穷举性的也并非要将本发明限制到所公开的确切形式,根据上述教导还可能存在各种变形和修改,或者是可能从本发明的实践中得到各种变形和修改。选择和描述这些实施例是为了说明本发明的原理及其实际应用,以使得本领域的技术人员能够以适合于构思的特定用途来以各种实施方式和各种修改而利用本发明。
Claims (11)
1.一种用于压缩经纬度数据的方法,其特征在于,所述方法包括:
获取压缩参数,其中,所述压缩参数包括地理位置精度和索引分层数;
获取经纬度数据集合;
根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;
针对所述经纬度数据集合中除所述基准经纬度数据以外的待压缩经纬度数据,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置;
根据预先存储的位置-字符映射表得到与所述区块位置相对应的字符,并且根据所述字符获得经压缩的经纬度数据,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;
将所述压缩参数、所述基准经纬度数据以及所述经压缩的经纬度数据存储在压缩数据组中。
2.根据权利要求1所述的方法,其特征在于,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤还包括:
判断当前待压缩经纬度数据所表示的经纬度是否在所述基准地理区域中;
如果所述当前待压缩经纬度数据所表示的经纬度不在所述基准地理区域中,则:
停止执行计算所述当前待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤;
在所述经纬度数据集合中的未压缩经纬度数据中确定新的基准经纬度数据;
根据所述新的基准经纬度数据,确定新的基准地理区域,在所述新的基准地理区域中重新按照层级划分区块;
计算所述未压缩经纬度数据中除所述新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。
3.根据权利要求1所述的方法,其特征在于,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤还包括:
判断所述待压缩经纬度数据所表示的经纬度是否在所述基准地理区域中;
针对在所述基准地理区域中的待压缩经纬度数据,执行计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置的步骤;
针对不在所述基准地理区域中的待压缩经纬度数据,执行以下步骤:
在不在所述基准地理区域中的待压缩经纬度数据中确定新的基准经纬度数据;
根据所述新的基准经纬度数据,确定新的基准地理区域,在所述新的基准地理区域中重新按照层级划分区块;
计算不在所述基准地理区域中的待压缩经纬度数据中除所述新的基准经纬度数据以外的经纬度数据所表示的经纬度在重新划分的每个层级中的区块位置。
4.根据权利要求1所述的方法,其特征在于,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置包括:
计算所述待压缩经纬度数据所表示的经纬度在所述当前层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度;
根据所述待压缩经纬度数据所表示的经纬度、所述当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度来计算所述待压缩经纬度数据所表示的经纬度在所述当前层级的下一层级中的区块位置。
5.根据权利要求4所述的方法,其特征在于,计算所述待压缩经纬度数据所表示的经纬度在所述当前层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度包括:
在所述当前层级是第一层级时,根据所述待压缩经纬度数据所表示的经纬度、所述地理位置精度和所述索引分层数来计算所述待压缩经纬度数据所表示的经纬度在所述第一层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度;
在所述当前层级不是第一层级时,根据所述待压缩经纬度数据所表示的经纬度在所述当前层级的上一层级中所处于的上一层级区块的顶点的经纬度以及所述上一层级区块在所述上一层级中的区块位置来计算所述待压缩经纬度数据所表示的经纬度在所述当前层级中所处于的当前层级区块覆盖的区域范围以及所述当前层级区块的顶点的经纬度。
6.一种用于对经压缩的经纬度数据进行解压缩的方法,其特征在于,所述方法包括:
获取压缩数据组,其中,所述压缩数据组包括压缩参数、基准经纬度数据和经压缩的经纬度数据,其中所述压缩参数包括地理位置精度和索引分层数,并且其中所述经压缩的经纬度数据包括字符;
根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;
根据所述经压缩的经纬度数据中的字符以及预先存储的位置-字符映射表,确定所述经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;
根据所述经压缩的经纬度数据所表示的经纬度在每个层级中的所述区块位置、所述基准经纬度数据、所述地理位置精度和所述索引分层数来计算所述经压缩的经纬度数据所表示的经纬度作为解压缩的经纬度数据。
7.根据权利要求6所述的方法,其特征在于,计算所述经压缩的经纬度数据所表示的经纬度包括:
计算所述经压缩的经纬度数据所表示的经纬度在最底层的层级中所处于的最底层区块的中心点的经纬度作为所述经压缩的经纬度数据所表示的经纬度。
8.根据权利要求7所述的方法,其特征在于,计算所述经压缩的经纬度数据所表示的经纬度在最底层的层级中所处于的最底层区块的中心点的经纬度包括:
根据所述压缩参数确定最底层的层级中的最底层区块的区域范围和顶点的经纬度;
根据所述区域范围和所述顶点的经纬度计算所述中心点的经纬度。
9.一种用于压缩经纬度数据的装置,其特征在于,所述装置包括:
压缩参数获取模块,配置用于获取压缩参数,其中,所述压缩参数包括地理位置精度和索引分层数;
经纬度数据集合获取模块,配置用于获取经纬度数据集合;
第一区块划分模块,配置用于根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;
区块位置计算模块,配置用于针对所述经纬度数据集合中除所述基准经纬度数据以外的待压缩经纬度数据,计算所述待压缩经纬度数据所表示的经纬度在每个层级中的区块位置;
位置字符映射模块,配置用于根据预先存储的位置-字符映射表得到与所述区块位置相对应的字符,并且根据所述字符获得经压缩的经纬度数据,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;
存储模块,配置用于将所述压缩参数、所述基准经纬度数据以及所述经压缩的经纬度数据存储在压缩数据组中。
10.一种用于对经压缩的经纬度数据进行解压缩的装置,其特征在于,所述装置包括:
压缩数据组获取模块,配置用于获取压缩数据组,其中,所述压缩数据组包括压缩参数、基准经纬度数据和经压缩的经纬度数据,其中所述压缩参数包括地理位置精度和索引分层数,并且其中所述经压缩的经纬度数据包括字符;
第二区块划分模块,配置用于根据所述地理位置精度和所述索引分层数,确定与所述经纬度数据集合中的基准经纬度数据相关联的基准地理区域,在所述基准地理区域中按照层级划分区块,其中,每个层级包括多个当前层级区块,一个所述当前层级区块被划分为下一层级中的多个下一层级区块,层级的数目是所述索引分层数,最底层的层级中的区块的大小与所述地理位置精度相关;
字符位置映射模块,配置用于根据所述经压缩的经纬度数据中的字符以及预先存储的位置-字符映射表,确定所述经压缩的经纬度数据所表示的经纬度在每个层级中的区块位置,其中,所述位置-字符映射表包括每个层级中的每个区块位置与字符之间的映射关系;
经纬度数据计算模块,配置用于根据所述经压缩的经纬度数据所表示的经纬度在每个层级中的所述区块位置、所述基准经纬度数据、所述地理位置精度和所述索引分层数来计算所述经压缩的经纬度数据所表示的经纬度作为解压缩的经纬度数据。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在由处理器执行时,执行权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910120960.4A CN109936372B (zh) | 2019-02-18 | 2019-02-18 | 压缩和解压缩经纬度数据的方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910120960.4A CN109936372B (zh) | 2019-02-18 | 2019-02-18 | 压缩和解压缩经纬度数据的方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109936372A true CN109936372A (zh) | 2019-06-25 |
CN109936372B CN109936372B (zh) | 2020-08-25 |
Family
ID=66985770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910120960.4A Active CN109936372B (zh) | 2019-02-18 | 2019-02-18 | 压缩和解压缩经纬度数据的方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109936372B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900796A (zh) * | 2022-07-15 | 2022-08-12 | 北京太极疆泰科技发展有限公司 | 一种基于北斗短报文传输的经纬度坐标压缩方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1948990A (zh) * | 2006-11-16 | 2007-04-18 | 北京尧天网迅科技有限公司 | 一种对gps定位信息进行压缩的方法 |
CN101271478A (zh) * | 2008-05-07 | 2008-09-24 | 北京航空航天大学 | 基于聚类分块的只读兴趣点数据库压缩存储方法 |
US20170068689A1 (en) * | 2015-09-07 | 2017-03-09 | Casio Computer Co., Ltd. | Geographic coordinate encoding device, method, and storage medium, geographic coordinate decoding device, method, and storage medium, and terminal unit using geographic coordinate encoding device |
CN107273470A (zh) * | 2017-06-06 | 2017-10-20 | 武汉大学 | 基于变粒度快速GeoHash编码的时空模式挖掘方法 |
CN107395209A (zh) * | 2017-07-03 | 2017-11-24 | 北京京东尚科信息技术有限公司 | 数据压缩方法、数据解压缩方法及其设备 |
-
2019
- 2019-02-18 CN CN201910120960.4A patent/CN109936372B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1948990A (zh) * | 2006-11-16 | 2007-04-18 | 北京尧天网迅科技有限公司 | 一种对gps定位信息进行压缩的方法 |
CN101271478A (zh) * | 2008-05-07 | 2008-09-24 | 北京航空航天大学 | 基于聚类分块的只读兴趣点数据库压缩存储方法 |
US20170068689A1 (en) * | 2015-09-07 | 2017-03-09 | Casio Computer Co., Ltd. | Geographic coordinate encoding device, method, and storage medium, geographic coordinate decoding device, method, and storage medium, and terminal unit using geographic coordinate encoding device |
CN107273470A (zh) * | 2017-06-06 | 2017-10-20 | 武汉大学 | 基于变粒度快速GeoHash编码的时空模式挖掘方法 |
CN107395209A (zh) * | 2017-07-03 | 2017-11-24 | 北京京东尚科信息技术有限公司 | 数据压缩方法、数据解压缩方法及其设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900796A (zh) * | 2022-07-15 | 2022-08-12 | 北京太极疆泰科技发展有限公司 | 一种基于北斗短报文传输的经纬度坐标压缩方法 |
CN114900796B (zh) * | 2022-07-15 | 2022-10-21 | 北京太极疆泰科技发展有限公司 | 一种基于北斗短报文传输的经纬度坐标压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109936372B (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105338358B (zh) | 对图像进行解码的方法及装置 | |
US8891886B2 (en) | Method of and apparatus for encoding data | |
CN108804602A (zh) | 一种基于spark的分布式空间数据存储计算方法 | |
CN103136371A (zh) | 多源空间数据的剖分标识生成方法以及数据检索方法 | |
CN105786942B (zh) | 一种基于云平台的地理信息存储系统 | |
CN104657436A (zh) | 基于MapReduce的静态瓦片金字塔并行构建方法 | |
CN105528384A (zh) | 信息的推送方法和装置 | |
CN104012097A (zh) | 用于压缩和解压缩数据的方法与装置 | |
CN105933708B (zh) | 一种数据压缩和解压缩的方法和装置 | |
CN106325756B (zh) | 一种数据存储、数据计算方法和设备 | |
CN103187978A (zh) | 一种矢量地图数据压缩及解压缩的方法和装置 | |
CN106021567A (zh) | 一种基于Hadoop的海量矢量数据划分方法及系统 | |
CN110413721B (zh) | 一种矢量地图的生成方法及装置 | |
CN103995684A (zh) | 超高分辨率平台下的海量影像并行处理显示方法及系统 | |
CN113014903B (zh) | 点云邻居确定、点云预测、点云编码、点云解码方法及设备 | |
CN102305632B (zh) | 一种地图信息快速显示方法 | |
CN110390075A (zh) | 矩阵预处理方法、装置、终端及可读存储介质 | |
CN104537024B (zh) | 一种海量位置签到数据的可视化方法 | |
CN108573000A (zh) | 一种数据展示方法、装置、系统及电子设备 | |
CN110110132A (zh) | 一种建立空间网格体系的方法、装置及遥感影像处理系统 | |
CN109936372A (zh) | 压缩和解压缩经纬度数据的方法、装置和存储介质 | |
CN111666508A (zh) | 经纬度对应的详细地址提取方法及装置 | |
CN115661396A (zh) | 一种基于全球网格划分的地图要素注记显示方法及系统 | |
CN102156719A (zh) | 全球导航系统的观测值文件编解码方法 | |
CN102867023B (zh) | 一种栅格数据的存储、读取方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |