github上发现的有趣小项目
GitHub:https://github.com/xingag/spider_python
项目的基础上添加了一些代码,为了直接可以查看地图更加直观。
使用了高德静态地图的API。

注册方法

打开高德开发平台:高德地图开发平台
注册账号,打开控制台
应用管理–>我的应用–>添加新应用

一定要选择web服务,完成后就会得到一串Key

查看官方文档 官方API文档

将参数拼接到URL中,使用到的参数 Key、location、zoom、size、scale、markers

运行下
浏览器自动打开显示相应的位置,并显示地图
main.py源码

import os
import exifread
from position_utils import *
import requests
import json
import datetime
import webbrowser#  pip3 install exifreadclass Location(object):def __init__(self, image_path):self.img_path = image_pathself.api_key = ""self.url_get_position = 'https://restapi.amap.com/v3/geocode/regeo?key={}&location={}'def __get_address(self, location):"""根据坐标得到详细地址:param location: 经纬度值:return:"""resp = requests.get(self.url_get_position.format(self.api_key, location))location_data = json.loads(resp.text)address = location_data.get('regeocode').get('formatted_address')return addressdef run(self):coordinate = self.__get_image_ability()print(f'获取到经度、纬度是:{coordinate}')return coordinateif not coordinate:return# 根据经度和纬度,获取到详细地址address = self.__get_address(coordinate)# 检验坐标值# https://lbs.amap.com/console/show/pickerprint(f'图片拍摄于:{address}')def __format_lati_long_data(self, data):"""对经度和纬度数据做处理,保留6位小数:param data: 原始经度和纬度值:return:"""# 删除左右括号和空格data_list_tmp = str(data).replace('[', '').replace(']', '').split(',')data_list = [data.strip() for data in data_list_tmp]# 替换秒的值data_tmp = data_list[-1].split('/')# 秒的值data_sec = int(data_tmp[0]) / int(data_tmp[1]) / 3600# 替换分的值data_tmp = data_list[-2]# 分的值data_minute = int(data_tmp) / 60# 度的值data_degree = int(data_list[0])# 由于高德API只能识别到小数点后的6位# 需要转换为浮点数,并保留为6位小数result = "%.6f" % (data_degree + data_minute + data_sec)return float(result)def __get_image_ability(self):"""获取图片的属性值,包含:经纬度、拍摄时间等:param picture_name::return:"""# 利用exifread库,读取图片的属性img_exif = exifread.process_file(open(self.img_path, 'rb'))# 能够读取到属性if img_exif:# 纬度数latitude_gps = img_exif['GPS GPSLatitude']# N,S 南北纬方向latitude_direction = img_exif['GPS GPSLatitudeRef']# 经度数longitude_gps = img_exif['GPS GPSLongitude']# E,W 东西经方向longitude_direction = img_exif['GPS GPSLongitudeRef']# 拍摄时间take_time = img_exif['EXIF DateTimeOriginal']is_lie = self.judge_time_met(take_time)# if is_lie:#     print('很遗憾的通知你,你的女朋友在撒谎!!!')#     return# 纬度、经度、拍摄时间if latitude_gps and longitude_gps and take_time:# 对纬度、经度值原始值作进一步的处理latitude = self.__format_lati_long_data(latitude_gps)longitude = self.__format_lati_long_data(longitude_gps)# print(f'{longitude},{latitude}')# 注意:由于gps获取的坐标在国内高德等主流地图上逆编码不够精确,这里需要转换为火星坐标系location = wgs84togcj02(longitude, latitude)return f'{location[0]},{location[1]}'else:print(f'获取的图片数据属性不完整')return ''else:print('抱歉,图片不是原图,没法获取到图片属性。')return ''def judge_time_met(self, take_time):"""通知拍摄时间判断女朋友是否撒谎:param take_time::return:"""# 拍摄时间format_time = str(take_time).split(" ")[0].replace(":", "-")# 当天日期today = str(datetime.date.today())if format_time == today:return Falseelse:return Trueif __name__ == '__main__':# 发过来的图片【原图】location = Location('./pic/su.jpg')# 找到女朋友的地理位置loc = location.run()zoom = 17url = "https://restapi.amap.com/v3/staticmap?location="+loc+"&zoom="+str(zoom)+"&scale=2&size=1024*1024&markers=mid,,A:"+loc+"&key="webbrowser.open(url)

人生漫漫其修远兮,网安无止境。
一同前行,加油!

