Identify geographical location of a picture by its EXIF GPS info by Baidu Map API

# -*- coding: utf-8 -*-
import urllib.parse
import hashlib
import requests
import json

'''
Baidu Map API http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
'''
def get_baidu_api_url(baidu_api_ak, baidu_api_sk, lat, lng):
    baseurl = 'http://api.map.baidu.com'
    svcurl = '/geocoder/v2/?output=json&pois=0&ak='
    query = '&location='

    # Calculation follows Baidu Map API standard: http://lbsyun.baidu.com/index.php?title=lbscloud/api/appendix
    queryStr = svcurl + baidu_api_ak + query + str(lat) + "," + str(lng)
    encodedStr = urllib.parse.quote(queryStr, safe="/:=&?#+!$,;'@()*[]")
    rawStr = encodedStr + baidu_api_sk
    baidu_api_sn = hashlib.md5(urllib.parse.quote_plus(rawStr).encode("utf-8")).hexdigest()

    url = baseurl + queryStr + "&sn=" + baidu_api_sn

    return url


if __name__ == '__main__':

    # sample: 39.983424, 116.322987 ## Beijing

    # sample: 40.758078395, 73.97712620722223  ## Europe

    # sample: 22.80646666666667, 113.27083611111111  ## Shunde, Foshan, Guangdong Province, PRC

    # sample: 22.65424722222222, 114.7337888888889  ## Huidong, Huizhou, Guangdong Province, PRC

    url = get_baidu_api_url('your_baidu_api_ak', 'your_baidu_api_sk', 22.80646666666667, 113.27083611111111)

    req = requests.get(url)
    content = req.text
    print(content)
    hjson = json.loads(content)

    status = hjson["status"]
    if status == 0:
        location = hjson["result"]["formatted_address"]  # province, city, street
        print(location)
        info = hjson["result"]["sematic_description"]  # address detail
        print(info)
    else:
        print(hjson["message"])

你可能感兴趣的:(Identify geographical location of a picture by its EXIF GPS info by Baidu Map API)