【项目总结】如何获取地图上的所有POI

1. 地图POI数据是什么,有什么用

   关于地图数据123,可以参考一下这篇 https://www.zhihu.com/question/21530085/answer/18728706,回答了很多信息;下图是摘自其中,展示了建立一个地图需要的几个图层数据,从底向上依次是:卫星图,街道信息,建筑信息,地图热点信息;卫星图是图片,建筑信息是几何信息,这两者在平时比较少使用和关心;常用的是有道路信息,可以用来做路径规划和导航,开源地图OpenStreetMap提供了部分道路的免费数据,http://www.openstreetmap.org/;而使用最多的,是地图热点信息,即POI。POI代表一个兴趣点,可以是楼宇、小区、商店、银行、学校等等,其提供的附带信息较为丰富,常有的有“地址”、“经纬度”、“POI类型”等。很多公司都会根据用户的消费地点或活动地点来做深入挖掘,完善用户画像,这时,POI信息显得特别重要。一个很简单的例子,当一个用户一直出现在某学校和它周围,那么很可能是这个学校老师或者学生。

    

 

2. 如何获得高德地图所有的POI

    高德地图提供了获取矩形范围内所有POI列表的接口,一个请求例子如下:

http://restapi.amap.com/v3/place/polygon?polygon=108.640287,26.043184;110.579374,27.275355&key=dc44a8ec8db3f9ac82344f9aa536e678&extensions=all&offset=5&page=1

    其中polygon是矩形对角顶点,offset是每页显示的poi个数,page是页码。这样获得的一个POI信息如下:

{"id": "B000A7BD6C","name": "清华大学","tag": [],"type": "科教文化服务;学校;高等院校","typecode": "141201","biz_type": [],"address": "双清路30号","location": "116.32676,40.003305","tel": "010-62782165","postcode": [],"website": "www.tsinghua.edu.cn","email": [],"pcode": "110000","pname": "北京市","citycode": "010","cityname": "北京市","adcode": "110108","adname": "海淀区","gridcode": "6016020610","distance": [],"navi_poiid": "J50F001019_327708","entr_location": "116.332936,39.996159","business_area": []
}

     但是,这个矩形区域搜索接口有一个限制——每个矩形只能获得前1000个POI,超过之后,再翻页就没有数据了。所以,想利用这个接口来搞定全国POI,就需要先把全国分为若干矩形,保证每个矩形之内高德地图POI数量小于1000。还好这个接口会返回一个矩形区域内所有POI的数量,使得我可以来做这件事。

    将全国划分矩形的思路比较简单,将全国包围盒作为根节点,当POI超过1000时,分成4个相等小矩形,这样递归下去,创建出4叉树。今天计算后,全国、北京、上海划分结果如下图。有了这些矩形,我就可以一个个地翻页得到了。估算了一下,获得高德所有POI,请求数在20万左右,只要很少资源就可以搞定了。

    

    

    

补充20160127

   用矩形检索的api有一个问题,就是其参数 types 和 keywords 必须两者至少有一个,否则返回poi不全。我在拿到手一个城市的poi后,检测发现有缺的,才发现了这个问题,然而高德在其官方文档上并没有说明,而是在论坛里面讲的。我选择types参数,才把一个城市抓全;抓完后发现,poi的数量确实很庞大,高德号称全国有5000万,我估计没有这么多也起码有2000万。

 

转载于:https://www.cnblogs.com/sparrowjack/p/5151477.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十六、MySQL流程控制结构(顺序、分支、循环)详解 强化练习

流程控制结构:顺序、分支、循环 一、分支结构 case结构作为表达式: case结构作为独立的语句: if函数 语法:if(条件,值1,值2) 功能:实现双分支 应用在begin end中或外面 case结构 语法: 情…

LeetCode 2211. 统计道路上的碰撞次数

文章目录1. 题目2. 解题1. 题目 在一条无限长的公路上有 n 辆汽车正在行驶。汽车按从左到右的顺序按从 0 到 n - 1 编号,每辆车都在一个 独特的 位置。 给你一个下标从 0 开始的字符串 directions ,长度为 n 。 directions[i] 可以是 ‘L’、‘R’ 或 …

服务端的思考

概述 我们思考发布一个web服务需要做的工作,并进行职责的划分。职责的划分 通常我们会先制定抽象的接口,然后根据接口构造实现类。接口和实现类都完成了,再实施发布。所以,服务端的角色可以划分为:服务接口、服务实现、…

IPv6数据报详解

一、为什么有IPv6? 二、IPv6数据报格式 版本:指明了协议版本,总是6。 优先级:区分数据报的类别和优先级。 流标签:“流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签…

LeetCode 2212. 射箭比赛中的最大得分(状态枚举)

