python批量写入经纬度
#ecoding:utf-8
import datetime
from PIL import Image
import piexif
import csv
import os
def main(csv_path, image_root, save_root):
csv_data = open(csv_path, "r")
reader = csv.reader(csv_data)
# 读取csv的每一行,跳过标题行
for item in reader:
if reader.line_num <= 1:
continue
lng = float(item[0])
lat = float(item[1])
#alt=(item[2])
#print('{} finished'.format(item[-1]))
# 将经纬度与相对航高转为exif可用的经纬度与行高
# exif需要的航高输入为(20000,2)格式,表示高度为20000/100米
# exif需要的经度与维度为((12, 1), (20,1), (41000, 1000))格式表示12度20分41秒
lng_exif = format_latlng(lng)
lat_exif = format_latlng(lat)
#alt_exif = (0,10000)
#_dict = {"alt": alt_exif, "lng":
#lng_exif, "lat": lat_exif, "lng_ref":'S', "lat_ref":'N'}
_dict = {"lng":
lng_exif, "lat": lat_exif, "lng_ref":'E', "lat_ref":'N'}
image_path = os.path.join(image_root, item[-1]).replace("\\","/") + '.jpg'
save_path = os.path.join(save_root, item[-1]).replace("\\","/") + '.jpg'
# 修改图片的exif
try:
read_modify_exif(image_path, save_path, _dict)
print("第" + str(reader.line_num-1) + "张图片处理完成!")
except Exception as ex:
#print(ex)
continue
def format_latlng(latlng):
"""经纬度十进制转为分秒"""
degree = int(latlng)
res_degree = latlng - degree
minute = int(res_degree * 60)
res_minute = res_degree * 60 - minute
seconds = round(res_minute * 60.0,3)
return ((degree, 1), (minute,1), (int(seconds*1000), 1000))
def read_modify_exif(image_path,save_path, _dict):
""" 读取并且修改exif文件"""
img = Image.open(image_path) # 读图
#exif_dict = piexif.load(img.info['exif']) # 提取exif信息
#print('alt:{} lng:{} lat:{}'.format(exif_dict['GPS'][piexif.GPSIFD.GPSAltitude], exif_dict['GPS'][piexif.GPSIFD.GPSLongitude], exif_dict['GPS'][piexif.GPSIFD.GPSLatitude]))
exif_dict = {"GPS":{}}
#exif_dict['GPS'][piexif.GPSIFD.GPSAltitude] = _dict['alt'] # 修改高度,GPSAltitude是内置变量,不可修改
exif_dict['GPS'][piexif.GPSIFD.GPSLongitude] = _dict['lng'] # 修改经度
exif_dict['GPS'][piexif.GPSIFD.GPSLatitude] = _dict['lat'] # 修改纬度
exif_dict['GPS'][piexif.GPSIFD.GPSLongitudeRef] = _dict['lng_ref'] # odm需要读取,一般为’W'
exif_dict['GPS'][piexif.GPSIFD.GPSLatitudeRef] = _dict['lat_ref'] # 一般为‘N'
exif_bytes = piexif.dump(exif_dict)
#print(exif_dict['GPS'][piexif.GPSIFD.GPSLongitude])
img.save(save_path, "jpeg", exif=exif_bytes) # 保存
def check_folder(path_list):
"""输入为文件夹列表,文件夹不存在则创建"""
for path in path_list:
if not os.path.exists(path):
os.mkdir(path)
if __name__ == "__main__":
csv_path = 'C:/Users/Administrator/Desktop/1/from/pos.csv'
image_root = 'C:/Users/Administrator/Desktop/1/from'
save_root = 'C:/Users/Administrator/Desktop/1/3'
check_folder([csv_path, image_root, save_root])
main(csv_path, image_root, save_root)
python批量写入经纬度相关推荐
- python批量写入数据
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 python批量写入文件内容 前言 一.使用步骤 1.引入库 前言 提示:这里可以添加本文要记录的大概内容: python批量写入文件 ...
- python批量添加经纬度照片水印,照片水印,坐标转换
通过获取shp文件的大地2000坐标,然后转换为经纬度坐标,最后将经纬度坐标添加到照片中,实现照片添加水印,实现批量添加经纬度坐标水印. # -*- coding: utf-8 -*- import ...
- python批量写入数据库engine_python 快速写入postgresql数据库方法
一种是导入sqlalchemy包,另一种是导入psycopg2包. 具体用法如下(此处以postgre数据库举例) 第一种: # 导入包 from sqlalchemy import create_e ...
- 用Python评测三种批量查询经纬度的方法,你pick哪一种?
不知道大家会在什么场合使用地图可视化,对我来说地图可视化的优点除了它可以展示海量的位置数据,更重要的是它可以很酷很炫,给人一种赏心悦目的舒适感.如下是J哥做的一个简单热力图: 热力地图 制作此类可视化 ...
- python经纬度获取县名_利用 Python 批量获取县镇运输距离
起因 最近做规划项目,领导让查出某几个市的所有乡镇级行政区域,距离所在县级行政中心的交通运输距离.想着也不是啥难事儿,高德地图一搜就有. 当我把各市行政区划统计完,发现一共有五百多个乡镇,意味着要在地 ...
- Python从数据库读取大量数据批量写入文件的方法
今天小编就为大家分享一篇Python从数据库读取大量数据批量写入文件的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将 ...
- python批量读取文件内容_Python从数据库读取大量数据批量写入文件的方法
使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将数据加载进内存,这时我们需要将数据进行预处理,分批次加载进内存. 下面是代码作用是将数据从数据库读取出来分批次写入txt文本文件,方便我们做 ...
- Python读取excel表格人员数据同时批量写入多个excel个人登记表
背景:驻村期间需要将1张含有200多人的人员记录数据写入人员信息登记表中,1条记录对应一个人员信息登记表.如果复制粘贴肯定比较慢,所以当然使用Python来解决.涉及的字段其实有23个,因涉及其他问题 ...
- 自动化神器啊,Python 批量读取身份证信息写入 Excel
大家好,今天分享一个实用技能,利用 Python 批量读取身份证信息写入 Excel. 喜欢记得收藏.关注.点赞. 注:文末提供完整版代码.技术交流方式 读取 以图片形式的身份证为例,信息读取我们使用 ...
- 教程 | 批量将经纬度坐标标注到地图上,不用Python,不用GIS软件
小O地图EXE版三大功能,地图数据查询.地图数据分析.地图可视化! 在以往的文章中大多介绍前两者,可视化功能介绍较少,本文将直接上视频,通过B站视频演示地图可视化功能使用. 本文视频演示使用小O地图软 ...
最新文章
- Microbiome:16S扩增子测序研究中定量变异和生物量影响
- 面试题3-二维数组中的查找
- Java进阶:多线程Lock管理多个Condition的实践
- ubuntu11.10 mysql_Ubuntu11.10下mysql+apache+PHP
- scala集合中添加元素_如何在Scala中获得列表的第一个元素?
- redux 简明学习
- Bailian2939 玩游戏【模拟】
- python深拷贝和浅拷贝的区别_python 深拷贝与浅拷贝的区别
- HDU 1019 least common Multipy
- 吐槽一下:武装GoldenDict时,好一个OALD,RAR格式,12万多的文件,晕!!
- DNS 技术标准综述
- 设计师必备,6个PNG素材网站
- 阿里云系统盘扩容及数据盘分区、格式化分区、挂载、取消挂载
- ftp下出现“当前的安全设置不允许从该位置下载文件”提示
- 【C++学习笔记】类型转换和跳转语句
- 强化学习:训练加速技巧
- java6安全设置_小米安全中心
- 文本文档写html图片显示不出来,word文档几种不显示图片的解决方法
- 毫米波雷达处理流程、算法、代码合集
- 质量管理、质量保证、质量控制的区别
热门文章
- js 根据公历日期 算出农历_显示阴历(农历)日期的js代码
- Windows8[Web应用程序项目***已配置为使用IIS。无法访问IIS元数据库,您没有足够的特权访问计算机上的IIS网站]
- 虚拟机安装后找不到操作系统
- linux 回收站恢复文件怎么恢复文件,清空回收站后如何恢复已被删除的文件?
- 新机常用软件及环境配置清单
- 网口压线顺序_网线水晶头接法
- 【建议收藏】 11个适合程序员逛的在线社区
- 互联网寒冬,这个技术领域的人才需求却持续爆表
- phpstudy mysql 版本_phpstudy切换mysql版本
- html根据出生日期计算星座,星座测算.html