本文共 999 字,大约阅读时间需要 3 分钟。
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:。
在内网项目中需要展示兴趣点,而此时对方并没有提供兴趣点数据,同时也不能通过百度在线服务去获取时,能够将百度的兴趣点趴取组织然后存放在本地显得十分有用。如果,还能将百度兴趣点的坐标逆转换成本地坐标系下的坐标,那么刚才描述的这个问题也便能迎刃而解。
百度服务端提供了请求兴趣点的接口。对于一般用户,一个key一天可以请求的上限是10W次。基于此服务,我们便可以开展百度兴趣点下载工具的研发。
不管我们向百度的后台请求的范围是多大,其返回的总数(不是指每页数量)最多不会超过400个。
所以,如果想尽可能多的下载到范围内的兴趣点,我们需要做到以下两步:
a.尽量使用范围来进行请求。
b.将范围进行格网化,并且此格网大小要合适。选择1KM作为格网划分单位比较合适。然后按照格网范围进行请求。
在开发过程中,涉及到首先遍历所有格网,其次在每次遍历中,根据第一次返回的total以及pagesize做递归或者堆栈循环。
根据自身所需的关键字组合而获取的所有兴趣点中,会出现uid重复问题。这个主要是某个兴趣点同时属于多个关键字。
所以在后台进行数据整合时,需要进行过滤。
使用多线程下载可以比较好的解决下载速度问题。但是如何划分每个线程所管辖的下载范围,每个线程负责下载的关键字,线程开启多少合适,需要测试优化。
数据有可能存在到多种数据库中。这里如果可以生成中间缓存文件。然后再导入进所需的数据库,能规避许多不必要深究的问题。
并且多线程同时操作相同的文件,容易出现线程堵塞或者资源抢占错误。这里建议以不同线程对应不同临时文件来解决。
在请求解析时,难免会出现返回结果不正确导致的解析错误等其他问题。这里需要对错误请求进行记录。并且提供修复功能。
后续中可以嵌入网页地图,方便选择范围。
-----欢迎转载,但保留版权,请于明显处标明出处:
如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^