-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathedit_gps_single.py
More file actions
89 lines (69 loc) · 2.6 KB
/
Copy pathedit_gps_single.py
File metadata and controls
89 lines (69 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/env python3
"""
Author : Emmanuel Gonzalez
Date : 2020-04-09
Purpose: Update GPS coordiantes on TIF images in a given directory.
"""
import argparse
import os
import subprocess
import glob
import time
from osgeo import gdal
import pandas as pd
start = time.time()
# --------------------------------------------------
def get_args():
"""Get command-line arguments"""
parser = argparse.ArgumentParser(
description='Rock the Casbah',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('tif',
metavar='tif',
type=str,
help='The TIF file to edit')
parser.add_argument('-c',
'--csv',
help='CSV file with updated coordinates',
metavar='FILE',
type=str,
required=True)
parser.add_argument('-o',
'--outdir',
metavar='outdir',
type=str,
default='gpscorrect_out')
return parser.parse_args()
# --------------------------------------------------
def main():
"""Open CSV and update coordinates"""
args = get_args()
if not os.path.isdir(args.outdir):
os.makedirs(args.outdir)
df = pd.read_csv(args.csv, index_col='Filename', usecols=['Filename', 'Upper left', 'Lower right'])
num = 0
filename = ''.join(os.path.splitext(os.path.basename(args.tif)))
if filename in df.index:
start2 = time.time()
num += 1
u_l = df.loc[[str(filename)][0], ['Upper left'][0]]
u_l_long, u_l_lat = u_l.split(',')
l_r = df.loc[[str(filename)][0], ['Lower right'][0]]
l_r_long, l_r_lat = l_r.split(',')
#print(f'Upper left: {u_l_lat} {u_l_long} "\n" Lower right: {l_r_lat} {l_r_long}')
print(f'>{num:5} {filename}')
basename = os.path.splitext(os.path.basename(args.tif))[0]
outfile = args.outdir + '/' + basename + '_corrected.tif'
cmd = f'gdal_translate -of "GTiff" -co "COMPRESS=LZW" -a_ullr {u_l_long} {u_l_lat} {l_r_long} {l_r_lat} -a_srs EPSG:4326 {args.tif} {outfile}'
subprocess.call(cmd, shell=True)
end2 = time.time()
ind_time = end2 - start2
print(f'Done - Processing time: {ind_time}' + "\n")
#else:
# continue
end = time.time()
total_time = end - start
print(f'Done, process took {total_time}. Outputs saved in {args.outdir}.')
# --------------------------------------------------
if __name__ == '__main__':
main()