【Python爬蟲】第四課(查詢照片拍攝地址)

首先,要可以查詢到照片地址,查詢的照片必需要開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

相關文章
相關標籤/搜索