首頁>技術>

今天分享如何做自定義地圖,用tableau可以做具體到城市的地圖,但是如果想把自定義的地址(例如街區等)繪製成地圖,tableau就不夠用了,此時需要用到BDP來做,但是需要用到經緯度,所以在你擁有“XX市XX街道XX小區“這樣的地址時,可以用python呼叫API介面來批次得到這批地址的經緯度,下面是詳細的步驟(這裡用到的地圖是高德地圖)

如何使用API並申請key

1.因為需要用高德地圖的介面,需要先申請key,先打開了解下高德的開發者文件:

https://lbs.amap.com/api/webservice/guide/api/georegeo

2.申請key

用python把地址轉化為經緯度

拿到key後,把以下程式碼放到python編輯器中執行(因為我是用地址轉化為經緯度,所以用的是http://restapi.amap.com/v3/geocode/geo

程式碼

import requests

import codecs

from openpyxl import Workbook

wb = Workbook()

sheet = wb.active

def get_location(address, i):

print(i)

url = "http://restapi.amap.com/v3/geocode/geo"

data = {

'key': '輸入自己申請的key',

'address': address

}

r = requests.post(url, data=data).json()

sheet["A{0}".format(i)].value = address.strip('')

print(r)

if r['status'] == '1':

if len(r['geocodes']) > 0:

GPS = r['geocodes'][0]['location']

sheet["B{0}".format(i)].value = '[' + GPS +']'

else:

sheet["B{0}".format(i)].value = '[]'

else:

sheet["B{0}".format(i)].value = 'none'

f = codecs.open(r"zuobiao.csv", "r", "utf-8")

i = 0

while True:

line = f.readline()

i = i + 1

if not line:

f.close()

wb.save(r"zuobiao.xlsx")

break

get_location(line, i)

用windows出現報錯:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xbd in position 0: invalid start byte

則f = codecs.open(r"zuobiao.csv", "r", "utf-8")

改為f = codecs.open(r"zuobiao.csv", "r”)

補充,下面是我的檔案資料:zuobiao.csv

用bdp個人版做自定義地圖

開啟bdp個人版,把用python轉化的經緯度資料放進去,按下圖操作即可

18
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Java Web相關技術面試題