反馈已提交

网络繁忙

将经纬度数据转换为中文地址

  • 文档创建者:Wendy123456
  • 历史版本:9
  • 最近更新:Wendy123456 于 2024-06-06
  • 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




    附件列表


    主题: 数据开发-定时任务
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持