如题,想要通过经纬度知道附近都有哪些地点,这个可以通过高德地图提供的地理逆地理编码API和shapely库来获取数据。不开心的是,其实高德地图都提供了合适的端口可以直接拿到数据,眼瞎没看到,哎~不过了解到其他的知识也是很开心的
申请key
要使用高德地图的开放平台,需要先申请key。
应用管理->创建新应用->填写应用相关信息,包括应用名称、用途(限制了url链接的可使用范围)。
获取地图边界
如果是需要整个城市或者区的的边界,高德地图有API可以直接调用。如果是需要某块区域,可以使用高德地图的坐标拾取器,也非常方便。
在浏览器打开高德地图->选择底部的“开放平台”->进入开放平台后->选择”地图工具”->选择”坐标拾取器”,然后就可以在坐标上根据实际需求选择范围并获得对应的坐标。


比如有这样一张图需要获取边界,就可以大概对比着来点点点啦!

1 | # 拿到的边界坐标值 |
效果如下:

获取符合条件的坐标点
- 因为要抓取的区域比较小,所以每个点之间的距离也尽可能的小,不过这样拿到的数据就会有很多重复的。关于这一块的计算是参考L同学_的。
1 | # 获取所有可能的坐标点 |
- 因为纬度1°为111.3195km,经度每度为111.3195cos(纬度),遍历之后得到以下的数据(蓝色范围)。经过筛选之后,只有红色点的数据满足。
1 | # 筛选数据 |

获取结果
根据高德地图提供的API构建请求链接,然后发起请求就可以啦。具体需求可以查看手册进行设置,比如只需要抓取中餐厅,就可以设置poitype="中餐厅"
,详见poi类型.
1 | # -*- coding:utf-8 -*- |