很多时候,我们在一些正射影像(DOM
)项目生产中产生的坐标文件(tfw
),由于使用的软件不同,对于坐标的像素起点不同,因此会造成坐标文件中的X、Y
坐标带有小数(如inpho
),而往往有些甲方则要求坐标为整数。如果个别文件还好办,可以用记事本手动打开修改,但是对于分幅数据,成千上万的文件,手动修改就工作量太大了。因此可以使用下面的代码进行批量修改。
本人并不懂Python编程,只是在网上查阅了一些资料,免强能实现我要的功能就可以了,比起手动修改省了不少时间。本人小白一枚,大神勿喷!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2019-12-16 02:19:58
# @Author : 仁者无敌
import os,shutil;
from Tkinter import *
import Tkinter, tkFileDialog
root = Tk()
root.withdraw()
dir = tkFileDialog.askdirectory()
path = dir + '/'
#root.mainloop()
root.quit()
def reset():
i = 0
j = 0
filelist = os.listdir(path) # 该文件夹下所有的文件(包括文件夹)
for files in filelist: # 遍历所有文件
i = i + 1
Olddir = os.path.join(path, files); # 原来的文件路径
if os.path.isdir(Olddir): # 如果是文件夹则跳过
continue;
filename = os.path.splitext(files)[0]; # 文件名
filetype = os.path.splitext(files)[1]; # 文件扩展名
filePath = path+filename+filetype
if filetype == '.tfw':
shutil.copyfile(filePath,(path + filename + '.bak')) # 备份原文件
print ('Processing ' + filename + filetype + '......')
changetext(filePath)
j = j + 1
if dir:
print (str(j) + ' Finished.')
else:
print ('No directory selected !')
# alter(filePath, "/art/", "../art/")
def changetext(name):
with open(name,'r') as f:
lines=[] # 创建了一个空列表,里面没有元素
for line in f.readlines():
if line!='\n':
lines.append(line)
f.close()
line4 = str(round(float(lines[4].replace('\n','')))) + '\n'
line5 = str(round(float(lines[5].replace('\n','')))) + '\n'
lines[4] = line4
lines[5] = line5
with open(name,'w') as f:
for line in lines:
f.write(line)
reset()