首先,要可以查詢到照片地址,查詢的照片必需要開GPS拍,且上傳時用原圖……html
查詢圖片的exif信息,使用exifread包python
import exifread img = exifread.process_file(open(path), 'rb') longitude = img['GPS GPSLongitude'] latitude = img['GPS GPSLatitude']
這裏建議,能夠找一個exif查看器上傳一個圖片看一看,對GPS GPSLongitude等信息有一個直觀印象git
到這裏,我花費時間最長才發現的一個坑。現象是我寫完後,讀取結果老是[],print(resp.text)發現經緯度根本沒有讀進去。type(longitude)才發現這是<class 'exifread.classes.IfdTag'>對象。這才明白,我根本沒有獲取到值得緣由。之後的教訓是:對一個未用過的工具,能夠一步步看下輸出的結果是什麼。json
longitude_gps = longitude.values latitude_gps = latitude.values
下一步,我一開始也不清楚,拿到的是度分秒的經緯度,須要轉化爲十進制的經緯度api
轉換公式爲 度+分/60+秒/3600,獲得longitude_new, latitude_news函數
吸收上一步教訓,longitude_gps[0],longitude_gps[1],longitude_gps[2] 分別爲度,分,秒,但要用.num方法獲取值工具
按道理,咱們已經將度分秒的經緯度進行了轉換,用於最後一步。測試
import requests import json url = 'https://restapi.amap.com/v3/geocode/regeo?key={}&location={}' #詳見高德逆解析地理API文檔 location = '{},{}'.format(longitude_new, latitude_news) api_key = 'sdasadsadsad' #申請成爲高德我的開發者。添加應用管理既可 resp = requests.get(url.format(api_key, location)) data = json.loads(resp.text) address = data.get('regeocode').get('formatted_address') print(address)
再回頭看以上,還有兩個問題是在實際測試中發現的。url
1. 經緯度,高德提供小數點後6位, 所以要約一下,用round函數便可rest
2. longitude_gps[2] 在整數的時候沒問題,但會遇到m/n的狀況,這沒法直接運算,會出現較大偏差。更改成eval(str(latitude_gps[-1]))計算。
原文出處:https://www.cnblogs.com/break03/p/11569572.html