获取百度地图POI数据一(详解百度返回的POI数据)

时间:2022-04-16 07:20:58

POI是一切可以抽象为空间点的现实世界的实体,比如餐馆,酒店,车站,停车场等。POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一。百度地图作为国内顶尖的地图企业,其上具有丰富的POI数据,要获取其上的POI数据可以根据百度地图提供的API,但是这种方式有限制,能获取的数据极少。本文将详细介绍通过模拟HTTP请求的方式获取其上的POI数据。

当我们在百度地图的搜索框中通过输入关键字进行搜索时,这其实就是发送一个HTTP请求到百度的服务器,然后服务器返回数据。

获取百度地图POI数据一(详解百度返回的POI数据)

  打开网页的调试面板可以清楚的看到这些请求  以及服务器返回的数据   这些数据都是JSON格式的   在地址栏中输入请求的url  http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd=%E4%BA%BA%E5%90%8D%E5%B9%BF%E5%9C%BA&c=289&src=0&wd2=&sug=0&l=17&b=(13522376.995,3640442.635;13522548.995,3641718.635)&from=webmap&biz_forward={%22scaler%22:1,%22styles%22:%22pl%22}&sug_forward=&tn=B_NORMAL_MAP&nn=0&u_loc=13506522,3642064&ie=utf-8&t=1500039457397

之后便能看到返回的JSON数据  将这些JSON文本复制到JSON在线校验的网站(如 www.json.cn)上可以更清楚的看到其中的信息

  获取百度地图POI数据一(详解百度返回的POI数据)

如上图所示   一个url返回这样一些数据  我提取的是其中content节点中的数据   在这个节点中  一个url最多返回十条数据  一条数据中包含很多个子节点数据  其中获取百度地图POI数据一(详解百度返回的POI数据)

x,y节点中的数据可以用来获取这条数据的坐标信息    百度的坐标系统有百度米制坐标和百度经纬度坐标   从x,y节点数据经过转换即可获得这两个坐标,这个在稍后的会讲解。

要想通过程序模拟构建url来发送http请求  就需要先了解url的参数构成   经过本人的多次尝试  将url参数减少为

http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd=人民广场&c=289&pn=0

最重要的就是最后三个参数  wd是搜索的关键词   c是搜索区域对应的城市编码,上海市对应的就是289  pn是返回数据的页码  不同的搜索关键词返回的数据的页数是不同的   因为百度会返回很多相关的信息(POI数据)

我是通过关键词得到百度百度返回的POI数据的   这就需要在url的参数中输入不同的关键词和页码来获取不同的POI数据    那么事先就应该准备很多搜索的关键词 尽可能多的关键词可以获取更多的POI 数据       下篇会讲解该如何准备百万级别的搜索关键字