发明内容
本发明的主要目的在于解决谷歌地图数据难以导出且地图数据应用场景较小的技术问题。
本发明第一方面提供了一种谷歌地图的数据提取方法,所述谷歌地图的数据提取方法包括:
构造第一payload请求数据,将所述第一payload请求数据和预置目标身份令牌发送至预置google服务器,接收所述google服务器发送的第一反馈数据,提取所述第一反馈数据中的地理标签保存数据;
构造第二payload请求数据,发送所述第二payload请求数据至所述google服务器,接收所述google服务器发送的第二反馈数据,提取所述第二反馈数据中所述地理标签保存数据对应的移动轨迹数据;
构造第三payload请求数据,将所述第三payload请求数据发送至所述google服务器,接收所述google服务器发送至的第三反馈数据,提取所述第三反馈数据中所述移动轨迹数据对应的轨迹时间点数据;
基于所述地理标签保存数据、所述移动轨迹数据、所述轨迹时间点数据,构建出谷歌地图中所述目标身份令牌对应的地图记录数据。
可选的,在本发明第一方面的第一种实现方式中,在所述构造第一payload请求数据,将所述第一payload请求数据和预置目标身份令牌发送至预置google服务器之前,还包括:
根据预置设备标识、预置语言设置、预置设备型号、预置软件版本信息、预置gmm谷歌行动管理移动信息,基于google maps通信协议构建协议数据框架;
构建google服务器对应请求数据的key结构,并对所述key结构进行protobuf序列化处理,得到序列key结构;
对所述协议数据框架和所述序列key结构进行填充字节和分段标识处理,生成请求数据框架。
可选的,在本发明第一方面的第二种实现方式中,所述构造第一payload请求数据包括:
对所述请求数据框架中的实体部分写入第一payload请求数据的对象,生成第一payload请求数据。
可选的,在本发明第一方面的第三种实现方式中,所述构造第二payload请求数据包括:
对所述请求数据框架中的实体部分写入所述目标身份令牌对应的服务器记录数据请求;
根据所述服务器记录数据请求,调整所述请求数据框架的协议头设置,得到第二payload请求数据。
可选的,在本发明第一方面的第四种实现方式中,所述构造第三payload请求数据包括:
对所述请求数据框架中的实体部分写入N个payload时间加载请求;
根据所述N个payload时间加载请求,调整所述请求数据框架的协议头设置,得到第三payload请求数据。
可选的,在本发明第一方面的第五种实现方式中,所述提取所述第二反馈数据中所述地理标签保存数据对应的移动轨迹数据包括:
根据预置数据标识和预置分段标识,遍历查询所述第二反馈数据,得到目标查询数据;
判断所述目标查询数据是否为压缩文件;
若为压缩文件,则使用Gzip算法对所述目标查询数据进行解压处理,得到所述地理标签保存数据对应的移动轨迹数据。
可选的,在本发明第一方面的第六种实现方式中,所述取所述第三反馈数据中所述移动轨迹数据对应的轨迹时间点数据包括:
根据预置分段标识和预置压缩标识,循环遍历所述第三反馈数据,得到查询日期区间的时间数据;
截取并解压缩所述时间数据,得到所述时间数据对应的时间protobuf数据;
使用TimelineResponce结构对所述时间protobuf数据进行解析处理,得到所述移动轨迹数据对应的轨迹时间点数据。
本发明第二方面提供了一种谷歌地图的数据提取装置,包括:
构造第一payload请求数据,将所述第一payload请求数据和预置目标身份令牌发送至预置google服务器,接收所述google服务器发送的第一反馈数据,提取所述第一反馈数据中的地理标签保存数据;
构造第二payload请求数据,发送所述第二payload请求数据至所述google服务器,接收所述google服务器发送的第二反馈数据,提取所述第二反馈数据中所述地理标签保存数据对应的移动轨迹数据;
构造第三payload请求数据,将所述第三payload请求数据发送至所述google服务器,接收所述google服务器发送至的第三反馈数据,提取所述第三反馈数据中所述移动轨迹数据对应的轨迹时间点数据;
基于所述地理标签保存数据、所述移动轨迹数据、所述轨迹时间点数据,构建出谷歌地图中所述目标身份令牌对应的地图记录数据。
本发明第三方面提供了一种谷歌地图的数据提取设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述谷歌地图的数据提取设备执行上述的谷歌地图的数据提取方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的谷歌地图的数据提取方法。
在本发明实施例中,通过对goolge协议的请求内容修改,实现了在goolge服务器中提取出非KML格式的数据,实现了google地图的快速导出和导出的数据格式能适应在更多应用场景中适用。
具体实施方式
本发明实施例提供了一种谷歌地图的数据提取方法、装置、设备及存储介质。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中谷歌地图的数据提取方法的一个实施例包括:
101、构造第一payload请求数据,将第一payload请求数据和预置目标身份令牌发送至预置google服务器,接收google服务器发送的第一反馈数据,提取第一反馈数据中的地理标签保存数据;
在本实施例中,构造第一payload请求数据,用于请求用户保存于maps服务器的数据。模拟移动端google maps通讯协议所需的协议头数据由三部分组成,首先是包含设备标识、语言设置、设备型号、安卓版本和gmm谷歌行动管理的移动设备信息。接着是包含用于向谷歌服务器请求数据的key结构,使用protobuf序列化key结构,通过填充字节和分段标识后,最后是用于设置请求的数据。构造第一payload请求数据的body部分,用于设置请求获取保存的数据信息,body是protobuf序列化数据,包含设置信息和当前时间戳,设置有请求获取标签数据和列表数据,其他选项可以设置为空,最后将body部分和请求协议头组成第一payload请求数据。将目标身份令牌设置为请求头header的参数,通过HTTPPOST请求将请求头和payload发送至服务器,接收服务器响应的数据。第一反馈数据同样有协议头和响应body,通过分段标识,找到保存数据的主要部分,需要将主要部分的数据进行解压缩,获取到包含所需信息的protobuf序列化数据,该序列化数据包含用户保存的标签信息和列表信息,标签类型分有家庭、工作或者用户自定义的标签,通过labeled place节点可以解析出经纬度信息、时间戳、地图链接、标签名称等信息;列表信息分有喜爱的地点、想去的地点、加星标的地点信息,可以通过saved place节点解析出经纬度、时间、类别、URL、名称、地址信息等。
102、构造第二payload请求数据,发送第二payload请求数据至google服务器,接收google服务器发送的第二反馈数据,提取第二反馈数据中地理标签保存数据对应的移动轨迹数据;
在本实施例中,构造第二payload请求数据的body部分,用于请求服务器中记录的用户信息,body是经过压缩后的protobuf序列化数据,包含设置获取选项、API key和时间戳数据,设置获取maps、Visited和Upcoming数据,修改请求协议头的请求设置,再将此部分的body数据和请求协议头组成第二payload请求数据。接收第二payload请求数据的第二反馈数据,通过数据标识和分段标识找到主要的数据部分,通过寻找压缩标识,判断主要的数据部分是否是经过压缩处理的,如果有,就使用Gzip算法进行解压缩获得对应的protobuf数据。使用响应结构解析主体部分,分为Visited地点和maps地图,通过VisitedPlaceContainer和VisitedPlaceRoot节点循环解析数据,取得时间、名称、类别名称、地址、URL、时区名称、经纬度等数据。通过maps_ex节点可以解析出用户自定义地图的名称、创建时间、ID信息。
103、构造第三payload请求数据,将第三payload请求数据发送至google服务器,接收google服务器发送至的第三反馈数据,提取第三反馈数据中移动轨迹数据对应的轨迹时间点数据;
在本实施例中,第三payload请求数据的payload有多个,具体是设定日期至今经过的年数,且每个payload的数据由多个请求数据组成,该请求数据的总数是当年的总天数。小的请求数据是个protobuf序列化数据,具体字段包含数据标识、当前时间戳、当前的年、月、日和时间线key以及部分设置选项。修改请求协议头的请求设置,在将每个时间线body和请求协议头组成对应年限的payload,用于获取google maps上的时间线数据。接收时间线部分的响应数据,通过分段标识和压缩标识循环遍历找到对应天数的主体数据,截取当天的主体数据,解压缩后获得protobuf数据,使用TimelineResponce结构对其进行解析,获取当天的地址和路线信息。通过TimelineResponceBody1_2节点和Destination、Place节点解析数据,取得地址数据,包含名称、地址、时区、tag、其他tag、经纬度、描述等信息。再通过Time line Response Body Route Info和Route节点解析数据,取得用户行程中起始时间、时间戳日期、经纬度、出行方式、距离等信息。
104、基于地理标签保存数据、移动轨迹数据、轨迹时间点数据,构建出谷歌地图中目标身份令牌对应的地图记录数据。
在本实施例中,通过对名称字符,将映射归类,将起始时间、时间戳日期、经纬度、出行方式、距离组合成用户特定对应的轨迹出行时间记录图,完成对google map的数据的提取。
在本发明实施例中,通过对goolge协议的请求内容修改,实现了在goolge服务器中提取出非KML格式的数据,实现了google地图的快速导出和导出的数据格式能在更多应用场景中适用。
请参阅图2,本发明实施例中谷歌地图的数据提取方法的另一个实施例包括:
201、根据预置设备标识、预置语言设置、预置设备型号、预置软件版本信息、预置gmm谷歌行动管理移动信息,基于google maps通信协议构建协议数据框架;
在本实施例中,模拟移动端google maps通讯协议所需的协议头数据由三部分组成,首先是包含设备标识、语言设置、设备型号、安卓版本和gmm谷歌行动管理的移动设备信息。
202、构建google服务器对应请求数据的key结构,并对key结构进行protobuf序列化处理,得到序列key结构;
在本实施例中,构建包含用于向谷歌服务器请求数据的key结构,使用protobuf序列化处理。
203、对协议数据框架和序列key结构进行填充字节和分段标识处理,生成请求数据框架;
在本实施例中,通过对key结构进行填充字节和分段标识后,得到数据用于设置请求的数据,生成请求数据框架。
204、对请求数据框架中的实体部分写入第一payload请求数据的对象,生成第一payload请求数据;
在本实施例中,构造第一部分payload的body部分,用于设置请求获取保存的数据信息,body是protobuf序列化数据,包含设置信息和当前时间戳,设置有请求获取标签数据和列表数据,其他选项可以设置为空,最后将body部分和请求协议头组成第一payload请求数据。
205、将第一payload请求数据和预置目标身份令牌发送至预置google服务器,接收google服务器发送的第一反馈数据,提取第一反馈数据中的地理标签保存数据;
本实施例类似于第一个实施中的方案,请参考第一个实施例,在此不做赘述。
206、对请求数据框架中的实体部分写入目标身份令牌对应的服务器记录数据请求;
在本实施例中,构造第二payload请求数据,用于请求服务器中记录的用户信息,body是经过压缩后的protobuf序列化数据,包含设置获取选项、API key和时间戳数据,设置获取maps、Visited和Upcoming数据。
207、根据服务器记录数据请求,调整请求数据框架的协议头设置,得到第二payload请求数据;
在本实施例中,修改请求协议头的请求设置,再将此部分的body数据和请求协议头组成第二payload请求数据。
208、发送第二payload请求数据至google服务器,接收google服务器发送的第二反馈数据;
本实施例类似于第一个实施中的方案,请参考第一个实施例,在此不做赘述。
209、根据预置数据标识和预置分段标识,遍历查询第二反馈数据,得到目标查询数据;
在本实施例中,接收第二payload请求数据,通过数据标识和分段标识找到主要的数据部分。
210、判断目标查询数据是否为压缩文件;
在本实施例中,通过寻找压缩标识,判断主要的数据部分是否是经过压缩处理的。
211、若为压缩文件,则使用Gzip算法对目标查询数据进行解压处理,得到地理标签保存数据对应的移动轨迹数据;
在本实施例中,如果有,就使用Gzip算法进行解压缩获得对应的protobuf数据。使用响应结构解析主体部分,分为Visited地点和maps地图,通过VisitedPlaceContainer和VisitedPlaceRoot节点循环解析数据,可以取得时间、名称、类别名称、地址、URL、时区名称、经纬度等数据;通过maps_ex节点可以解析出用户自定义地图的名称、创建时间、ID信息。
212、对请求数据框架中的实体部分写入N个payload时间加载请求;
在本实施例中,时间线部分的payload有多个,具体是目标年份由至今经过的年数,且每个payload的数据由多个请求数据组成,该请求数据的总数是当年的总天数,小的请求数据是个protobuf序列化数据,具体字段包含数据标识、当前时间戳、当前的年、月、日和时间线key以及部分设置选项。
213、根据N个payload时间加载请求,调整请求数据框架的协议头设置,得到第三payload请求数据;
在本实施例中,修改请求协议头的请求设置,在将每个时间线body和请求协议头组成对应年限的payload,用于获取google maps上的时间线数据。
214、将第三payload请求数据发送至google服务器,接收google服务器发送至的第三反馈数据;
本实施例类似于第一个实施中的方案,请参考第一个实施例,在此不做赘述。
215、根据预置分段标识和预置压缩标识,循环遍历第三反馈数据,得到查询日期区间的时间数据;
在本实施例中,接收时间线部分的响应数据,通过分段标识和压缩标识循环遍历找到对应天数的主体数据。
216、截取并解压缩时间数据,得到时间数据对应的时间protobuf数据;
在本实施例中,截取当天的主体数据,解压缩后获得时间protobuf数据。
217、使用TimelineResponce结构对时间protobuf数据进行解析处理,得到移动轨迹数据对应的轨迹时间点数据;
在本实施例中,使用TimelineResponce结构对时间protobuf数据进行解析,可以获取当天的地址和路线信息;通过TimelineResponceBody1_2节点和Destination、Place节点解析数据,可以取得地址数据,包含名称、地址、时区、tag、其他tag、经纬度、描述等信息,再通过Time line Response Body Route Info和Route节点解析数据,可以取得用户行程中起始时间、时间戳日期、经纬度、出行方式、距离等信息。
218、基于地理标签保存数据、移动轨迹数据、轨迹时间点数据,构建出谷歌地图中目标身份令牌对应的地图记录数据。
本实施例类似于第一个实施中的方案,请参考第一个实施例,在此不做赘述。
在本发明实施例中,通过对goolge协议的请求内容修改,实现了在goolge服务器中提取出非KML格式的数据,实现了google地图的快速导出和导出的数据格式能在更多应用场景中适用。
上面对本发明实施例中谷歌地图的数据提取方法进行了描述,下面对本发明实施例中谷歌地图的数据提取装置进行描述,请参阅图3,本发明实施例中谷歌地图的数据提取装置一个实施例包括:
第一构造模块301,用于构造第一payload请求数据,将所述第一payload请求数据和预置目标身份令牌发送至预置google服务器,接收所述google服务器发送的第一反馈数据,提取所述第一反馈数据中的地理标签保存数据;
第二构造模块302,用于构造第二payload请求数据,发送所述第二payload请求数据至所述google服务器,接收所述google服务器发送的第二反馈数据,提取所述第二反馈数据中所述地理标签保存数据对应的移动轨迹数据;
第三构造模块303,用于构造第三payload请求数据,将所述第三payload请求数据发送至所述google服务器,接收所述google服务器发送至的第三反馈数据,提取所述第三反馈数据中所述移动轨迹数据对应的轨迹时间点数据;
整合模块304,用于基于所述地理标签保存数据、所述移动轨迹数据、所述轨迹时间点数据,构建出谷歌地图中所述目标身份令牌对应的地图记录数据。
在本发明实施例中,通过对goolge协议的请求内容修改,实现了在goolge服务器中提取出非KML格式的数据,实现了google地图的快速导出和导出的数据格式能在更多应用场景中适用。
请参阅图4,本发明实施例中谷歌地图的数据提取装置的另一个实施例包括:
第一构造模块301,用于构造第一payload请求数据,将所述第一payload请求数据和预置目标身份令牌发送至预置google服务器,接收所述google服务器发送的第一反馈数据,提取所述第一反馈数据中的地理标签保存数据;
第二构造模块302,用于构造第二payload请求数据,发送所述第二payload请求数据至所述google服务器,接收所述google服务器发送的第二反馈数据,提取所述第二反馈数据中所述地理标签保存数据对应的移动轨迹数据;
第三构造模块303,用于构造第三payload请求数据,将所述第三payload请求数据发送至所述google服务器,接收所述google服务器发送至的第三反馈数据,提取所述第三反馈数据中所述移动轨迹数据对应的轨迹时间点数据;
整合模块304,用于基于所述地理标签保存数据、所述移动轨迹数据、所述轨迹时间点数据,构建出谷歌地图中所述目标身份令牌对应的地图记录数据。
其中,所述谷歌地图的数据提取装置还包括协议构造模块305,所述协议构造模块305具体用于:
根据预置设备标识、预置语言设置、预置设备型号、预置软件版本信息、预置gmm谷歌行动管理移动信息,基于google maps通信协议构建协议数据框架;
构建google服务器对应请求数据的key结构,并对所述key结构进行protobuf序列化处理,得到序列key结构;
对所述协议数据框架和所述序列key结构进行填充字节和分段标识处理,生成请求数据框架。
其中,所述第一构造模块301具体用于:
对所述请求数据框架中的实体部分写入第一payload请求数据的对象,生成第一payload请求数据。
其中,所述第二构造模块302具体用于:
对所述请求数据框架中的实体部分写入所述目标身份令牌对应的服务器记录数据请求;
根据所述服务器记录数据请求,调整所述请求数据框架的协议头设置,得到第二payload请求数据。
其中,所述第三构造模块303具体用于:
对所述请求数据框架中的实体部分写入N个payload时间加载请求;
根据所述N个payload时间加载请求,调整所述请求数据框架的协议头设置,得到第三payload请求数据。
其中,所述第二构造模块302还可以具体用于:
根据预置数据标识和预置分段标识,遍历查询所述第二反馈数据,得到目标查询数据;
判断所述目标查询数据是否为压缩文件;
若为压缩文件,则使用Gzip算法对所述目标查询数据进行解压处理,得到所述地理标签保存数据对应的移动轨迹数据。
其中,所述第三构造模块303还可以具体用于:
根据预置分段标识和预置压缩标识,循环遍历所述第三反馈数据,得到查询日期区间的时间数据;
截取并解压缩所述时间数据,得到所述时间数据对应的时间protobuf数据;
使用TimelineResponce结构对所述时间protobuf数据进行解析处理,得到所述移动轨迹数据对应的轨迹时间点数据。
本发明实施例中,通过对goolge协议的请求内容修改,实现了在goolge服务器中提取出非KML格式的数据,实现了google地图的快速导出和导出的数据格式能在更多应用场景中适用。
上面图3和图4从模块化功能实体的角度对本发明实施例中的谷歌地图的数据提取装置进行详细描述,下面从硬件处理的角度对本发明实施例中谷歌地图的数据提取设备进行详细描述。
图5是本发明实施例提供的一种谷歌地图的数据提取设备的结构示意图,该谷歌地图的数据提取设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对谷歌地图的数据提取设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在谷歌地图的数据提取设备500上执行存储介质530中的一系列指令操作。
基于谷歌地图的数据提取设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图5示出的谷歌地图的数据提取设备结构并不构成对基于谷歌地图的数据提取设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述谷歌地图的数据提取方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。