V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaobucvg
V2EX  ›  程序员

关于地址批量解析经纬度的问题

  •  
  •   xiaobucvg · 27 天前 · 1349 次点击

    友友们, 遇到一个问题, 系统需要根据一串客户地址来获取经纬度, 偏差不能太大

    例如: 输入 北京市密云区十里堡镇十里堡村富民路 20 号, 系统需要解析这串地址, 然后输出对应的经纬度

    输入的地址不一定是什么样子, 有可能是 青岛市市南区 xx 大厦放门口快递柜, 青岛市市北区 xx 小区尾号 xxxx 等等.

    目前我使用的方案是:

    1 先调用阿里云的快递地址解析接口, 尝试解析出标准地址结构 2 拼接解析出的地址结构调用百度地图的 POI 搜索接口 3 获取搜索到的第一个 POI, 获取该 POI 的经纬度

    但是目前来看, 许多地址的准确度还是堪忧, 有人能出出招吗?

    PS: 不能输出多个地址让用户手动选, 因为做的是批量导入解析

    8 条回复    2024-10-25 18:06:00 +08:00
    concernedz
        1
    concernedz  
       27 天前
    zhuang0718
        2
    zhuang0718  
       27 天前 via iPhone
    精准度取决于 1⃣️调用接口匹配结果精度,2⃣️不同接口返回的经纬度不一定是一个坐标系,需要对结果在批量进行坐标转换(转换成你最终要用的坐标系)
    davin
        3
    davin  
       27 天前
    百度和高德地图都提供地理编码 API 服务,可以试试他们的结构化地址与经纬度之间相互转换功能。

    对于输入地址,可以先提前过滤一遍,比如去掉“放门口快递柜”和“尾号 xxxxx”这种。然后多家 API 交叉比对,提高地址判断的准确性。

    最后,可以转换下思路:
    1. 看看国内几达几通、顺风或者京东有没有提供快递地址相关的 API ,说不定比客户自己输入的地址更加准确。
    2. 优化地址输入方式,和地图 API 进行关联,输入关键字时,同时给出下拉列表让用户自己选取。
    perbugwei
        4
    perbugwei  
       27 天前
    高德和百度的坐标系不是一个,要看你要用到哪里。而且我试过百度和高德的,不一定能获取到你想要的,因为原始的地址数据都不准确。最后的最后解决办法就是人工校验。
    635925926
        5
    635925926  
       27 天前
    逆地理编码不需要格式化
    PositionZero
        6
    PositionZero  
       27 天前 via Android
    不需要用 POI 搜索,直接用地理编码
    liplushe
        7
    liplushe  
       27 天前
    你需要了解一些 GIS 坐标系统的知识,标准的经纬度坐标系统包括 WGS84/CGCS2000 ,但是由于合规性要求的存在,互联网地图都对准确坐标做了非线性加密,这个坐标系统叫做 GCJ02 (国测局 02 坐标系,又叫火星坐标系),目前高德地图和腾讯地图用的都是 GCJ02 ,而百度地图在 GCJ02 基础上又做了一次非线性加密,因此你通过不同地理编码服务得到的经纬度坐标是不同的。
    kgloveyou
        8
    kgloveyou  
       27 天前
    百度地图 API 返回的火星坐标系,是有偏移的,这是地图合规的要求
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1319 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:48 · PVG 01:48 · LAX 09:48 · JFK 12:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.