TABLEAU调用中国地图和Python获取地址的经纬度

最近在TABLEAU社区上有人提问,想在TABLEAU中实现调用国内百度地图或者谷歌地图的功能。

谷歌地图我没用过,以前看过《触手可及的大数据分析工具:Tableau案例集》上面有介绍,大家可以去参考。百度地图调用一直就没找到方法,也略过。调用国内地图可以用AutoNavi.tms这个文件,双击即可,调用的是OpenStreetMap的背景地图,很好用,百度可以找到,坐标系应该谷歌一样的。

另外就是想将每个店铺的地理位置标注到地图上。

这个功能必须要知道每个店铺的经纬度才成,如果个别的可以通过坐标拾取器来手工获得,我以前用过这个网站,挺好用的http://www.gpsspg.com/maps.htm。但这里就有个问题,相同的地点不同地图的经纬度是不一样的,这个问题大家可以百度一下,因为坐标系不一样,用哪个地图做背景就用哪个地图的经纬度。

因为Tableau的国内地图很差,如果精确描述一些坐标点,放大后基本没有街道和道路等细节了,全是灰色的地图。所以这就要到上面提到的OpenStreetMap地图了。

如果是坐标点比较多,手工获取肯定慢,这可以调用高德的API接口获取(百度也有接口,但是百度地图有自己独有的坐标系,获取到的经纬度与偏差很大,Tableau无法用),获取后配合OpenStreetMap地图,基本可以实现需求,感觉也有偏差,但是偏差很小可以用。

首先注册高德的开发者权限,很简单(如果搞不定后边也不用看了,记得善用搜索引擎)。

各种语言的接口都有,我用python调用接口(因为我只会一点python),至于python的安装环境的搭建,推荐安装anaconda的安装包,网上安装教程很多,一路下一步即可,环境就搭建好了。然后运行下面程序即可输出经纬度(但是不确保一定准确,因为要转换的地址未必能找得到,高德会找近似的)。

 #!/usr/bin/env python3
 #-*- coding:utf-8 -*-

import requests
 
def geocode(address):
    parameters = {'address': address, 'key': 'XXXXXXXXXX'} #申请到的高德开发者key
    base = 'http://restapi.amap.com/v3/geocode/geo'
    response = requests.get(base, parameters)
    answer = response.json()
    print(address + "的经纬度:", answer['geocodes'][0]['location'])

if __name__=='__main__':
    #address就是想转换的地址
    address = ['北京市东城区东黄城根1号','北京市东城区东黄城根2号','XXXXXXX'] 
    for a in address:
        geocode(a)

也可关注公众号:saodisir(参悟Tableau)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、 什么是JVM?(虚拟机内存模型中定义的访问操作与物理计算机处理的基本一致!) JVM是Java Virtua...
    Tigoal通阅读 156评论 0 1
  • 卷一 净土法门的缘起 第一章 阿弥陀佛与极乐世界 1、南无阿弥陀佛六字洪名含义是什么? 南无,此翻恭敬,归命顶礼等...
    阿土ato9987阅读 805评论 0 0
  • 算算我已经很久很久没有来过了,现在宝贝老婆你对我到底是一个什么样的态度,我不懂我真的不懂,宝贝也许你也不懂我的痛吧...
    登者阅读 114评论 0 0
  • 2018年初草草的拟了一下年计划,依照惯例分为几大项:工作、学习、读书、社交、旅游、身体等,并尽可能的划分成可以量...
    laura的小窝阅读 314评论 0 0
  • 我终于要离开家 去我要去的地方 我怕 我怕这个地方我不喜欢 我怕我的家人会担心我 我去的地方时刻都在压迫我 我去的...
    北冥有辣条阅读 290评论 0 2