文章目录1. 题目2. 解题1. 题目 Alice 和 Bob 是一场射箭比赛中的对手。比赛规则如下: Alice 先射 numArrows 支箭,然后 Bob 也射 numArrows 支箭。 分数按下述规则计算: 箭靶有若干整数计分区域,范围从 0 到 11 (…

web前端复习系列[1]——标签

<h1>一般用于网站标题。加入强调语气&#xff0c;使用<strong>和<em>标签。<em> 表示强调&#xff0c;<strong> 表示更强烈的强调。并且在浏览器中<em> 默认用斜体表示&#xff0c;<strong> 用粗体表示。两个标签相比&#xff0c;目…

十七、MySQL触发器(创建、删除、查看)详解

触发器 一、介绍 触发器是与表有关的数据库对象&#xff0c;指在 insert/update/delete 之前或之后&#xff0c;触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。 使用别名 OLD 和 NEW 来引用…

LeetCode 2215. 找出两数组的不同(set)

文章目录1. 题目2. 解题1. 题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;请你返回一个长度为 2 的列表 answer &#xff0c;其中&#xff1a; answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在…

HDOJ 5071 Chat 模拟

大模拟&#xff1a; 1》saygoodbye要先对 always on top 的人说 2》对没有说过话的不要说good bye 3》用long long Chat Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 337 Accepted Submission(s): 82Prob…

十八、MySQL之TCL事务控制语言(详解)

TCL &#xff1a; Transaction Control Language 事务控制语言 零、MySQL 中的存储引擎 1、概念&#xff1a;在mysql中的数据用各种不同的技术存储在文件&#xff08;或内存&#xff09;中。 2、通过show engines&#xff1b;来查看mysql支持的存储引擎。 3、 在mysql中用的…

LeetCode 2220. 转换数字的最少位翻转次数(位运算)

文章目录1. 题目2. 解题1. 题目 一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作&#xff0c;即将 0 变成 1 &#xff0c;或者将 1 变成 0 。 比方说&#xff0c;x 7 &#xff0c;二进制表示为 111 &#xff0c;我们可以选择任意一个位&#xff08;包含没有显示…

UITextField属性

UITextField属性 0、enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话&#xff0c;右下角的返回按钮是disabled的。1、borderStyle 设置边框样式&#xff0c;只有设置了才会显示边框样式text.borderStyle UITextBorderStyleRoundedRect;ty…

LeetCode 2221. 数组的三角和

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums &#xff0c;其中 nums[i] 是 0 到 9 之间&#xff08;两者都包含&#xff09;的一个数字。 nums 的 三角和 是执行以下操作以后最后剩下元素的值&#xff1a; nums 初始包含 n 个元素。如果 n 1 &…

十九、MySQL常用命令总结

数据结构核心原理与算法应用C:\Windows\system32> net stop mysql0815MySQL0815 服务正在停止. MySQL0815 服务已成功停止。C:\Windows\system32>net start mysql0815 MySQL0815 服务正在启动 . MySQL0815 服务已经启动成功。C:\Windows\system32>mysql -h localhost…

移动web开发之rem布局(rem基础、媒体查询、 less 基础、rem适配方案)

移动web开发之rem布局 一、rem基础 rem单位 rem (root em)是一个相对单位&#xff0c;类似于em&#xff0c;em是父元素字体大小。 不同的是rem的基准是相对于html元素的字体大小。 比如&#xff0c;根元素&#xff08;html&#xff09;设置font-size12px; 非根元素设置wid…

LeetCode 2222. 选择建筑的方案数

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的二进制字符串 s &#xff0c;它表示一条街沿途的建筑类型&#xff0c;其中&#xff1a; s[i] 0 表示第 i 栋建筑是一栋办公楼&#xff0c;s[i] 1 表示第 i 栋建筑是一间餐厅。 作为市政厅的官员&#xff0c;你需要随…

内存管理 内存泄漏

垃圾回收机制是周期性的&#xff0c;按照特定的周期循环&#xff0c;或者按照预先定义的时间执行最流行的回收机制是mark-and-sweep当一个变量进入当前上下文&#xff0c;那么会被标示为在上下文中&#xff0c;内存不会被释放&#xff0c;当他离开会被标示为不在上下文&#xf…

LeetCode 2224. 转化时间需要的最少操作数(贪心)

文章目录1. 题目2. 解题1. 题目 给你两个字符串 current 和 correct &#xff0c;表示两个 24 小时制时间 。 24 小时制时间 按 "HH:MM" 进行格式化&#xff0c;其中 HH 在 00 和 23 之间&#xff0c;而 MM 在 00 和 59 之间。 最早的 24 小时制时间为 00:00 &…

移动端WEB开发之响应式布局(响应式开发原理、bootstrap、阿里百秀案例)

移动端WEB开发之响应式布局 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置&#xff0c;从而适配不同设备的目的。 设备的划分情况&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><…

【原创】Java实现手机号码归属地查询

网络上已经有很多的手机号码归属地查询的API接口&#xff0c;但是这些接口总是有一些大大小小的缺陷。 总结一下这些缺陷&#xff1a; 1、要直接将它的搜索框链接形式粘到自己的页面&#xff0c;点击查询的时候还要跳转到他们的网站来展示归属地结果 2、提供接口的API&#xff…