通过图片获取地理位置相关推荐

  1. 如何通过图片获取对方位置

    你是否有在朋友圈/微博/QQ看见晒自拍,分享生活图片的习惯? 你是否会在微信代购群/淘宝/京东图片反馈好评的习惯? 你使用的是否是安卓手机? 如果是,那么请注意,地理位置可能会在5s内被对方获取!!! ...

  2. 用百度SDK获取地理位置和天气信息

    以下实现通过百度SDK获取地理位置和天气信息,请參考百度开发文档 1. 在相关下载最新的库文件.将so文件的压缩文件解压出来,把相应架构下的so文件放入开发人员自己APP的相应架构下的目录中,建议所有 ...

  3. 微信小程序如何获取地理位置、地图显示,逆地址解析。

    微信严格了获取客户位置的要求,需要申请地理位置权限和声明. 自 2022 年 7 月 14 日后发布的小程序,若使用地理位置接口,需要在 app.json 中进行声明. 申请时需要选择适合的小程序类目 ...

  4. 如何实现根据照片获取地理位置及如何防御照片泄漏地理位置

    [阅读全文] 首先,说明一下python确实可以根据照片获取地理位置,但是也是有一定的限制条件的. 获取照片地理位置的实现思路是这样的:通过提取照片中的经纬度信息.然后通过经纬度信息找到具体的地理位置 ...

  5. Django博客来访人员地域分布大数据可视化---echarts绘图、geoip2获取地理位置

    文章目录 Django博客来访人员地域分布大数据可视化---echarts绘图.geoip2获取地理位置 效果 echarts作图 geoip2获取地理位置 api接口开发 ajax前后端动态交互 D ...

  6. 微信 获取地理位置名称_使用地理名称的目标地理位置

    微信 获取地理位置名称 Location-based applications are all the rage. What used to be prohibitively expensive GP ...

  7. html5实现获取地理位置信息并定位

    html5实现获取地理位置信息并定位 一.总结 一句话总结:获取地理位置是分两步:获取经纬度和根据经纬度获取地址信息 a.HTML5的Geolocation(地理位置功能(Geolocation AP ...

  8. reactnative 获取定位_react native 获取地理位置的方法示例

    react native 官网介绍了这个 api Geolocation 但是这个api只能返回 经纬度 所以要把经纬度 通过逆地理位置转义 http://recode.ditu.aliyun.com ...

  9. Flutter 中获取地理位置[Flutter专题61]

    大家好,我是坚果,公众号"坚果前端" Flutter 中获取地理位置 如今,发现用户位置是移动应用程序非常常见且功能强大的用例.如果您曾经尝试过在 Android 中实现位置,您就 ...

  10. flutter利用高德如何获取地理位置信息bug处理

    flutter中对于利用高德如何获取地理位置信息, 1.在高德开发平台,注册成为开发者,并获取key 2.安装依赖 对于如何安装第三方插件 请点击此处pub.dev amap_location 3.修 ...

最新文章

  1. Android开发--初探SQLiteDataBase/数据库的创建,更新,插入,查询
  2. python操作excel表格-Python学习—对excel表格的操作
  3. 使用QT制作桌面小工具(一)
  4. 让mysql支持emoji表情
  5. 面试: 14 个实用的数据库设计技巧,一次性教给你!
  6. Lang.String
  7. 《SAS编程与数据挖掘商业案例》学习笔记之十
  8. java 代码 点到线段的最短距离
  9. toj 4611 Repairing a Road
  10. 小于等于0_从0开始学ARMARM汇编指令其实很简单
  11. http://item.jd.com/1275996920.html
  12. 用 Handler 给图片加水印
  13. Kaggle竞赛实战系列(一):手写数字识别器(Digit Recognizer)得分99.53%、99.91%和100%
  14. RS485/RS422接线图
  15. 网页中那些遇到过的导航选中状态actived selected
  16. Excel第9享:DATEDIF函数及其应用
  17. 利用迪纳波利 (DINAPOLI) 等级进行交易
  18. 字符串全排列算法_C#版_剑指OFFER
  19. vue引用public目录下文件
  20. 喵呜-温暖治愈系社交应用

热门文章

  1. 【渝粤题库】广东开放大学 标准化法律法规 形成性考核
  2. SCI收录的IEEE期刊
  3. HL7(Health Level Seven)
  4. HP LaserJet Pro MFP M227d安装指南
  5. 令人深思的文章:也许你这辈子都只是个小人物
  6. 同相加法器电路图_反相加法器电路图_运放加法器电路图解析
  7. 图片验证码的逻辑实现
  8. localbridge.exe 参数错误
  9. JavaScript调用C#办法-转帖
  10. 蓝屏出现STOP:0X00000077是什么原因造成