最新历史版本 :将经纬度数据转换为中文地址 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

用户数据库存储了经纬度数据,希望转换成对应的中文地址(国家、省份、城市、区县、街道等),最后将转换后的数据保存到数据库中。

1.2 实现思路

可以调用高德或百度地址转换的 API 接口实现。

1.3 任务展示

FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 中定时任务经纬度转中文地址」

68.png

2. 操作步骤编辑

2.1 场景模拟

示例数据:经纬度信息.xls

示例数据如下图所示:

1717660737178018.png

「经纬度信息」表中保存着高德坐标系的经纬度数据,想获取对应的百度地图中文地址(国家、省份、城市、区县、街道等),将转换后的数据保存到数据库中。如下图所示:

7.png

2.2 方案说明

调用百度地址转换的 API 接口实现:

1)通过「参数赋值」节点将经度和纬度数据作为参数输出,使用 坐标转换 接口,将高德坐标系的经纬度数据转换为百度坐标系的经纬度数据。

2)使用 逆地理编码 接口,将百度坐标系经纬度数据转换为中文。

3)使用「循环容器」节点,遍历所有参数执行上述过程。

2.3 申请百度 API 密钥

1)访问http://lbsyun.baidu.com/apiconsole/key,登录百度账号并完成实名认证。

2)点击「创建应用」按钮,自定义「应用名称」,「应用类型」选择服务器端,「请求校验方式」选择IP白名单校验,IP白名单处输入0.0.0.0/0,点击「提交」按钮。

提交后,可看到密钥信息。如下图所示:

点击查看具体步骤
46.png

2.4 取出经纬度数据并输出为参数

1)新建定时任务,拖入「参数赋值」节点。

2)取出经纬度数据,并将经度和纬度输出为参数。如下图所示:

参数默认值只是为了下游节点提前预览设置的,实际运行时不会用到这个默认值。

48.png

2.5 设置循环容器

使用「循环容器」节点,将「参数赋值」节点的输出结果赋值给「循环容器」节点后,一次次循环来遍历赋值节点的输出结果。

循环方式选择「遍历循环」,勾选 jingdu 和 weidu 两个参数,需要将这两个参数传递给「循环容器」中的节点。如下图所示:

1692587152494816.png

2.6 将原始坐标系转换为百度坐标系

「经纬度信息」表中保存着高德坐标系的经纬度数据,需要使用百度坐标系的 API 接口,转换为百度坐标系。

2.6.1 设置 API 输入算子

1)将「数据转换」节点拖入「循环容器」中,进入「数据转换」节点,拖入「API输入」算子。

2)「API输入」算子中,请求URL说明如下:

需要用到的请求参数说明:

API 接口说明:坐标转换

请求参数
含义使用说明
coords需转换的源坐标,多组坐标以“;”分隔
(经度,纬度)
${jingdu},${weidu}----注意精度在前,纬度在后
ak开发者密钥,申请AK本文 2.3 节中申请的密钥
from

源坐标类型:

3:火星坐标(gcj02),即高德地图、腾讯地图和MapABC等地图使用的坐标

本文「经纬度信息」表中保存着高德坐标系的经纬度数据,所以参数值写3
to

目标坐标类型:

5:百度地图采用的经纬度坐标(bd09ll)

由于需要转换成百度地图采用的经纬度坐标,所以参数值写 5 

所以,请求URL为:https://api.map.baidu.com/geoconv/v1/?coords=${jingdu},${weidu}&ak=vUyAM6tIqG4c2FJ3dtNxW3GMt9F62Qfn&from=3&to=5

「API输入」算子设置界面如下图所示:

1692588167904907.png

点击「数据预览」,如下图所示:

1692597423986103.png

result 字段为 JSON 格式数据,需进行解析得到百度坐标系的经纬度数据(即经度和纬度数据单独为一列,便于后续转化为对应的中文地址)。

2.6.2 解析经纬度数据

1)拖入「JSON解析」算子,解析 result 字段。不勾选「解析后保留所有上游输出字段」按钮,只保留解析后的字段信息。如下图所示:

52.png

2)点击「数据预览」,解析后数据如下图所示:

58.png

2.6.3 将经纬度数据作为参数输出

将解析后的经纬度数据,作为参数输出,便于后续转化为中文地址。

1)拖入「参数输出」节点,将 x 值输出为参数 jingdu1 ,y 值输出为参数 weidu1。如下图所示:

60.png

2)点击右上角「保存」按钮。

2.7 将百度坐标系经纬度转换成中文

2.6 节已将高德坐标系经纬度数据转换为百度坐标系经纬度数据,并作为参数输出,本节将百度坐标系经纬度数据转换为中文。

2.7.1 设置 API 输入算子

1)将「数据转换」节点拖入「循环容器」中,进入「数据转换」节点,拖入「API输入」算子。

2)「API输入」算子中,请求URL说明如下:

需要用到的请求参数说明:

API 接口说明:逆地理编码

请求参数
含义使用说明
location根据经纬度坐标获取地址${weidu1},${jingdu1}----注意纬度在前,精度在后
ak用户申请注册的key,自v2开始参数修改为“ak”,之前版本参数为“key” 申请ak本文 2.3 节中申请的密钥
output输出格式为json或者xml本文示例输出为 json 格式
coordtype坐标的类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84ll( GPS经纬度) 坐标系说明bd09ll(百度经纬度坐标)

所以,请求URL为:

https://api.map.baidu.com/reverse_geocoding/v3/?location=${weidu1},${jingdu1}&ak=vUyAM6tIqG4c2FJ3dtNxW3GMt9F62Qfn&output=json&coordtype=bd09ll

「API输入」算子中,取消勾选「将解析后的JSON数据展开为二维表」按钮,不使用二维表形式展示数据,使用 json 格式展示数据,后续使用「JSON 解析」节点统一对数据进行解析。

1692596916741477.png

2.7.2 解析数据

1)拖入「JSON解析」算子,对 2.7.1 节的数据进行解析。不勾选「解析后保留所有上游输出字段」按钮,只保留解析后的字段信息。

选择解析字段:lng、lat、country、province、city、district、town、street、street_number,需注意,勾选节点时,建议勾选该节点的父节点。具体勾选方式请参见下图:

61.png

2)点击「数据预览」,如下图所示:

63.png

2.7.3 输出数据

1)拖入「DB表输出」算子,将数据输出。如下图所示:

65.png

2)点击「字段映射」,删除 lng、lat 字段。

3)点击右上角「保存」按钮。

2.8 效果查看

1)点击「保存并运行」按钮,任务运行成功后,如下图所示:

66.png

2)数据库表信息如下图所示:

7.png