专栏首页GIS讲堂教你如何拔取百度地图POI兴趣点

教你如何拔取百度地图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数据获取并保存了下来。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • openlayers4+中台风路径播放优化

    本文在以前风圈生成文章的基础上,将openlayers4+中台风路径的播放展示做了优化,并进行了封装。

    lzugis
  • N(奇数)阶幻方-java实现代码

    看完最强大脑,有一期是说N阶幻立方的,作为一个程序员,我的第一反应时我可以用程序实现,在此公布N(奇数)阶幻方的java实现代码:

    lzugis
  • 地图上覆盖物压盖的优化

    在做webgis的时候,会经常性的碰到地图覆盖物压盖的情况。本文讲述一种基于聚类思路的解决办法,实现使用的是openlayers4+。

    lzugis
  • MyBatis 二级缓存

    映射语句中的select语句将会被缓存, 映射语句中的insert update delete 语句将会刷新缓存

    mySoul
  • gsoap入门:gsoap的plugin机制说明塈使用plugin实现调试soap函数时显示

    版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net...

    用户1148648
  • BZOJ1007: [HNOI2008]水平可见直线(单调栈)

    attack
  • DevOps平台中的自动化部署框架设计

    本文目录: 一、背景 二、我们的需求是什么? 三、概念澄清 四、概念模型 五、总体设计 六、关键点设计 七、总结 一、背景 说到自动化部署,大家肯定都会想到一些...

    yuanyi928
  • gateway cache table logic

    gateway系统首先会检查自己的 cache table看里面是否有cached的model数据:

    Jerry Wang
  • SAP odata模型缓存校验机制

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 基于Saltstack、Artifactory打造传统模式下持续部署平台

    由于没有建立标准的持续部署流程,导致了版本管理混乱,制品管理混乱,上线持续时间长,上线测试覆盖不全面,业务流量上升后故障较多,排查复杂。运维、测试、开发人员每次...

    JFrog杰蛙科技

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动