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

54 天前
 xiaobucvg

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

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

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

目前我使用的方案是:

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

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

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

1447 次点击
所在节点    程序员
8 条回复
concernedz
54 天前
zhuang0718
54 天前
精准度取决于 1⃣️调用接口匹配结果精度,2⃣️不同接口返回的经纬度不一定是一个坐标系,需要对结果在批量进行坐标转换(转换成你最终要用的坐标系)
davin
54 天前
百度和高德地图都提供地理编码 API 服务,可以试试他们的结构化地址与经纬度之间相互转换功能。

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

最后,可以转换下思路:
1. 看看国内几达几通、顺风或者京东有没有提供快递地址相关的 API ,说不定比客户自己输入的地址更加准确。
2. 优化地址输入方式,和地图 API 进行关联,输入关键字时,同时给出下拉列表让用户自己选取。
perbugwei
53 天前
高德和百度的坐标系不是一个,要看你要用到哪里。而且我试过百度和高德的,不一定能获取到你想要的,因为原始的地址数据都不准确。最后的最后解决办法就是人工校验。
635925926
53 天前
逆地理编码不需要格式化
PositionZero
53 天前
不需要用 POI 搜索,直接用地理编码
liplushe
53 天前
你需要了解一些 GIS 坐标系统的知识,标准的经纬度坐标系统包括 WGS84/CGCS2000 ,但是由于合规性要求的存在,互联网地图都对准确坐标做了非线性加密,这个坐标系统叫做 GCJ02 (国测局 02 坐标系,又叫火星坐标系),目前高德地图和腾讯地图用的都是 GCJ02 ,而百度地图在 GCJ02 基础上又做了一次非线性加密,因此你通过不同地理编码服务得到的经纬度坐标是不同的。
kgloveyou
53 天前
百度地图 API 返回的火星坐标系,是有偏移的,这是地图合规的要求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1083454

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX