【项目总结】如何获取地图上的所有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;包含没有显示…

LeetCode 2221. 数组的三角和

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

移动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;你需要随…

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" /><…

jQuery学习笔记系列(三)——事件注册、事件处理、事件对象、拷贝对象、多库共存、jQuery插件、toDoList综合案例

day03 - jQuery 学习目标&#xff1a; 能够说出4种常见的注册事件 能够说出 on 绑定事件的优势 能够说出 jQuery 事件委派的优点以及方式 能够说出绑定事件与解绑事件 能够说出 jQuery 对象的拷贝方法 能够说出 jQuery 多库共存的2种方法 能够使用 jQuery 插件 1.1. jQuery 事件…

LeetCode 2225. 找出输掉零场或一场比赛的玩家(计数)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 matches 其中 matches[i] [winneri, loseri] 表示在一场比赛中 winneri 击败了 loseri 。 返回一个长度为 2 的列表 answer &#xff1a; answer[0] 是所有 没有 输掉任何比赛的玩家列表。answer[1] 是所有恰好输掉 一场 比…

LeetCode 2226. 每个小孩最多能分到多少糖果(二分查找)

文章目录1. 题目2. 解题1. 题目 给你一个 下标从 0 开始 的整数数组 candies 。数组中的每个元素表示大小为 candies[i] 的一堆糖果。你可以将每堆糖果分成任意数量的 子堆 &#xff0c;但 无法 再将两堆合并到一起。 另给你一个整数 k 。你需要将这些糖果分配给 k 个小孩&am…

指令系统——数据寻址(3)——堆栈寻址(详解)

一、总览 二、堆栈寻址 堆栈寻址&#xff1a;操作数存放在堆栈中&#xff0c;隐含使用堆栈指针&#xff08;SP&#xff09;作为操作数地址。堆栈是存储器&#xff08;或专用寄存器组&#xff09;中一块特定的按“后进先出&#xff08;LIFO&#xff09;” 原则管理的存储区&…