照片原圖獲取 經(jīng)緯度 和 逆地理編碼(現(xiàn)實(shí)地址)

通過(guò)照片原圖獲取 經(jīng)緯度 和逆地理編碼(現(xiàn)實(shí)地址)

重要前提:拍攝手機(jī)是android&開(kāi)啟GPS。

原理:在手機(jī)拍攝照片的時(shí)候會(huì)默認(rèn)獲取GPS信息停士,以及一些設(shè)備信息和圖像信息挖帘。這里獲取地址會(huì)使用到高德地圖的逆地理編碼接口,發(fā)送接口請(qǐng)求會(huì)使用到key(這個(gè)需要通過(guò)個(gè)人開(kāi)發(fā)者去獲认虼伞)肠套,這里查看獲取key的獲取方式高德開(kāi)發(fā)文檔猖任。

少?gòu)U話你稚,看效果!

運(yùn)行結(jié)果

講解一下:這有什么用呢朱躺?好像也沒(méi)啥用啊刁赖,但是如果你放在你的網(wǎng)站里提供娛樂(lè)也是不錯(cuò)的。

少?gòu)U話长搀,直接上代碼宇弛!

import json
import exifread
import requests


class Search:
    def __init__(self):
        self.url = """http://restapi.amap.com/v3/geocode/regeo?key={key}
                    &location={longitude},{latitude}&poitype=&radius=&xtensions=&batch=false&roadlevel=0"""
        self.key = ''  # 需要去高德獲取
        self.headers = {
            "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/79.0.3945.88 Safari/537.36",
        }
        self.longitude = None  # 經(jīng)度
        self.lg_float = None  # 經(jīng)度小數(shù)
        self.latitude = None  # 緯度
        self.lt_float = None  # 緯度小數(shù)

    def get_gps_by_photo(self, ptah):
        """
        讀取照片中 GPS 信息
        :param ptah: 獲取照片的本地路徑
        :return:
        """
        with open(ptah, 'rb') as f:
            contents = exifread.process_file(f)
            for key in contents:
                if key == "GPS GPSLongitude":
                    self.longitude = self.create_string(contents[key].values)
                    self.lg_float = self.transform_float(contents[key].values, contents['GPS GPSLatitudeRef'])
                    # print("經(jīng)度 =", self.longitude, contents['GPS GPSLatitudeRef'])
                    print("經(jīng)度小數(shù) =", self.lg_float)
                elif key == "GPS GPSLatitude":
                    self.latitude = self.create_string(contents[key].values)
                    self.lt_float = self.transform_float(contents[key].values, contents['GPS GPSLatitudeRef'])
                    # print("緯度 =", self.latitude, contents['GPS GPSLongitudeRef'])
                    print("緯度小數(shù) =", self.lt_float)
            # if self.longitude is not None or self.latitude is not None:
            #     print('+' + self.latitude + ',' + '+' + self.longitude)
            self.get_address(self.lg_float, self.lt_float)

    def create_string(self, content):
        """
        拼接計(jì)算經(jīng)緯度
        :param content:
        :return: /d°/d′/d″
        """
        one = str(content[0]) + '°'
        two = str(content[1]) + '′'
        three = str(float(str(content[2]).split('/')[0]) / float(str(content[2]).split('/')[1])) + '″'
        return one + two + three

    def transform_float(self, content, direction):
        """
        將經(jīng)緯度轉(zhuǎn)化為小數(shù)
        :param content:
        :return: float
        """
        first = content[0].num
        middle = content[1].num / 60
        last = (float(str(content[2]).split('/')[0]) / float(str(content[2]).split('/')[1]) / 3600)
        return (first + middle + last) * (-1 if direction in ('W', 'S') else 1)

    def get_address(self, longitude, latitude):
        """
        請(qǐng)求高德逆地理編碼
        :param longitude:
        :param latitude:
        :return:
        """
        response = requests.get(url=self.url.format(key=self.key, 
                                                    longitude=longitude, 
                                                    latitude=latitude), headers=self.headers)
        if response.content:
            result = json.loads(response.text)
            print('地址:{address}'.format(address=result['regeocode']['formatted_address']))
        else:
            print('沒(méi)有響應(yīng)!')


if __name__ == '__main__':
    s = Search()
    s.get_gps_by_photo("D:/GPS_position.jpg")
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末源请,一起剝皮案震驚了整個(gè)濱河市枪芒,隨后出現(xiàn)的幾起案子彻况,更是在濱河造成了極大的恐慌,老刑警劉巖舅踪,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纽甘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抽碌,警方通過(guò)查閱死者的電腦和手機(jī)悍赢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)货徙,“玉大人左权,你說(shuō)我怎么就攤上這事〕占眨” “怎么了赏迟?”我有些...
    開(kāi)封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蠢棱。 經(jīng)常有香客問(wèn)我瀑梗,道長(zhǎng),這世上最難降的妖魔是什么裳扯? 我笑而不...
    開(kāi)封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮谤职,結(jié)果婚禮上饰豺,老公的妹妹穿的比我還像新娘。我一直安慰自己允蜈,他們只是感情好冤吨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著饶套,像睡著了一般漩蟆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妓蛮,一...
    開(kāi)封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天怠李,我揣著相機(jī)與錄音,去河邊找鬼蛤克。 笑死捺癞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的构挤。 我是一名探鬼主播髓介,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼筋现!你這毒婦竟也來(lái)了唐础?” 一聲冷哼從身側(cè)響起箱歧,我...
    開(kāi)封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎一膨,沒(méi)想到半個(gè)月后呀邢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汞幢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年驼鹅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片森篷。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡输钩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仲智,到底是詐尸還是另有隱情买乃,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布钓辆,位于F島的核電站剪验,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏前联。R本人自食惡果不足惜功戚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望似嗤。 院中可真熱鬧啸臀,春花似錦、人聲如沸烁落。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伤塌。三九已至灯萍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間每聪,已是汗流浹背旦棉。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留药薯,地道東北人他爸。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像果善,于是被迫代替她去往敵國(guó)和親诊笤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348