美文网首页Tableau知识
TABLEAU调用中国地图和Python获取地址的经纬度

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

作者: 扫地sir | 来源:发表于2018-09-10 10:15 被阅读172次

    最近在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)
    

    相关文章

      网友评论

        本文标题:TABLEAU调用中国地图和Python获取地址的经纬度

        本文链接:https://www.haomeiwen.com/subject/yggjgftx.html