教你如何拔取百度地图poi兴趣点

author author     2022-08-15     737

关键词:

教你如何拔取百度地图POI兴趣点

 

通过聚合数据提供的接口,获取百度地图的POI兴趣点,并存储至数据库中。

 

实现:

1、聚合数据百度POI接口说明

调用聚合数据,首先得注册聚合。聚合数据提供的百度地图POI的接口有三个:数据分类,查询数据和获取周边数据。想要获取百度POI兴趣点,涉及到的接口为数据分类,查询数据。

a、数据分类

 

接口地址:http://apis.juhe.cn/baidu/getCategory
支持格式:JSON/XML
请求方式:GET
请求示例:http://apis.juhe.cn/baidu/getCategory?key=您申请的APPKEY&fid=1
请求参数:
  名称 类型 必填 说明
  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则为一级分类
JSON返回示例:
{
"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、查询数据

 

接口地址:http://apis.juhe.cn/baidu/getData
支持格式:JSON/XML
请求方式:POST/GET
请求示例:http://apis.juhe.cn/baidu/getData?key=您申请的APPKEY&cid=1&city=%E4%B8%8A%E6%B5%B7%E5%B8%82&page=2
请求参数:
  名称 类型 必填 说明
  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 总页数
JSON返回示例:
{
"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数据获取并保存了下来。

 

注:聚合数据是有请求次数限制的,想获取更多的话就自己想办法掏钱吧!

 



如何运用百度地图weburiapi

参考技术A1. 功能介绍开发者只需按照URIAPI接口规范构造一条标准的URI,便可在PC&移动浏览器端或者移动开发应用中直接调起百度地图产品(如百度web地图、百度地图客户端)进行地图显示或检索、线路查询、导航等功能,满足... 查看详情

获取当前在 GoogleMap 上可见的 POI(兴趣点)列表?

...34:33【问题描述】:使用GoogleMapsSDK,是否可以获得当前在地图上作为“图标”可见的所有POI的列表?我知道我可以使用PlacesAPI来做类似的事情,但就我而言,我真的只想获得目前在用户屏 查看详情

与谷歌地图上的兴趣点互动

】与谷歌地图上的兴趣点互动【英文标题】:InteractwithPointsofInterestonGoogleMaps【发布时间】:2020-01-1000:35:28【问题描述】:我正在使用MapsApi开发AndroidStudio。在显示的地图上,有谷歌已经放置的标记(见下图)。有没有办法通过点... 查看详情

OSMdroid 兴趣点

...做它。有没有人做过或知道一些很好的教程,其中解释了如何做?提前致谢!【问题讨论】:【参考方案1】:https://github.com/MKergall/ 查看详情

百度地图开发之poi检索,线路规划

...k/guide/key先去官方文档申请秘钥下载压缩文件等操作,参考百度地图的秘钥申请与sdk下载,显示地图(1)公交,步行,驾车路线查询,附近POI查询参考文档导入所需jar包和so文件  标注点,覆盖物的实现见官方文档 poi检索:1.首 查看详情

如何实现在h5里调起高德地图app?(上)

这一篇文章,将讲述如何在H5里调起高德地图APP,并展示兴趣点。适合于展示某个餐馆,商场等,让用户自行选择前往方式。场景一、在高德地图上展示Marker点或者POI标记在一些基于位置分享的应用开发中,我们会在地图上标记m... 查看详情

如何在 Flutter 中的 Google 地图上绘制多边形并获取其中的所有 POI?

】如何在Flutter中的Google地图上绘制多边形并获取其中的所有POI?【英文标题】:HowcanIdrawapolygononGooglemapsinFlutterandgetallPOIsinsideofit?【发布时间】:2019-06-1418:42:47【问题描述】:给定一组兴趣点,如何让Flutter应用的用户在Google地图... 查看详情

poi是啥如何使用

参考技术APOI  中国POI(PointofInterest)数据库  什么是POI?  POI是“PointofInterest”的缩写,可以翻译成“兴趣点”吧,每个POI包含四方面信息,名称、类别、经度、纬度。  这个计划的远景目标是建立全国的POI数据库,并且... 查看详情

如何在百度地图中查看周边商家优惠信息呀

最近在最一个项目,需要有定位,和查找周边的功能,老总让我做查看周边商家优惠信息,我不知道怎么做,忘各位好心人帮忙解答图吧地图查找周边的餐馆、宾馆、商店、景点等兴趣点信息的速度相当的快,而且还很准确。建... 查看详情

GMaps API - 删除默认 POI

...emovedefaultPOI【发布时间】:2014-06-1621:29:28【问题描述】:如何通过始终呈现的API从谷歌地图中删除兴趣点?我的意思是这些点:http://j.mp/1ktcaeB我已经在几个网站上看到它被删除了,但我找不到如何去做。感谢您的建议。【问题... 查看详情

如何选择苹果默认兴趣点

】如何选择苹果默认兴趣点【英文标题】:Howtoselectappledefaultpointsofinterest【发布时间】:2017-01-2617:03:25【问题描述】:我有一个关于默认兴趣点的问题。我可以使用mapView.showsPointsOfInterest=true显示默认兴趣点但我无法点击/选择那... 查看详情

如何调用百度地图api

1.进入:http://dev.baidu.com/wiki/static/map/API/tool/creatMap/(创建地图-百度地图API所见即所得工具,百度官方地址,大家放心使用)切换城市,搜索需标注位置。(如下图:)设置地图:大家可以对网站显示地图的宽高进行设置,其余选... 查看详情

获取百度地图poi数据二(准备搜索关键词)

...数据需要准备尽可能多的搜索关键字 那么这些关键字如何得来呢? 本人使用的方法是通过一些网站来获取这些关键词  http://poi.mapbar.com/这个网站有全国各地的POI数据 对各个城市的POI数据都有归类 我便是... 查看详情

获取百度地图poi数据三(模拟关键词搜索)

    上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词  这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等。有了这些数据,我们就可以通过代码,模拟我们在百... 查看详情

在谷歌地图中做“沿途的兴趣点”

...有这些位置在一两英里内的路线他们将采取。问题是,我如何有效地获取从谷歌返回的“行车路线”信息(本质上是一组纬度/经度对) 查看详情

poi是啥意思

...wtouseJavatechnologyandtheApachePOItoreadfromEmployee_List.xls.本文演示如何使用Java技术和ApachePOI来读取Em 查看详情

如何利用百度地图获取一种类型poi的统计数据

参考技术A12345678/***根据中心点、半径和检索词发起周边检索*异步函数,返回结果在BMKPoiSearchDelegate的onGetPoiResult通知*@paramoption周边搜索的搜索参数类(BMKNearbySearchOption)*@paramindex页码,如果是第一次发起搜索,填0,根据返回的... 查看详情

如何在特定半径内的地图上显示点

】如何在特定半径内的地图上显示点【英文标题】:howtoshowpointsonamapwithinaspecificradius【发布时间】:2015-02-2002:33:53【问题描述】:我一直在寻找如何解决这个问题的明确方向。我正在考虑让用户能够使用特定半径(例如5、10、25... 查看详情