
項(xiàng)目簡介:本次項(xiàng)目主要學(xué)習(xí)了如何查找相片中的 Exif 信息,并通過 Exif 信息中的 GPS 數(shù)據(jù)在百度地圖中進(jìn)行定位標(biāo)點(diǎn),以確定相片的拍攝地點(diǎn)。本次實(shí)驗(yàn)的目的旨在通過包含 GPS 信息的相片進(jìn)行取證調(diào)查,當(dāng)然個人娛樂也可以!
本項(xiàng)目發(fā)布在 實(shí)驗(yàn)樓 ,完整教程及在線練習(xí)地址: 基于 PyQt5 實(shí)現(xiàn)地圖中定位相片拍攝位置
一、實(shí)驗(yàn)說明
1. Python 版本
Python 3.x
2. 知識點(diǎn)
實(shí)驗(yàn)中將會學(xué)習(xí)并實(shí)踐以下知識點(diǎn):
PyQt5 框架基本GUI組件的使用
PyQt5 中信號和槽的用法
PyQt5 中 QWebView 的基本用法
百度地圖 URL API 標(biāo)點(diǎn)功能的用法
利用 piexif 庫實(shí)現(xiàn)相片 GPS 信息的提取
3. 效果圖

二、理論基礎(chǔ)
以下內(nèi)容整理自百度百科、維基百科,參考鏈接:
Exif
PyQt5
Qt
百度地圖-URI API
1. Exif
Exif 是一種圖像文件格式,它的數(shù)據(jù)存儲與 JPEG 格式是完全相同的。實(shí)際上 Exif 格式就是在 JPEG 格式頭部插入了數(shù)碼照片的信息,包括拍攝時的光圈、快門、白平衡、ISO、焦距、日期時間等各種和拍攝條件以及相機(jī)品牌、型號、色彩編碼、拍攝時錄制的聲音以及 GPS 全球定位系統(tǒng)數(shù)據(jù)、縮略圖等。這節(jié)課我們只用到了 Exif 中的 GPS信息,將 GPS信息 提取出之后,我們就可以用 經(jīng)緯度 來定位相片拍攝的位置了。
2. PyQt5
PyQt 是由 Phil Thompson 開發(fā)的一個創(chuàng)建 GUI 應(yīng)用程序的工具包。它是 Python 編程語言和 Qt 庫的成功融合。目前有兩個分支,分別是 PyQt5 和 PyQt4。PyQt4 基于 Qt4 開發(fā),PyQt5 則是 Python 基于 Qt5 開發(fā)的。由于 Qt5 相對于 Qt4 來說增加了很多新特性,所以這次實(shí)驗(yàn)我們將采用 PyQt5 來實(shí)現(xiàn)本次實(shí)驗(yàn)的 GUI。
3. 信號與槽
信號 與 槽是 Qt 中的 核心機(jī)制。在創(chuàng)建事件循環(huán)之后,通過建立信號與槽的連接可以實(shí)現(xiàn)對象之間的通信。當(dāng)信號發(fā)射時,連接的槽函數(shù)將會自動執(zhí)行。在 PyQt5 中信號和槽通過 object.signal.connect() 的方式連接。
4. 百度地圖-URI API
百度地圖URI API是為開發(fā)者提供直接調(diào)起百度地圖產(chǎn)品(百度Web地圖、百度地圖手機(jī)客戶端)以滿足特定業(yè)務(wù)場景下應(yīng)用需求的程序接口,我們只需按照接口規(guī)范構(gòu)造一條標(biāo)準(zhǔn)的URI,就可以在PC和移動端瀏覽器或移動開發(fā)應(yīng)用中調(diào)起百度地圖產(chǎn)品,進(jìn)行地圖展示和檢索、線路查詢、導(dǎo)航等功能,無需進(jìn)行復(fù)雜的地圖功能開發(fā)。在本次試驗(yàn)中,我們只需要用到百度地圖-URI API中的 反地址解析 接口,調(diào)用該接口可調(diào)起PC或Web百度地圖,經(jīng)過逆地理編碼后,以標(biāo)注形式顯示出位置和地址信息,詳細(xì)文檔請參考 web端URI API 。
三、環(huán)境配置
工欲善其事,必先利其器,現(xiàn)在我們就來把我們的開發(fā)環(huán)境搭建起來。PyQt5 依賴 Qt5,我們先把 Qt 安裝上。
新建個下載目錄:
mkdr download & cd download

下載 Qt 5.7.0:
wget http://mirror.bit.edu.cn/qtproject/archive/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run

下載下來可能沒有執(zhí)行權(quán)限,我們更改一下權(quán)限:
sudo chmod 777 qt-opensource-linux-x64-5.7.0.run
開始安裝,一路 next 就可以了:
./qt-opensource-linux-x64-5.7.0.run

接下來安裝 PyQt5:
sudo apt-get install python3-pyqt5
這樣安裝完 PyQt5 默認(rèn)不帶 QWebKit 模塊,現(xiàn)在我們需要手動安裝一下:
sudo apt-get install python3-pyqt5.qtwebkit
至此我們的開發(fā)環(huán)境就搭建好了。