FME爬取高德POI数据

时间:2024-03-27 20:14:45

参考https://blog.csdn.net/qq_28148071/article/details/85837919?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

 

 

首先将需要获取POI的区域转为WGS84的经纬度坐标,转换通过ArcGIS实现,本来想通过FME实现但公式计算有些复杂,而只用ArcGIS也方便许多。

CGCS2000投影(地理)坐标系转WGS84坐标转换方法参考:https://blog.csdn.net/SeptDays/article/details/104392507

我看其他很多博客使用的是百度POI获取,我用的高德,其实大同小异。主要还是构造url调用高德API提供的web服务。需要的数据主要有:1.获取范围(可以使用多边形,多边形需要首尾坐标相同,我为了方便使用的外包络矩形。2.POI类型。3.页码(默认一页20条数据)。4.**

FME爬取高德POI数据

思路:

1.获取选定区域的外包络矩形左上右下坐标。

2.构造url

3.翻页需要循环

4.输出为点

我的原始数据范围较大,本来可以用Tiler划分瓦片直接输出,调试一次数据量很大,因此我选择编号为4的乡镇作为范围。注意高德地图输入的多边形坐标小数点最多6位。

FME爬取高德POI数据

这是循环中的数据传输方式。

FME爬取高德POI数据

高德的数据主要有page来控制,新增变量page_num,利用循环构造url。

我选择的输出方式是json,FME能够很好的解析json格式的数据,当然xml也有解析的转换器。

高德获取到的POI中有一项是count,是这一块区域里的count值,可以利用他来判断跳出循环的条件,也可以当获取到的poi数据为空时跳出循环。我选择的是后一种,更具有可移植性。

FME爬取高德POI数据

利用ExpressionEvalutate完成page_num的自增,再连接url。每一次循环得到的数据都与之前的拼接在一起。stringConcatenor_2完成这个工作,构造一个递归循环。cache+=_response_body

跳出循环再输出成点,用VertexCreator替换为点。

下一步打算做

1.抓取数据量比较大时考虑使用代理

2.普通key抓取量每天有限制是2000,准备ie'bnuhz做ouz一个'key池子