本发明涉及位置服务
技术领域:
,尤其涉及一种用于统计地理围栏内移动设备数量的方法、装置和计算设备。
背景技术:
:随着移动互联网的发展,移动设备例如手机、平板电脑、可穿戴设备等越来越普及,极大地方便了人们的生活。用户在移动设备上使用某个应用时,会产生一系列状态数据,例如应用信息、移动设备信息、环境信息、位置信息等。大量移动设备的使用产生了海量的数据,通过对海量数据的处理即可以实现数据变现。在数据变现中,提取用户画像(即用户的特征分布情况)、尤其是某些特定围栏区域内的用户画像,对零售商、房产商以及消费者都有重要的意义。例如,通过统计某个商场内的用户画像,商场的经营者可以分析消费者的性别、年龄构成,从而可以实现更精准、定向的销售活动。又例如,消费者可以通过统计某个小区的用户画像来实现更好的房产选址。在统计特定区域内的用户画像时,需要判断移动设备是否位于围栏区域中。现有方法多采用引射线法来判断设备是否位于围栏区域,而在大数据的条件下,引射线法十分耗时。技术实现要素:为此,本发明提供一种统计移动设备数量的方法、装置和计算设备,以力图解决或至少缓解上面存在的问题。根据本发明的一个方面,提供一种统计移动设备数量的方法,在计算设备中执行,计算设备中存储有多个移动设备信息,每个移动设备信息包括收集该移动设备信息时的时间信息、该移动设备所处的地区、该移动设备位置的位置编码以及与该移动设备相关的一个或多个特征信息,该方法包括步骤:接收用户请求,用户请求包括特定地区信息、特定时间信息、一个或多个围栏区域以及一个或多个特定条件,其中,特定条件为对所述一个或多个特征信息的限定,并且所述一个或多个围栏区域位于所述特定地区内;确定所述一个或多个围栏区域中每一个围栏区域所对应的位置编码集,每个位置编码集包括一个或多个位置编码;根据所接收到的用户请求中的特定地区信息和特定时间信息,从已存储的多个移动设备信息中提取出多个目标移动设备信息;对于所提取出的所有多个目标移动设备信息,将每个特征信息转化为以位置编码为索引的多个位图,其中,每个位图所包括的位数为所述多个目标移动设备的数量;根据位置编码集和特定条件选定所需要的位图;对选定的位图进行位运算从而获得满足用户请求的移动设备数量。可选地,在根据本发明的统计移动设备数量的方法中,特征信息包括:机主性别、机主所属年龄段。可选地,在根据本发明的统计移动设备数量的方法中,当用户请求中包括一个围栏区域时,所述特定条件包括:缺省值、特定性别、特定年龄段,其中,当所述特定条件为缺省值时,所述方法适于统计在特定时间内该围栏区域中所包括的移动设备数量;当用户请求中包括多个围栏区域时,所述特定条件包括:特定性别、特定年龄段、位于或不位于特定的围栏区域。可选地,在根据本发明的统计移动设备数量的方法中,确定每一个围栏区域所对应的位置编码集的步骤包括:确定围栏区域的最小外接矩形的左上角顶点的经纬度坐标;根据预设的位置编码的长度确定横向偏移量和纵向偏移量;确定所述围栏区域内的目标位置点的位置编码,将该位置编码加入位置编码集,其中,所述目标位置点为距离所述最小外接矩形的左上角顶点的横向距离为所述横向偏移量的整数倍的位置点,以及距离所述最小外接矩形的左上角顶点的纵向距离为所述纵向偏移量的整数倍的位置点。可选地,在根据本发明的统计移动设备数量的方法中,确定所述围栏区域内的目标位置点的位置编码的步骤包括:确定目标位置点的经纬度坐标;将目标位置点的经纬度坐标转化为位置编码。可选地,在根据本发明的统计移动设备数量的方法中,移动设备的位置编码为该移动设备的经纬度坐标所对应的GeoHash编码;在确定所述围栏区域内的目标位置点的位置编码时,采用GeoHash编码算法将目标位置点的经纬度坐标转化为位置编码。可选地,在根据本发明的统计移动设备数量的方法中,从所述已存储的多个移动设备信息中提取出多个目标移动设备信息的步骤包括:判断所述多个目标移动设备的数量是否大于预定阈值,若是,则从所述多个目标移动设备中随机无放回地抽取预定比例的目标移动设备,提取抽取到的目标移动设备的目标移动设备信息;对选定的位图进行位运算从而获得满足用户请求的移动设备数量的步骤包括:将对选定的位图进行位运算所得的统计结果除以所述预定比例,从而获得满足用户请求的移动设备的数量。可选地,在根据本发明的统计移动设备数量的方法中,位运算包括与、或、非。根据本发明的一个方面,提供一种统计移动设备数量的装置,驻留于计算设备中,所述计算设备中存储有多个移动设备信息,每个移动设备信息包括收集该移动设备信息时的时间信息、该移动设备所处的地区、该移动设备位置的位置编码以及与该移动设备相关的一个或多个特征信息,所述装置包括:交互模块,适于接收用户请求,所述用户请求包括特定地区信息、特定时间信息、一个或多个围栏区域以及一个或多个特定条件,其中,所述特定条件为对所述一个或多个特征信息的限定,并且所述一个或多个围栏区域位于所述特定地区内;围栏编码模块,适于确定所述一个或多个围栏区域中每一个围栏区域所对应的位置编码集,每个位置编码集包括一个或多个位置编码;信息提取模块,适于根据所接收到的用户请求中的特定地区信息和特定时间信息,从所述已存储的多个移动设备信息中提取出多个目标移动设备信息;位图生成模块,适于对于所提取出的所有多个目标移动设备信息,将每个特征信息转化为以位置编码为索引的多个位图,其中,每个位图所包括的位数为所述多个目标移动设备的数量;以及统计模块,适于根据所述位置编码集和所述特定条件选定所需要的位图,对选定的位图进行位运算从而获得满足用户请求的移动设备数量。根据本发明的一个方面,提供一种计算设备,包括如上所述的统计移动设备数量的装置。根据本发明的技术方案,计算设备中存储有各移动设备的位置编码(位置编码例如可以是经纬度坐标所对应的GeoHash编码);对于用户设定的围栏区域,将该围栏区域转化成一组位置编码集,位置编码集中包括一个或多个位置编码,即,采用位置编码来对各围栏区域建立索引。当移动设备的位置编码属于围栏区域所对应的位置编码集时,即可判定该移动设备位于该围栏区域中。该方案大幅度加快了围栏判断的过程,避免了采用引射线法依次判断每一个移动设备的经纬度坐标是否属于围栏区域所带来的时间和空间消耗。此外,将移动设备的特征信息转化为以位置编码为索引的多个位图,可以方便地实现不同围栏区域之间的交叉统计,加快计算速度。将位图存于内存中,通过对位图进行位运算(与、或、非)即可以得出围栏区域中满足特定条件的移动设备的数量,也大大减少了时间及空间消耗。此外,当目标移动设备的数量过多时,首先对目标移动设备进行随机无放回抽样,减少了参与运算的数据量,从而加快了计算速度、减少了空间消耗,同时也不会损失统计的准确度。附图说明为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。图1示出了根据本发明一个实施例的网络系统100的示意图;图2示出了根据本发明一个实施例的计算设备200的结构图;图3示出了根据本发明一个实施例的统计移动设备数量的装置300的结构图;图4示出了根据本发明一个实施例的获取围栏区域内的目标位置点的位置编码的示意图;图5示出了根据本发明另一个实施例的统计移动设备数量的装置500的结构图;图6示出了根据本发明一个实施例的统计移动设备数量的方法600的流程图;以及图7示出了根据本发明另一个实施例的统计移动设备数量的方法700的流程图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了根据本发明一个实施例的网络系统100的示意图。图1所示的网络系统100包括计算设备200、数据库110、用户端120以及多个移动设备130~160。应当指出,图1中的网络系统100仅是示例性的,在具体的实践情况中,网络系统100中可以有不同数量的计算设备、数据库、用户端和移动设备,本发明对网络系统中所包括的计算设备、数据库、用户端以及移动设备的数量不做限制。计算设备200可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和WEB服务器等,也可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。用户端120可以是桌面计算机、笔记本计算机、手机、平板电脑等可以接入互联网并配置有输入输出装置的设备。移动设备130~160可以是诸如手机、平板电脑、笔记本电脑、电视盒子、可穿戴设备等可以接入互联网的设备。用户端120和移动设备130~160可以以有线的方式与计算设备200建立连接,也可以通过3G、4G、WiFi、个人热点、IEEE802.11x、蓝牙等无线的方式与计算设备200建立连接。移动设备中通常安装了多个应用(即app),某些应用的代码中嵌入了js脚本或植入了第三方的sdk(softwaredevelopmentkit,软件开发工具包),当用户使用这些应用时,js或sdk会采集用户使用该应用时的状态数据,例如应用名、当前时间、移动设备mac、移动设备所处的地区、移动设备的经纬度坐标、连接的wifi、wifi信号强度、连接的基站、基站的信号强度、机主性别、机主所属年龄段等,并将采集到的数据发送至计算设备200。计算设备200中包括数据处理装置210,适于对采集到的数据进行加工和处理。数据处理装置210可以体现为驻留于计算设备中的一个或多个应用或插件,本发明对数据处理装置210在计算设备200中的存在形式不做限制。应当指出,并不是每一次采集都会获取如前所述的每一项信息。在这种情况下,数据处理装置210可以对数据进行补全,以使采集到的信息更加完整。例如,在用户使用某个应用时,没有采集到移动设备的经纬度坐标,或没有采集到机主性别以及年龄段的信息。这时,数据处理装置210可以根据移动设备的环境信息(即wifi连接信息、基站连接信息等)来确定移动设备的经纬度坐标;或采用相关算法来推知机主的性别及年龄段。又例如,数据处理装置210可以根据设备mac来确定设备ID,设备ID是数据库中用于标识移动设备的编号,一个设备mac唯一对应于一个设备ID。设备ID在数据库中是一个从1开始逐一递增的整数,即计算设备200采集到的第一个移动设备的设备ID为1,采集到的第二个移动设备的设备ID为2,以此类推。计算设备200可以在不同的时间点采集到同一个移动设备的多条使用状态数据。当计算设备200采集到某个移动设备的某一条使用状态数据时,数据处理装置210从状态数据中提取出设备mac,查找数据库中是否存在具有上述设备mac的移动设备,若是,则该移动设备的设备ID即为数据库中该设备mac所对应的设备ID;若否,则获取目前数据库中最大的设备ID,在其基础上增加1,作为该移动设备的设备ID。又例如,数据处理装置210还可以根据移动设备的位置,更具体地,根据移动设备的经纬度坐标来确定位置编码。位置编码是一种便于实现位置检索的字符串,每一个经纬度坐标对应于一个位置编码。根据一种实施例,对于一个经纬度坐标,可以采用GeoHash编码算法来将其转化为位置编码。Geohash编码算法的主要思想是采用二分法来将某个位置点的经度和纬度分别转化成二进制串,随后将两个二进制合并,并转化成字符串。GeoHash编码过程如下:1)将经度转化为二进制串例如,按照以下步骤将经度116.389550转化为二进制串:地球的经度区间为[-180,180],定义西边为0,东边为1(应当指出,此处0、1所对应的方位可由本领域技术人员自行定义,也可以将东边定义为0,西边定义为1);将区间[-180,180]二分为[-180,0)、[0,180],116.389550∈[0,180],记为1;将区间[0,180]二分为[0,90)和[90,180],116.389550∈[90,180],记为1;将区间[90,180]二分为[90,135)、[135,180],116.389550∈[90,135),记0;以此类推,可以产生一个由数字0和1组成的二进制序列,序列的长度可以自行设置。例如,将序列长度设为10,那么经度116.389550所对应的二进制串为1101001011。2)将纬度转化成二进制串例如,按照以下步骤对纬度39.928167进行编码:地球的维度区间为[-90,90],定义北边为0,南边为1(应当指出,此处0、1所对应的方位可由本领域技术人员自行定义,也可以将南边定义为0,北边定义为1);将区间[-90,90]进行二分为[-90,0)和[0,90],39.928167∈[0,90],记为0;将区间[0,90]二分为[0,45)和[45,90],39.928167∈[0,45),记为1;将区间[0,45)二分为[0,22.5)和[22.5,45),39.928167∈[22.5,45),记为0;以此类推,可以产生一个由数字0和1组成的二进制序列,序列的长度可以自行设置。例如,将序列长度设为10,那么纬度39.928167所对应的二进制串为0100011100。3)将经度、纬度的二进制串合并奇数位放经度,偶数位放纬度。例如,将经度编码1101001011和纬度编码0100011100合并,其结果为10110010000111011010。4)生成位置编码将合并得出的二进制串10110010000111011010转化为字符串。例如,将上述二进制串中的每四位分为一组,将其转化为字符,不足四位则在末位补0。四位二进制串与字符之间的对应关系可以自行定义,例如定义以下编码对照表:表1二进制串00000001001000110100010101100111编码abcdefgh二进制串10001001101010111100110111101111编码ijklmnop则二进制串10110010000111011010可以编码为字符串lcbnk,即经纬度坐标(116.389550,39.928167)所对应的位置编码为lcbnk。应当指出,尽管上述例子中在编码时将二进制串中的每四位分为一组,在其他的实施例中,也可以将每一组所包含的位数设为其他数值,本发明对编码时二进制串的划分方式不做限制。此外,表1中所示的对应关系仅是示例性的,本领域技术人员也可以设置其他的编码对照表,本发明对二进制串与字符之间的对应关系不做限制。例如,本领域技术人员也可以设置将二进制串中的每五位分为一组,每一组采用Base32编码进行编码。应当指出,此处所述的数据处理装置210仅用于示例性地说明计算设备200所具有的数据分类、数据处理等功能,本发明对数据处理装置210的具体功能及其处理逻辑不做限制。计算设备200完成了数据的分类和处理后,将数据存储于数据库110中。应当指出,数据库110可以作为本地数据库驻留于计算设备200中,也可以作为远程数据库设置于计算设备200之外,本发明对数据库110的部署方式不做限制。数据在数据库110中体现为以移动设备ID为索引的移动设备信息记录,移动设备信息包括收集该移动设备信息时的时间信息、该移动设备所处的地区、该移动设备位置的位置编码、与该移动设备相关的一个或多个特征信息(例如机主性别、机主所属年龄段)等。根据一种实施例,计算设备200中还驻留有统计移动设备数量的装置300,适于统计在特定时间内的一个或多个围栏区域中所包括的满足特定条件的移动设备的数量。当用户发起统计移动设备数量的请求时,装置300可以通过一系列处理和计算得出统计结果,并通过计算设备200的输出接口将统计结果发送给用户端。图2示出了根据本发明一个实施例的计算设备200的结构图。在基本配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据226。在一些实施方式中,应用222可以布置为在操作系统上利用程序数据226进行操作。计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置102经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。在本发明中,计算设备200的应用222中包括统计移动设备数量的装置300,适于统计在特定时间内的一个或多个围栏区域中所包括的满足用户所设置的特定条件的移动设备的数量。如图3所示,装置300包括交互模块310、围栏编码模块320、信息提取模块330、位图生成模块340以及统计模块350。交互模块310适于与用户端120进行通信,接收用户对于统计移动设备数量的请求,以及将装置300得出的统计结果反馈给客户。例如,交互模块310可以在用户的浏览器中渲染出一个页面,由用户在页面中设置各项参数,以提交用户请求。基于用户请求,装置300可以完成围栏区域内移动设备数量的统计,并将统计结果在网页中显示出来。交互模块310适于接收用户请求,用户请求包括特定地区信息、特定时间信息、一个或多个围栏区域以及一个或多个特定条件。特定地区为用户感兴趣的地区,例如,特定地区可以是一个市级行政区例如北京市,或一个县级行政区例如东城区。特定地区可以由用户设置,或由交互模块310来通过用户端的IP地址、GPS定位等信息来确定用户所处的地区,并将用户所处的地区作为特定地区。特定时间是用户感兴趣的时间范围,例如,特定时间可以是当前日期的前一周的时间范围,也可以是当天的时间范围。围栏区域是位于特定地区内的一块较小的用户感兴趣的区域,例如,围栏区域可以是特定地区内的一个商圈,或者是一个居民小区。参见前述对网络系统100的描述,数据库中存储有多个移动设备信息,每个移动设备信息均包括与该移动设备相关的一个或多个特征信息,特征信息例如可以是机主性别、机主所属年龄段、机主职业、机主学历等等。特定条件是对特征信息的限定,即特定条件可以选定用户所感兴趣的特征信息。根据一种实施例,移动设备的特征信息包括机主性别和机主所属年龄段。相应地,当用户设定了一个围栏区域时,特定条件包括:缺省值、特定性别、特定年龄段。当用户将特定条件设置为缺省值时,装置300适于统计在特定时间内该围栏区域中所包括的移动设备的数量。当用户将特定条件设置为特定性别和/或特定年龄段时,装置300适于统计在特定时间内该围栏区域中满足特定性别和/或特定年龄段的移动设备的数量。例如,特定条件可以是特定年龄段20~30,即用户想要统计在特定时间内围栏区域中机主年龄为20~30之间的移动设备的数量。当用户设定了多个围栏区域时,特定条件包括:特定性别、特定年龄段、位于或不位于特定的围栏区域。例如,对于用户设定的围栏区域A、B、C,用户设置的特定条件可以是:位于A和B,但不位于C。综合以上说明,例如,用户想要统计北京市最近三天内同时去过商圈A和商圈B的女性的数量,则在该用户请求中,特定地区为北京市,特定时间为最近三天,两个围栏区域分别为商圈A、商圈B,两个特定条件分别为同时位于商圈A和商圈B、女性。交互模块310接收用户请求后,对于用户设置的一个或多个围栏区域,围栏编码模块320确定其中每一个围栏区域所对应的位置编码集,其中,每个位置编码集包括一个或多个位置编码。根据一种实施例,围栏编码模块320按照以下步骤来确定每一个围栏区域的位置编码集:1、确定围栏区域的最小外接矩形的左上角顶点的经纬度坐标。如图4所示,不规则多边形410的最小外接矩形为矩形420,矩形420的左上角顶点的经纬度坐标为(i1,j1)。2、根据预设的位置编码的长度确定横向偏移量和纵向偏移量。位置编码是一种便于实现位置检索的字符串。根据一种实施例,位置编码可以是GeoHash编码串。位置编码能够定位的精度与位置编码的长度有关,位置编码的长度越长,其定位的精度越高。当位置编码为采用Base32编码进行编码的GeoHash编码时,位置编码的长度与定位误差的关系如表2所示:表2由表2可知,当位置编码为采用Base32编码进行编码的GeoHash编码时,7位的位置编码的定位误差大概为76米,即7位的位置编码的定位范围为152米(76*2)。将横向偏移量记为位置编码在经度方向上的定位范围,纵向偏移量为位置编码在纬度方向上的定位范围。则对于采用Base32的GeoHash编码算法所得的7位的位置编码,其横向偏移量和纵向偏移量均为152米。除了可以参考表2之外,横向偏移量和纵向偏移量也可以按照以下方法计算:首先,确定经度所对应的二进制串的度数的精度,和纬度所对应的二进制串的度数的精度。随后,参考表3,可以得到经度、纬度所对应的定位范围,从而确定横向偏移量和纵向偏移量。表33、获取围栏区域内的目标位置点的位置编码,并将该位置编码加入位置编码集。其中,目标位置点指的是距离最小外接矩形的左上角顶点的横向距离为横向偏移量的整数倍的位置点,以及距离最小外接矩形的左上角顶点的纵向距离为纵向偏移量的整数倍的位置点。根据一种实施例,在获取围栏区域内的目标位置点的位置编码时,首先获取目标位置点的经纬度坐标,随后将目标位置点的经纬度坐标转化为位置编码。根据一种实施例,可以采用GeoHash编码算法将经纬度坐标转化为位置编码。将经纬度坐标转化为位置编码的具体过程可以参考前述对GeoHash编码算法的描述,此处不再赘述。例如,在图4中,矩形420的左上角顶点的经纬度坐标为(i1,j1),i0、j0分别为横向、纵向偏移量。虚线与矩形420的左边与上边的交点、以及虚线与虚线的交点都是目标位置点,位于围栏区域内的目标位置点为图中用黑色实心圆所表示的那些位置点。将黑色实心圆所表示的目标位置点的经纬度坐标转化为位置编码,并将该位置编码加入位置编码集。应当指出,上述对围栏编码模块320的描述旨在讲述确定每一个围栏区域的位置编码集的原理。而在实际的代码实现中,一种可能的实现方式是,需要确定围栏区域的最小外接矩形的左上角顶点和右下角顶点的经纬度坐标,从左上角顶点开始,到右下角顶点为止,根据横向偏移量和纵向偏移量对最小外接矩形中的点进行经度方向和纬度方向上的遍历,确定目标位置点的位置编码,从而进一步确定围栏区域所对应的位置编码集。信息提取模块430适于根据交互模块310所接收到的用户请求中的特定地区信息和特定时间信息,从已计算设备200所连接的数据库110中所存储的多个移动设备信息中提取出多个目标移动设备信息。移动设备信息包括时间信息、移动设备所处的地区、移动设备的位置编码以及与该移动设备相关的一个或多个特征信息。而此处,由于信息提取模块430已经根据用户请求中的特定地区信息和特定时间信息对移动设备进行了筛选,那么筛选出的目标移动设备均满足上述特定地区信息和特定时间信息,相应地,则没有必要再提取目标移动设备的时间信息和所处的地区,即所提取的目标移动设备信息中不包括目标移动设备的时间信息和所处的地区,而仅包括目标移动设备的位置编码和特征信息即可。应当指出,目标移动设备信息中所包括的位置编码的格式与围栏编码模块320所确定的位置编码集中的位置编码的格式相同,例如,移动设备的位置编码和围栏区域所对应的位置编码集中的位置编码均为GeoHash编码。根据一种实施例,特征信息包括:机主性别和机主所属年龄段。当然,除了上述两个个特征信息项之外,特征信息还可以包括其他信息项,例如机主职业、机主学历,等等,本发明对特征信息中所包括的具体信息项不做限制。信息提取模块430提取出目标移动设备信息后,位图生成模块440对于所提取出的所有多个目标移动设备信息,将每个特征信息转化为以位置编码为索引的多个位图(Bitmap),其中,一个位置编码下的一个特征信息的一个取值对应于一个位图,每个位图中所包括的bit位数为目标移动设备的数量。例如,特征信息包括机主性别和机主所属年龄段,其中,机主性别的取值包括男和女,机主所属年龄段的取值包括0~20,20~40,40~60,60以上。信息提取模块430提取到以下目标移动设备信息,每一个目标移动设备信息对应于一个向量,向量中的数据依次为目标移动设备ID、机主性别、机主所属年龄段、位置编码:[移动设备1,男,20~40,abcdef][移动设备1,男,20~40,aaabbb][移动设备2,女,0~20,aaabbb][移动设备3,女,40~60,aaabbb][移动设备5,男,60以上,abcdef][移动设备6,女,20~40,aaabbb]上述目标移动设备信息中包括两个位置编码,即abcdef和aaabbb,每一个位置编码均对应于男、女、0~20,20~40,40~60,60以上六个位图;上述目标移动设备信息中包括5个移动设备,即每一个位图包括5个bit。例如,位置编码abcdef和机主性别为男性对应于位图[1,0,0,1,0],其中,位图中的每一位依次表示目标移动设备1、2、3、5、6的机主是否为男性,bit位为1表示是,0表示不是。同理,上述特征信息可以转化为以下12个位图:abcdef-男对应于Bitmap1=[1,0,0,1,0]abcdef-女对应于Bitmap2=[0,0,0,0,0]abcdef-0~20对应于Bitmap3=[0,0,0,0,0]abcdef-20~40对应于Bitmap4=[1,0,0,0,0]abcdef-40~60对应于Bitmap5=[0,0,0,0,0]abcdef-60以上对应于Bitmap6=[0,0,0,1,0]aaabbb-男对应于Bitmap7=[1,0,0,0,0]aaabbb-女对应于Bitmap8=[0,1,1,0,1]aaabbb-0~20对应于Bitmap9=[0,1,0,0,0]aaabbb-20~40对应于Bitmap10=[1,0,0,0,1]aaabbb-40~60对应于Bitmap11=[0,0,1,0,0]aaabbb-60以上对应于Bitmap12=[0,0,0,0,0]根据一种实施例,位图生成模块340生成多个位图之后,将位图存入Redis内存数据库,加快数据读取速度,从而减少装置300的统计移动设备数量所消耗的时间。位图生成模块340将特征信息转化为多个位图后,统计模块350根据围栏编码模块320所确定的位置编码集和用户请求中的特定条件来选定所需要的位图,并对选定的位图进行位运算,从而获得满足用户请求的移动设备数量。根据一种实施例,上述位运算包括与(AND)、或(OR)、非(NOT)。以下是针对几种比较常见的用户请求的移动设备数量的统计方法。为了叙述方便,以下用户请求中省略了特定地区信息和特定时间信息,但是应当指出,以下用户请求中均包括特定地区信息和特定时间信息。1)统计单个围栏区域内移动设备的数量(特定条件=“缺省值”)由围栏编码模块320确定围栏区域所对应的位置编码集S=[s1,s2,…,si,…,sn],其中,n为位置编码集S中所包括的位置编码的个数,si为位置编码集中的一个位置编码,1≤i≤n。统计模块350获取S中的每一个位置编码所对应的各性别的位图,即对于S中的每一个位置编码,获取“该位置编码-男”所对应的位图,以及“该位置编码-女”所对应的位图。将获取到的所有位图做OR运算,计算结果中包括的“1”的数量即为该围栏内移动设备的数量。应当指出,选定的位图以及对选定的位图所进行的计算方式并不是唯一的。除了上述对位置编码集中的每一个位置编码所对应的各性别的位图做OR运算之外,还可以对位置编码集中的每一个位置编码所对应的各年龄段的位图做OR运算。二者得出的统计结果是相同的,只是计算效率上会有差别。例如,用户设定的围栏区域仅对应一个位置编码,即位置编码集S=[aaabbb]。统计模块350获取位置编码aaabbb所对应的各性别的位图,即Bitmap7=[1,0,0,0,0]和Bitmap8=[0,1,1,0,1],对这两个位图做OR运算,得到结果[1,1,1,0,1],该结果中有4个“1”,即用户设定的围栏区域内有4个移动设备。除了上述计算方法之外,统计模块350还可以获取位置编码aaabbb所对应的各年龄段的位图,即Bitmap9=[0,1,0,0,0]、Bitmap10=[1,0,0,0,1]、Bitmap11=[0,0,1,0,0]以及Bitmap12=[0,0,0,0,0],对这4个位图做OR运算,得到结果[1,1,1,0,1],该结果中有4个“1”,即用户设定的围栏区域内有4个移动设备。显然,上述两种方法的统计结果是相同的,只是在采用年龄段的位图进行计算时,参与计算的位图数量更多一些,相应地计算速度会稍慢一些。2)统计单个围栏区域内机主为特定性别的移动设备的数量(特定条件=“特定性别”)由围栏编码模块320确定围栏区域所对应的位置编码集S=[s1,s2,…,si,…,sn],其中,n为位置编码集S中所包括的位置编码的个数,si为位置编码集中的一个位置编码,1≤i≤n。统计模块350获取S中的每一个位置编码所对应的特定性别的位图,即对于S中的每一个位置编码,获取“该位置编码-男”所对应的位图,或“该位置编码-女”所对应的位图。将获取到的所有位图做OR运算,计算结果中包括的“1”的数量即为该围栏内机主为特定性别的移动设备的数量。3)统计单个围栏内机主为特定性别且属于特定年龄段的移动设备的数量(特定条件=“特定性别”+“特定年龄段”)由围栏编码模块320确定围栏区域所对应的位置编码集S=[s1,s2,…,si,…,sn],其中,n为位置编码集S中所包括的位置编码的个数,si为位置编码集中的一个位置编码,1≤i≤n。统计模块350获取S中的每一个位置编码所对应的特定性别的位图,以及每一个位置编码所对应的特定年龄段的位图。将获取到的特定性别的位图做OR运算,将获取到的特定年龄段的位图做OR运算,并将以上两个OR运算的计算结果再做AND运算,AND运算的计算结果中所包括的“1”的数量即为该围栏内机主为特定性别且属于特定年龄段的移动设备的数量。4)统计同时位于多个围栏内的移动设备的数量(特定条件=“位于多个围栏区域”)对于用户设定的多个围栏区域,按照1)中所述的方法,分别计算出每个围栏内的移动设备的数量所对应的结果位图,然后将每个围栏的结果位图做AND运算,AND运算结果中所包括的“1”的数量即为同时位于多个围栏内的移动设备的数量。5)统计同时位于多个围栏内的机主为特定性别的移动设备的数量(特定条件=“位于多个围栏区域”+“特定性别”)按照2)中所述的方法,分别计算出每个围栏区域内的机主为特定性别的移动设备的数量所对应的结果位图,然后对每个围栏的结果位图做AND运算,AND运算结果中所包括的“1”的数量即为同时位于多个围栏内的机主为特定性别的移动设备的数量。6)统计位于A围栏区域但不位于B围栏区域的移动设备的数量(特定条件=“位于A围栏区域但不位于B围栏区域”)按照1)中所述的方法,分别计算出每个围栏区域内的移动设备的数量所对应的结果位图。对B的结果位图做NOT运算,再将NOT运算的结果与A的结果位图做AND运算(即),最终的运算结果中所包括的“1”的数量即为位于A围栏区域但不位于B围栏区域的移动设备的数量。除了上述1)~6)所示的常见的用户请求外,还有其他的用户请求,参考以上描述,本领域技术人员可以明确在其他的用户请求下的位图的选择以及计算方式,本发明不再一一列举。由于移动设备的普及,目标移动设备(即特定地区在特定时间内的移动设备)可能非常多,甚至数以亿计,这时,如果如图3所示直接从已存储的大量的移动设备信息中提取每一个目标移动设备信息会消耗很多时间,并且由于目标移动设备的数量巨大,每一个位图中所包括的bit位数也很多,后续的位图计算也会消耗大量的时间和资源。为了优化该问题,根据一种实施例,图5示出了另一个统计移动设备数量的装置500的结构图。如图5所示,装置500包括交互模块310、围栏编码模块320、信息提取模块330、位图生成模块340、统计模块350和抽样模块360。其中,交互模块310、围栏编码模块320、以及位图生成模块340的功能和处理逻辑与图3所示的装置300相同,此处不再赘述。抽样模块360适于在提取目标移动设备信息时,首先判断目标移动设备的数量是否大于预定阈值,若是,则从目标移动设备中随机无放回地抽取预定比例的移动设备。预定阈值、预定比例可以由本领域技术人员根据计算设备的硬件软件条件以及自身开发经验来设置,例如,预定阈值可以设置为1000000,预定比例可以设置为10%。随后,信息提取模块330从数据库110中提取抽取到的多个目标移动设备的目标移动设备信息,位图生成模块340将提取到的多个移动设备信息中的特征信息转化为多个位图,统计模块350选取合适的位图进行计算,得出针对抽取到的目标移动设备的统计结果。将该统计结果除以预定比例,则可以得出满足用户请求的移动设备数量。图6示出了根据本发明一个实施例的统计移动设备数量的方法600的流程图,该方法适于在前述统计移动设备数量的装置300中执行。如图6所示,该方法始于步骤S610。在步骤S610中,接收用户请求,用户请求包括特定地区信息、特定时间信息、一个或多个围栏区域以及一个或多个特定条件。特定地区、特定时间、围栏区域、特定条件的定义以及该步骤的具体过程可以参考前述对交互模块310的描述,此处不再赘述。随后,在步骤S620中,确定所述一个或多个围栏区域中每一个围栏区域所对应的位置编码集。其中,每个位置编码集包括一个或多个位置编码。根据一种实施例,可以采用以下步骤确定每一个围栏区域所对应的位置编码集:确定围栏区域的最小外接矩形的左上角顶点的经纬度坐标;根据预设的位置编码的长度确定横向偏移量和纵向偏移量;获取所述围栏区域内的目标位置点的位置编码,将该位置编码加入位置编码集,其中,所述目标位置点为距离所述最小外接矩形的左上角顶点的横向距离为所述横向偏移量的整数倍的位置点,以及距离所述最小外接矩形的左上角顶点的纵向距离为所述纵向偏移量的整数倍的位置点。其中,获取所述围栏区域内的目标位置点的位置编码的步骤包括:获取目标位置点的经纬度坐标;将目标位置点的经纬度坐标转化为位置编码。根据一种实施例,将目标位置点的经纬度坐标转化为位置编码的步骤可以采用GeoHash编码算法。步骤S620的具体过程可以参考前述对围栏编码模块320的描述,此处不再赘述。随后,在步骤S630中,根据所接收到的用户请求中的特定地区信息和特定时间信息,从已存储的多个移动设备信息中提取出多个目标移动设备信息。该步骤的具体过程可以参考前述对信息提取模块330的描述,此处不再赘述。随后,在步骤S640中,对于所提取出的所有多个目标移动设备信息,将每个特征信息转化为以位置编码为索引的多个位图。该步骤的具体过程可以参考前述对位图生成模块340的描述,此处不再赘述。随后,在步骤S650中,根据位置编码集和特定条件选定所需要的位图。随后,在步骤S660中,对选定的位图进行位运算从而获得满足用户请求的移动设备数量。根据一种实施例,位运算包括与、或、非。步骤S650和步骤S660的详细过程可以参考前述对统计模块350的描述,此处不再赘述。图7示出了根据本发明另一个实施例的统计围栏区域内移动设备数量的方法700的流程图,该方法适于在前述统计移动设备数量的装置500中执行。与方法600相比,方法700中多了随机无放回抽样的步骤,能够节省计算时间和资源。如图7所示,该方法始于步骤S710。在步骤S710中,接收用户用户请求,用户请求包括特定地区信息、特定时间信息、一个或多个围栏区域以及一个或多个特定条件。随后,在步骤S720中,确定所述一个或多个围栏区域中每一个围栏区域所对应的位置编码集。该步骤的具体过程可以参考前述对围栏编码模块320的描述,此处不再赘述。随后,在步骤S730中,判断目标移动设备的数量是否大于预定阈值,若是,则执行步骤S740;若否,则执行步骤S750。其中,目标移动设备即特定地区地区在特定时间内的移动设备,预定阈值可以由本领域技术人员根据计算设备的硬件软件条件以及自身开发经验来设置,例如,预定阈值可以设置为1000000。在步骤S740中,从多个目标移动设备中随机无放回地抽取预定比例的移动设备,提取抽取到的多个目标移动设备的目标移动设备信息。其中,预定比例可以由本领域技术人员根据计算设备的硬件软件条件以及自身开发经验来设置,例如,预定比例可以设置为10%。在步骤S750中,从已存储的多个移动设备信息中提取出多个目标移动设备信息。随后,在步骤S760中,对于所提取出的所有多个目标移动设备信息,将每个特征信息转化为以位置编码为索引的多个位图。该步骤的具体过程可以参考前述对位图生成模块340的描述,此处不再赘述。随后,在步骤S770中,根据位置编码集和特定条件选定所需要的位图。随后,在步骤S780中,对选定的位图进行位运算从而获得满足用户请求的移动设备数量。应当注意,若之前执行了步骤S740,则此处对位图进行位运算所得到的结果是针对抽取到的目标移动设备所得出的统计结果。这时,需要将该统计结果除以预定比例,从而获得满足用户请求的移动设备数量。步骤S770和步骤S780的具体过程可以参考前述对统计模块350的描述,此处不再赘述。A6:A5所述的方法,其中,移动设备的位置编码为该移动设备的经纬度坐标所对应的GeoHash编码;在确定所述围栏区域内的目标位置点的位置编码时,采用GeoHash编码算法将目标位置点的经纬度坐标转化为位置编码。A7:A1所述的方法,其中,从所述已存储的多个移动设备信息中提取出多个目标移动设备信息的步骤包括:判断所述多个目标移动设备的数量是否大于预定阈值,若是,则从所述多个目标移动设备中随机无放回地抽取预定比例的目标移动设备,提取抽取到的目标移动设备的目标移动设备信息;对选定的位图进行位运算从而获得满足用户请求的移动设备数量的步骤包括:将对选定的位图进行位运算所得的统计结果除以所述预定比例,从而获得满足用户请求的移动设备的数量。A8:A1所述的方法,其中,所述位运算包括与、或、非。B13:B12所述的装置,其中,所述围栏编码模块适于按照以下步骤确定所述围栏区域内的目标位置点的位置编码:确定目标位置点的经纬度坐标;将目标位置点的经纬度坐标转化为位置编码。B14:B13所述的装置,其中,移动设备的位置编码为该移动设备的经纬度坐标所对应的GeoHash编码;所述围栏编码模块在确定所述围栏区域内的目标位置点的位置编码时,采用GeoHash编码算法将目标位置点的经纬度坐标转化为位置编码。B15:B9所述的装置,其中,还包括抽样模块,适于在多个目标移动设备的数量大于预定阈值时,从所述多个目标移动设备中随机无放回地抽取预定比例的目标移动设备;所述信息提取模块还适于:提取抽取到的目标移动设备的目标移动设备信息;所述统计模块还适于:将对选定的位图进行位运算所得的统计结果除以所述预定比例,从而获得满足用户请求的移动设备的数量。B16:B9所述的装置,其中,所述位运算包括与、或、非。在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本
技术领域:
内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本
技术领域:
的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。当前第1页1 2 3