背 景
从本科开始我就对城市规划中的数据分析很感兴趣,研究生在美国学了data science。有了一些编程能力之后,感觉自己之前收集数据的方法实在是不太明智(当然,现在的这个小程序也不怎么聪明),于是写了一个小程序来帮助大家简单直白地获取POI。
首先简单介绍一下,小程序使用的是百度的API。API可以理解为一个接口,让用户能够向服务器请求数据。很多网站都有API,谷歌,高德,微博都有。有了API我们就可以合法地获取数据,而不是使用风险很高的“爬虫”。API通常是付费的,不过百度目前免费,每个用户每天有两千次的使用权限,别太贪心,这个数量是够用的。
在正式开始介绍小程序的使用方法前,我还是想说,获取开源数据非常容易,在ArcGIS里搞一些莫名其妙的图也很容易,但是难点仍然是如何解读结果,如何把结果应用到规划和设计。
测试环境: win 10 pro x64
操 作 步 骤
第一步:下载程序
百度网盘:
https://pan.baidu.com/s/1sKW3cJYHVxQ1a0a52m-y9A
提取码: pdmb
或Dropbox:
https://www.dropbox.com/s/6ugh5m0vdy4qfx7/BaiduPoi.exe?dl=0
下载exe文件后,双击打开即可,无需安装。
第二步:获取AK
AK即API Key,是一个用户身份的验证,要输入正确的API Key程序才能正常使用。好好保管,不要泄露。
http://lbsyun.baidu.com/
登录-控制台-创建应用
应用类型选“浏览器端”。
不要尝试用截图里的key,已经被我删掉了。
第三步:双击打开软件BaiduPOI,依次输入以下内容
漫长的等待,出现提示后依次输入。
1. 输入API Key
每次使用软件只需要在第一次搜索时输入API Key,之后会默认使用同一APIKey。
2. 输入POI类型
详见页面
http://lbsyun.baidu.com/index.php?title=lbscloud/poitags
3. 输入中心点坐标
建议使用百度坐标拾取器:
https://api.map.baidu.com/lbsapi/getpoint/index.html
目前只能实现圆形搜索,更多搜索方法请参考:
http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-placeapi
4. 输入坐标类型
1)WGS84ll即GPS经纬度
2)GCJ02ll即国测局经纬度坐标
3)BD09l即百度经纬度坐标
建议:wgs84不要在国内用,gcj是高德坐标系。百度API就用BD09ll,取中心点坐标的时候也用百度取。
5. 输入地点名称
下载结束后会自动生成一个输入地点名称的文件名,相同地点名的不同POI类型会分别命名同在同一文件夹下,如图所示:
6. 输入搜索半径
以米为单位
采集数据结果截图展示:
CSV格式
Shp格式
一 些 建 议
本程序尽量放在桌面上使用。
API每次最多返回400条数据,所以搜索半径尽量小,一定用二级行业分类,宁可多用几个中心点多搜索几次。
由于上一条提到的问题,所以多次搜索的时候可能会出现重复,这种情况下就不能直接使用shp,把几次搜索结果的csv文件放在excel里删去重复值。
在ArcGIS中使用时,导入shp后defineprojection为GCS_WGS_1984,SRID为4326。虽然前文说了不要使用WGS_1984,但是ArcGIS里并没有百度的坐标系,百度和高德也只是在wgs84上进行了一次加密。只要你其他数据源和POI使用的同一套地理坐标系就好。
更多说明请参考:
http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-placeapi