前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >千万级别以上的地图兴趣点(POI)的快速查找测试

千万级别以上的地图兴趣点(POI)的快速查找测试

作者头像
sparkexpert
发布2018-01-09 15:58:02
2.2K1
发布2018-01-09 15:58:02
举报

近期,终于有点时间,将之前的地图兴趣点爬虫程序(http://blog.csdn.net/sparkexpert/article/details/51554813)完善了下,并用了七天的时间爬取了覆盖全国的任一地区的所有类别的兴趣点数据。

数据下载还是一个艰难的过程,不过幸运的是,采用了新方法之后,基本上很少需要人工去干预,当然也会有网络的限制,但是基本上同时开辟5个下载通道,速度一直是嗖嗖的。

下载完成后,由于没有直接处理,只是下载了JSON格式的文本数据,约占磁盘空间60G以上。而汇总的POI个数则有好几千万。(目前有些超出范围还下载得不全,主要原因是网站服务端的限制,只允许下载前几页。当然这个也有办法处理,只是目前没有太计较于这些。)

那么下载数据之后,就在琢磨如何能够快速查找数据,像百度谷歌等各种地图网站加载数据是非常快的,那么如何去实现这个步骤呢。本文主要就是解决这个问题。

于是采用redis的HASH来进行每个兴趣点的存储。处理过程中会过滤掉一些重复的键值,但这个过滤是有条件的,如报刊亭,可能有很多同样的键值,但是它们都是独立的,就需要在这些后缀添加个0,1,2,.....

下附一张在redis客户端查找的个数。这张图只是在导入过程中随便截的图。实际上已经是好几千万了。

为了验证查询效率,进行了查找,一种是直接查找某个城市的某种类别的数据,如图所示:

可以说,用redis来做地图POI缓存,速度还是特别快的。在下面的状态栏实时显示的了查询所占用的时间,非常少的时间就返回结果了。

为了更好地测试对全部信息的查找,如在不限制城市,不限制类别进行查找,其结果如下:

发现总的测试时间也就5秒多一些,这还是在一台非常普通的PC上的测试。而真正要做地图服务器,则可以采用大内存高性能服务器,完全可以做得毫秒级响应。

不过采用这种列式数据库有个不好的地方,就是没有办法在上面直接做附近POI查询。(这在键值上也没有办法做到。)这估计还得依靠以前近格网索引的办法才能实现吧。(不过要是限制在某个城市,某种类别的,用redis肯定也能够做到,毕竟在小数据上做查询效率还是很高的)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年08月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档