教你如何拔取百度地图POI兴趣点
教你如何拔取百度地图POI兴趣点
通过聚合数据提供的接口,获取百度地图的POI兴趣点,并存储至数据库中。
实现:
1、聚合数据百度POI接口说明
调用聚合数据,首先得注册聚合。聚合数据提供的百度地图POI的接口有三个:数据分类,查询数据和获取周边数据。想要获取百度POI兴趣点,涉及到的接口为数据分类,查询数据。
a、数据分类
| 名称 | 类型 | 必填 | 说明 | |
| key | string | 是 | 应用APPKEY(应用详细页查询) | |
| fid | string | 否 | 分类父ID,默认空,即全部分类,否则返回指定分类下的子类 | |
| dtype | string | 否 | 返回数据的格式,xml或json,默认json |
| 名称 | 类型 | 说明 | |
| error_code | int | 返回码 | |
| reason | string | 返回说明 | |
| result | - | 返回结果集 | |
| id | int | 分类ID | |
| name | string | 分类名称 | |
| fid | int | 父类ID,0则为一级分类 |
{
"resultcode":"200",
"reason":"Return Successd!",
"result":[
{
"id":"17",
"name":"中式快餐",
"fid":"1"
},
{
"id":"18",
"name":"中餐馆",
"fid":"1"
},
{
"id":"19",
"name":"休闲餐饮",
"fid":"1"
},
{
"id":"20",
"name":"日韩式料理",
"fid":"1"
},
{
"id":"21",
"name":"西餐厅",
"fid":"1"
},
{
"id":"22",
"name":"西式快餐",
"fid":"1"
},
{
"id":"33",
"name":"东南亚菜",
"fid":"1"
}
]
}
b、查询数据
| 名称 | 类型 | 必填 | 说明 | |
| city | string | 是 | 城市的名称,如:上海市 | |
| cid | int | 否 | 分类ID,可从分类接口获取到,默认全部 | |
| keyword | string | 否 | 名称包含的关键字 | |
| page | string | 否 | 页数,默认第一页 最大50. | |
| pnums | int | 否 | 每次返回数据数目,默认20,最大20 | |
| key | string | 是 | 应用APPKEY(应用详细页查询) | |
| dtype | string | 否 | 返回数据的格式,xml或json,默认json |
| 名称 | 类型 | 说明 | |
| error_code | int | 返回码 | |
| reason | string | 返回说明 | |
| data | - | 返回结果集 | |
| id | INT | 餐厅的标识符 | |
| name | string | 餐厅名称 | |
| province | string | 省份 | |
| city | string | 城市 | |
| address | string | 详细地址 | |
| phoneNumber | string | 联系电话 | |
| tags | string | 标签 | |
| type1 | INT | 所属一级分类ID | |
| type2 | int | 所属二级分类ID | |
| tag | string | 商圈 | |
| lng | string | 经度(适合百度地图) | |
| lat | string | 纬度 | |
| pageinfo | - | - | |
| nums | int | 记录总数 | |
| pnums | int | 每页显示条数 | |
| current | int | 当前页 | |
| pageall | int | 总页数 |
{
"resultcode":"200",
"reason":"Return Successd!",
"result":{
"data":[
{
"id":"493567",
"title":"生良饭店",
"province":"上海市",
"city":"上海市",
"address":"上海市",
"tags":"餐饮",
"type1":"1",
"type2":"0",
"tag":"",
"lng":"121.375458",
"lat":"31.794554"
},
{
"id":"493568",
"title":"永兴饭店",
"province":"上海市",
"city":"上海市",
"address":"上海市",
"tags":"餐饮",
"type1":"1",
"type2":"0",
"tag":"",
"lng":"121.421982",
"lat":"31.767340"
},
{
"id":"493569",
"title":"猛东饭店",
"province":"上海市",
"city":"上海市",
"address":"庙镇镇合作社区竖星路210号",
"tags":"餐饮",
"type1":"1",
"type2":"0",
"tag":"小吃",
"lng":"121.372307",
"lat":"31.747095"
},
{
"id":"493570",
"title":"百顺酒家",
"province":"上海市",
"city":"上海市",
"address":"宏海公路2010",
"tags":"餐饮,中餐馆",
"type1":"1",
"type2":"18",
"tag":"",
"lng":"121.352936",
"lat":"31.720875"
},
{
"id":"493571",
"title":"群丰酒楼",
"province":"上海市",
"city":"上海市",
"address":"上海市",
"tags":"餐饮",
"type1":"1",
"type2":"0",
"tag":"",
"lng":"121.354179",
"lat":"31.720181"
}
],
"pageinfo":{
"nums":93720,
"pnums":"5",
"current":"2",
"pageall":18744
}
}
}
2、获取数据分类
根据提供的接口,获取数据全部分类的地址为:
http://apis.juhe.cn/baidu/getCategory?key=您的key&dtype=json
为方便使用,我将返回的数据整理成了表格形式,如下:
| id | fid | name |
| 1 | 0 | 餐饮 |
| 2 | 0 | 汽车服务 |
| 3 | 0 | 地产小区 |
| 4 | 0 | 公司企业 |
| 5 | 0 | 宾馆 |
| 6 | 0 | 金融 |
| 7 | 0 | 交通设施 |
| 8 | 0 | 教育 |
| 9 | 0 | 生活服务 |
| 10 | 0 | 旅游景点 |
| 11 | 0 | 名称标注类 |
| 12 | 0 | 购物 |
| 13 | 0 | 休闲娱乐 |
| 14 | 0 | 行政地标 |
| 15 | 0 | 政府机构 |
| 16 | 0 | 医疗 |
| 17 | 1 | 中式快餐 |
| 18 | 1 | 中餐馆 |
| 19 | 1 | 休闲餐饮 |
| 20 | 1 | 日韩式料理 |
| 21 | 1 | 西餐厅 |
| 22 | 1 | 西式快餐 |
| 23 | 13 | 洗浴按摩 |
| 24 | 13 | 歌舞厅/夜总会/娱乐城 |
| 25 | 12 | 批发市场/集市 |
| 26 | 12 | 电器商场 |
| 27 | 7 | 停车场/停车区 |
| 28 | 15 | 党派团体 |
| 29 | 13 | ktv |
| 30 | 5 | 星级宾馆酒店 |
| 31 | 9 | 便利店 |
| 32 | 15 | 机关单位 |
| 33 | 1 | 东南亚菜 |
| 34 | 4 | 厂矿 |
| 35 | 13 | 度假村/度假区 |
| 36 | 4 | 运输 |
| 37 | 7 | 飞机场 |
| 38 | 8 | 培训机构 |
| 39 | 8 | 高等教育 |
| 40 | 6 | 银行 |
| 41 | 4 | 物业管理 |
| 42 | 13 | 文化馆/文化宫/活动中心 |
| 43 | 5 | 旅店 |
| 44 | 3 | 小区/楼盘 |
| 45 | 4 | 文化媒体 |
| 46 | 12 | 综合商场/购物中心 |
| 47 | 13 | 休闲广场 |
| 48 | 13 | 体育场馆 |
| 49 | 4 | 职业介绍/人才交流 |
| 50 | 6 | 证券公司 |
| 51 | 16 | 综合医院 |
| 52 | 9 | 美容美发 |
| 53 | 9 | 邮局 |
| 54 | 13 | 健身中心 |
| 55 | 8 | 初等教育(小学) |
| 56 | 15 | 福利机构 |
| 57 | 14 | 村庄 |
| 58 | 8 | 学前教育 |
| 59 | 12 | 家居建材 |
| 60 | 8 | 中等教育 |
| 61 | 12 | 烟酒茶叶 |
| 62 | 5 | 招待所 |
| 63 | 7 | 公交车站 |
| 64 | 7 | 地铁/轻轨 |
| 65 | 3 | 售楼处 |
| 66 | 9 | 洗衣/干洗 |
| 67 | 2 | 汽车配件/装饰 |
| 68 | 4 | 旅行社 |
| 69 | 8 | 科研机构/教育 |
| 70 | 5 | 连锁快捷酒店 |
| 71 | 9 | 摄影冲印 |
| 72 | 6 | 保险公司 |
| 73 | 12 | 服装鞋帽 |
| 74 | 10 | 风景区/旅游区 |
| 75 | 12 | 超市 |
| 76 | 16 | 社区医疗/诊所/卫生所 |
| 77 | 6 | atm |
| 78 | 6 | 农村信用社/城市信用社 |
| 79 | 2 | 汽车维修/养护/洗车 |
| 80 | 10 | 公园 |
| 81 | 4 | 公用事业 |
| 82 | 4 | 高新科技 |
| 83 | 12 | 文化办公 |
| 84 | 12 | 钟表眼镜 |
| 85 | 4 | 事务所 |
| 86 | 7 | 出入口 |
| 87 | 9 | 房屋租售中介 |
| 88 | 4 | 农林园艺 |
| 89 | 15 | 各级政府 |
| 90 | 12 | 珠宝饰品 |
| 91 | 12 | 礼品花卉 |
| 92 | 6 | 投资公司 |
| 93 | 14 | 乡镇 |
| 94 | 6 | 典当/当铺 |
| 95 | 4 | 婚介婚庆 |
| 96 | 4 | 新闻出版 |
| 97 | 10 | 美术馆/艺术馆 |
| 98 | 13 | 图书馆 |
| 99 | 4 | 工商业区 |
| 100 | 12 | 文物古玩 |
| 101 | 12 | 电子数码 |
| 102 | 7 | 交叉路口 |
| 103 | 10 | 博物馆 |
| 104 | 4 | 保安 |
| 105 | 16 | 药店/药房 |
| 106 | 9 | 彩票发行 |
| 107 | 13 | 迪吧 |
| 108 | 13 | 电影院 |
| 109 | 4 | 电信公司 |
| 110 | 10 | 展览馆/纪念馆 |
| 111 | 15 | 公检法机构 |
| 112 | 9 | 售票处 |
| 113 | 4 | 建筑装修 |
| 114 | 2 | 4s/汽车销售 |
| 115 | 2 | 汽车检验场 |
| 116 | 2 | 驾校 |
| 117 | 2 | 汽车租赁 |
| 118 | 7 | 长途汽车站 |
| 119 | 7 | 出租车站 |
| 120 | 9 | 电信营业厅 |
| 121 | 12 | 图书音像 |
| 122 | 4 | 高科技园区 |
| 123 | 13 | 网吧 |
| 124 | 7 | 加油站 |
| 125 | 7 | 火车站 |
| 126 | 16 | 医疗保健 |
| 127 | 15 | 涉外机构 |
| 128 | 9 | 家政服务 |
| 129 | 7 | 服务区 |
| 130 | 9 | 文印图文 |
| 131 | 12 | 母婴儿童 |
| 132 | 12 | 体育户外 |
| 133 | 12 | 摄影器材 |
| 134 | 9 | 家电维修 |
| 135 | 3 | 别墅 |
| 136 | 4 | 房地产开发 |
| 137 | 4 | 殡葬 |
| 138 | 4 | 出国留学 |
| 139 | 9 | 公厕 |
| 140 | 9 | 搬家 |
| 141 | 15 | 驻地机构 |
| 142 | 10 | 游乐园 |
| 143 | 13 | diy手工 |
| 144 | 13 | 音乐厅 |
| 145 | 7 | 港口/码头 |
| 146 | 9 | 送水 |
| 147 | 9 | 报亭 |
| 148 | 10 | 文物古迹 |
| 149 | 10 | 动物园 |
| 150 | 10 | 植物园 |
| 151 | 10 | 教堂 |
| 152 | 13 | 剧院 |
| 153 | 11 | 道路名称 |
| 154 | 10 | 水族馆 |
| 155 | 7 | 桥 |
| 156 | 13 | 电子游戏 |
| 157 | 16 | 私人诊所 |
| 158 | 5 | 青年旅舍 |
| 159 | 15 | 中央机构 |
| 160 | 7 | 收费处/收费站 |
| 161 | 7 | 环岛 |
| 162 | 7 | 红绿灯 |
| 163 | 10 | 科技馆 |
| 164 | 4 | 教育 |
| 165 | 12 | 箱包日用 |
| 166 | 14 | 区县 |
| 167 | 14 | 地级市 |
| 168 | 14 | 商圈 |
| 169 | 16 | 专科医院 |
| 170 | 9 | 宠物 |
| 171 | 16 | 急救中心 |
| 172 | 16 | 下属科室机构 |
| 173 | 16 | 防疫站 |
| 174 | 16 | 中医医院 |
| 175 | 16 | 职工医院 |
3、获取POI
根据提供的接口,获取POI的地址为:
http://apis.juhe.cn/baidu/getData?key=您的key&dtype=json&city=北京市&page=1&cid=1
其中:
city:城市名称;
page:当前页;
cid:获取到的数据分类的id
为了能将获取到的数据保存下来,用java+oracle写了一段小程序,实现了数据的获取与保存。
a、数据库表
根据获取到的json数据,建立表BDPOI,表结构设计如下:
b、获取并保存数据
package com.lzugis.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.sql.SQLException;
import com.lzugis.db.ConOrcl;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class GetPoiData {
public static void main(String[] args) throws SQLException {
String poiUrl = "http://apis.juhe.cn/baidu/getData";
String poiParam = "key=7ea83e6f1e025782c47229b49865111b&dtype=json&city=北京市"+
"&page="+1+"&cid=1";
String poiResult = SendGET(poiUrl,poiParam);
JSONObject poiJson = JSONObject.fromObject(poiResult);
System.out.println(poiJson);
int pageAll = poiJson.getJSONObject("result").getJSONObject("pageinfo").getInt("pageall");
for(int i=0;i<pageAll;i++){
System.out.println("—————————————————————————————————————————————");
System.out.println("第"+(i+1)+"页");
String poiParam = "key=7ea83e6f1e025782c47229b49865111b&dtype=json&city=北京市"+
"&page="+(i+1)+"&cid=1";
String poiResult = SendGET(poiUrl,poiParam);
JSONObject poiJson = JSONObject.fromObject(poiResult);
JSONArray data = poiJson.getJSONObject("result").getJSONArray("data");
int size = data.size();
for(int j=0;j<size;j++){
JSONObject item = data.getJSONObject(j);
//id,title,addr,pro,city,tags,ty1,ty2,lng,lat
String sql = "insert into bdpoi values('"+item.getString("id")+"','"
+item.getString("title")+"','"
+item.getString("address")+"','"
+item.getString("province")+"','"
+item.getString("city")+"','"
+item.getString("tags")+"',"
+item.getInt("type1")+","
+item.getInt("type2")+","
+item.getDouble("lng")+","
+item.getDouble("lat")+")";
System.out.println(" "+sql);
ConOrcl.runSql(sql);
}
}
}
public static String SendGET(String url,String param){
String result="";//访问返回结果
BufferedReader read=null;//读取访问结果
try {
//创建url
URL realurl=new URL(url+"?"+param);
//打开连接
URLConnection connection=realurl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//建立连接
connection.connect();
// 定义 BufferedReader输入流来读取URL的响应
read = new BufferedReader(new InputStreamReader(
connection.getInputStream(),"UTF-8"));
String line;//循环读取
while ((line = read.readLine()) != null) {
result += line;
}
}
catch (IOException e) {
e.printStackTrace();
}
finally{
if(read!=null){//关闭流
try {
read.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
}
这样,就将百度地图的POI数据获取并保存了下来。
注:聚合数据是有请求次数限制的,想获取更多的话就自己想办法掏钱吧!
教你如何拔取百度地图POI兴趣点的更多相关文章
- 百度地图POI爬取
我们研究生的课程内容,做下笔记记录一下. 使用的python环境是python3.7 用的图大部分都是老师ppt里的图,懒得自己截了-- 申请百度开发者密匙 (1)注册百度用户,注册过的话,直接登录就 ...
- 基于 Golang 完整获取百度地图POI数据的方案
百度地图为web开发者提供了基于HTTP/HTTPS协议的丰富接口,其中包括地点检索服务,web开发者通过此接口可以检索区域内的POI数据.百度地图处于数据保护对接口做了限制,每次访问服务,最多只能检 ...
- 获取百度地图POI数据三(模拟关键词搜索)
上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词 这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等.有了这些数据,我们就可以通过代码,模拟我们在百度地图的搜索框中搜 ...
- 获取百度地图POI数据二(准备搜索关键词)
上篇讲到 想要获取尽可能多的POI数据 需要准备尽可能多的搜索关键字 那么这些关键字如何得来呢? 本人使用的方法是通过一些网站来获取这些关键词 http://poi.mapbar.com ...
- iOS地图集成示例:百度地图POI检索
一.集成百度地图(傻瓜教程,以网站说明文档为准,此处罗列几项主要步骤) 1.登录 http://lbsyun.baidu.com 百度地图开发者平台,获取SDK和集成文档. 2.百度地图可以提供的 ...
- 百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制11。
1.POI爬取方法说明 1.1AK申请 登录百度账号,在百度地图开发者平台的API控制台申请一个服务端的ak,主要用到的是Place API.检校方式可设置成IP白名单,IP直接设置成了0.0.0.0 ...
- 获取百度地图POI数据一(详解百度返回的POI数据)
POI是一切可以抽象为空间点的现实世界的实体,比如餐馆,酒店,车站,停车场等.POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一.百度地图作为国内顶尖的地图企业,其上具有丰富的POI数 ...
- 基于指定文本的百度地图poi城市检索的使用(思路最重要)
(转载请注明出处哦)具体的百度地图权限和apikey配置以及基础地图的配置不叙述,百度地图定位可以看这个链接的http://blog.csdn.net/heweigzf/article/details ...
- 基于python3.6的如何爬取百度地图
先前参考了其他的代码,大多数是python2.7写的,而3.6用的类库以及规则有了很大的变动,所以自己写了一个这样的代码,供给大家参考. def get_station(i): station=[] ...
随机推荐
- Getting Started with the C# Driver
1.下载 如果下载的.zip文件,只需要解压即可. 如果安装的.msi文件,它会将C#驱动DLL放在C:\Program Files (x86)\MongoDB\CSharp Driver xxx的位 ...
- wordpress网站被挂马以及防御方法
wordpress本身的安全性是非常的高的,一般不会被轻易的破解,被挂马,但是我们也不能够过度迷信wordpress的安全性,凡是连接上互联网的服务器和电脑,都存在被破解的风险性.所以我们在日常维护自 ...
- [c++][语言语法]stringstream iostream ifstream
c++中ifstream一次读取整个文件 读取至char*的情况 std::ifstream t; int length; t.open("file.txt"); // open ...
- JavaScript中创建类,赋值给ajax中的data参数
缘由:因为要给根据是否选中checkbox来动态增加ajax中data的属性(ajax的data属性格式的几种方法,参考http://www.jb51.net/article/46676.htm) d ...
- C++智能指针管理类
1.程序员明确的进行内存释放 对于c++程序员,最头脑的莫过于对动态分配的内存进行管理了.c++在堆上分配的内存,需要程序员负责对分配的内存进行释放.但有时内存的释放看起来并不件很轻松的事,如下程序 ...
- 多校5-MZL's Border 分类: 比赛 2015-08-05 21:28 7人阅读 评论(0) 收藏
MZL's Border Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- js post提交页面
function post(URL, PARAMS) { var temp = document.createElement("form"); temp.action = URL; ...
- Unity脚本在层级面板中的执行顺序测试2
上一篇测试了生成顺序对执行顺序的影响,链接:LINK 执行顺序测试3: LINK 这篇主要测试一下Awake,OnEnable,Start三个常用消息的循环顺序 1.测试消息循环顺序 先上一个最简单的 ...
- UPnP基本原理介绍
http://blog.csdn.net/braddoris/article/details/41576515 随着计算机产业以及计算机网络技术的迅猛发展,越来越多嵌入式设备的出现和家庭网络的发展,实 ...
- selenium + python 添加等待时间
转载于:http://www.blogjava.net/qileilove/articles/412450.html 四.添加等待时间 有时候为了保证脚本运行的稳定性,需要脚本中添加等待时间. 4.1 ...