首頁>科技>

背景收集資訊如何獲取經緯度註冊高德開發者賬號建立key獲取經緯度建立資料視覺化專案最後背景

前幾天微信群聊的同學弄了一個什麼群接龍(微信小程式),大概的目的就是統計一下同學大家目前都是哪個省份、那個城市、從事什麼型別的工作,現在的住址、聯絡方式是什麼。大家都很積極地填寫完成後,只能由群接龍發起者登入到後端下載大家填寫好的excle表格。然後做了些簡單的統計彙總。然後把這個excle發到了群裡供大家參閱。

這時候,有些同學說這樣不錯。但是可惜看不到具體的地理位置,能否和疫情分佈圖一些,把這些資訊在地圖上展示出來。於是,我就想這個該怎麼實現呢?網上查閱了一些資料之後,就動手走了一個demo。接下來分享一下具體的實現過程。

收集資訊

這裡可以不使用小程式,可以使用一個什麼雲文件之類的,提供大家可以同時線上編輯的。任選一個就可以了。選擇之後,讓大家都可以開啟,群裡的同學都把各自的資訊填寫到這個Excel中。excle的列大概有如下幾個列,下面舉例展示一下這個excle的格式。

如何獲取經緯度

在收集完同學填寫好的資訊之後,做一些簡單的清洗資料。我們要想在地上展示資料,最重要的是什麼?是要獲取資料中對應的經緯度,有了經緯度的資訊,才可以把這些資訊在地上一個一個展示出來。

問題:我們怎麼獲取這些資料的經緯度呢?

從上面的示例資料中可以看出,我們要想在地圖上展示這些資料,就要把每一行資料都打上經緯度的標記。而資料中的詳細地址這一列,正好可以在地圖上對一個個點的位置。所以,我們可以根據這個地址列,找到每一個地址列對應的經緯度,這樣就可以把一行行資料,根據經緯度的值,在地圖上以一個個點的方式呈現出來。

問題:怎麼根據地址獲取地址的經緯度呢?

高德API提供了一個“地理/逆地理編碼”的服務:你給它傳入一個地址,他給你返回這個地址的詳細資訊,其中就有這個地址對應的經緯度。如下是高德API的說明,可以根據下圖中的位置看下具體的說明。高德開放平臺的首頁地址:https://lbs.amap.com/

下面是一個根據地址,獲取經緯度的演示示例:你可以在這個頁面中https://lbs.amap.com/api/webservice/guide/api/georegeo檢視並執行這個示例:

註冊高德開發者賬號

要想使用高德地圖的API,首先我們要註冊一個個人的高德開發者賬號。這個很簡單,使用自己的手機號註冊一個就可以了。註冊完成後,有一些免費的呼叫量給我開發者測試使用。如果是要大批次的呼叫,則需要註冊為企業賬號。在註冊之後需要提供企業的營業執照等資料才可以註冊成功。此時對高德API的呼叫量會增加一些,但是也不會增加太多。如果還是不夠用,那麼只能購買高德的API介面的呼叫量。但是對於我們開發者測試來說,個人型別的高德開發者賬號足夠了。

註冊的時候參考下面圖片一步步填寫資訊,下一步就OK了。註冊頁面的地址為:https://lbs.amap.com/dev/id/choose

建立key

在我們註冊完成高德開發者賬號之後,我們並不能直接去呼叫高德的API介面,還需要基於我們註冊的賬號,在這個賬號下面,建立一些key,而這些key就是你去呼叫高德API的鑰匙。有了這些鑰匙才可以真正地去呼叫高德的API介面,這些key需要在呼叫API介面的時候,作為一個引數傳入進去,高德的後臺用來識別是哪個賬號在呼叫高德的API介面。

問題:如何建立key?

新增key的頁面參考如下:

建立完成之後,把key值複製一下記錄下來。待會呼叫高德API介面的時候,需要使用到。

獲取經緯度

在我們有了開發者賬號之後,也建立了key。接下來就是要處理我們的資料了。我們需要把每一個同學的住址,呼叫高德的API介面,然後獲取每一個地址對應的經緯度。

推薦使用Python來處理Excel中的資料。把Excel中的資料讀取成datafram,然後找到我們的地址所在的列,獲取裡面的地址,然後迴圈調取下面的獲取經緯度的方法,就可以得到我們每一個地址對應的經緯度。

獲取經緯度的方法,示例程式碼如下:它需要傳入兩個引數,第一個是我們的地址,第二個是我們在高德開發者賬號中建立的key。它會返回一個經緯度。然後把這個返回的經緯度和地址一對一對應關聯起來整合到從Excel中讀取出來的dataframe中即可,在dataframe中增加一列“經緯度”,用於存放獲取到的經緯度。然後把這個整合後的dataframe再生成一個新的Excel檔案,這樣就完成了經緯度的獲取。

# https://restapi.amap.com/v3/geocode/geo?address=北京市朝陽區阜通東大街6號&output=XML&key=<使用者的key># //restapi.amap.com/v3/geocode/geo?key=您的key&address=北京市朝陽區阜通東大街6號&city=北京#調取高德api示例import requestsfrom requests.exceptions import ReadTimeout, ConnectTimeout# 根據地址獲取經緯度def getjingweidu(address,key):    parameters = {'address':address,'key': key}    base = 'https://restapi.amap.com/v3/geocode/geo'#     base = 'https://restapi.amap.com/v3/config/district'    loc = 0    try:        response = requests.get(base, parameters, timeout=2)        if response.status_code == 200:            answer = response.json()#             print(answer)            loc = answer["geocodes"][0]["location"]        else:            pass    except (ReadTimeout, ConnectTimeout):        pass    return loce

我們手動調取一下這個方法,看下結果如下:

建立資料視覺化專案

有了包含經緯度的資料之後,資料最後的結果如下:

處理後的資料截圖如下:

資料準備好之後,我們開始做資料視覺化的工作。在我們的高德開發者賬號平臺中,登入我們註冊的賬號,選擇“資料視覺化”選單

進入如下介面

上傳Excel檔案,如下所示:

現在,我們已經把資料上傳上去了,接下來開始建立視覺化專案:

選擇我們上傳的資料Excel資料檔案:

然後在裡面進行一些的選擇性的配置操作,就是點點點,然後確定等等操作。就可以出現如下所示的效果圖。

我們可以把這個資料庫視覺化的專案透過連線的方式分享給其他人檢視,也可以把這它生成圖片,也可以把它以連線的方式嵌入到我們的專案網頁中。

資料視覺化專案有很多型別,不僅可以建立這樣的點,還可以建立點與點之間的連線,圍欄資訊圖,人員分佈熱力圖等等。下面貼幾張圖片供大家感受一下,效果還是很炫酷的。

最後

這樣,我們把一份Excel資料給視覺化的展現了出來。其中的難點就是如果去分析我們的資料,觀察我們的資料,哪些資料列可以和地圖關聯起來。我們這份資料中就是透過地址來找到這些地址的經緯度,然後才可以地圖關聯起來的。

希望這篇文章能夠給你以後做類似的專案的時候帶來一些啟發。

12
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 科技賦能,華為雲GaussDB助千行百業數字化轉型