今天学习了一个新技能,分享一个。

问题:客户发给我的数据有大量的不明确的地理位置,没有经纬度坐标,但是又需要地图展示。如何为批量地点增加坐标?

工具:Tableau Prep;百度。

一、百度解析

在百度地图有一个公开的解析地点服务,可以批量获得经纬度坐标,地址如下:

http://lbsyun.baidu.com/jsdemo.htm#i7_3

按照下图的指引,可以输入自己的地址代替,然后 运行——解析即可获得。

地理位置解析

二、如何批量获得标准化的地理位置

百度没有那么聪明,所以我们要在自己的地理位置中尽可能加入明确的信息,比如城市和区的名字。

客户给我的原始数据大致如下:

屏幕快照 2019-09-02 下午7.03.08.png

很明显,这个地址会让人抓狂,有不必要的空格,没有明确的归属辖区,这样导入很容易出错。因此我们要从其他字段中加入“城市”和“区域”的字段;如果在desktop中,可以使用计算字段完成:

屏幕快照 2019-09-02 下午7.05.20.png

这样可以保证解析的地址即便不准确,也不会偏离太多。

但是,考虑到获得经纬度还需要和之前的数据做匹配,Desktop显然不是最好的方法;因此我使用了Prep。我现在原来的流程中新增了一个分支,排除null值,排除空格,用计算字段把地址补充完成,按照要求加入两侧的引号和逗号,然后导出来csv文件。

屏幕快照 2019-09-02 下午7.13.26.png

之后打开csv,把第一列复制到上面的百度地址对应的代码中,删除最后一列的逗号,点击运行–解析,等待……

漫长的等待,我把博客写到这里,百度才解析到2000多行,辛苦它了;看样子至少还要四十分钟才能完成。

 

三、反向处理

获得经纬度容易,重新接上去可不简单,幸好我们有Tableau Prep。使用连接就可以轻松完成。

1、把百度返回的数据提取地址、经度和纬度,分别命名;

2、使用完整地址和主数据做连接,从而把经纬度追加到数据后面;

3、完成。

屏幕快照 2019-09-02 下午7.46.49.png

 

之后就可以在desktop中生成地图了。

thanks 佳杰·志伟;戴姆勒·冰冰

Sep 2, 2019