2015-11-19 12:02:30 +00:00
|
|
|
import os
|
|
|
|
import errno
|
2015-11-18 16:39:03 +00:00
|
|
|
import json
|
2015-11-16 14:52:47 +00:00
|
|
|
import datetime
|
2015-11-26 12:15:02 +00:00
|
|
|
import sys
|
2015-12-11 21:27:51 +00:00
|
|
|
import subprocess
|
2016-03-04 19:35:35 +00:00
|
|
|
import string
|
2015-11-20 10:00:43 +00:00
|
|
|
|
|
|
|
from opendm import context
|
2015-11-26 12:15:02 +00:00
|
|
|
from opendm import log
|
2015-11-18 16:39:03 +00:00
|
|
|
|
2016-02-26 18:50:12 +00:00
|
|
|
|
2015-11-18 16:39:03 +00:00
|
|
|
def get_ccd_widths():
|
|
|
|
"""Return the CCD Width of the camera listed in the JSON defs file."""
|
2016-03-04 19:35:35 +00:00
|
|
|
with open(context.ccd_widths_path) as f:
|
|
|
|
sensor_data = json.loads(f.read())
|
|
|
|
return dict(zip(map(string.lower, sensor_data.keys()), sensor_data.values()))
|
2016-02-26 18:50:12 +00:00
|
|
|
|
2016-10-24 23:47:38 +00:00
|
|
|
|
2018-01-16 19:46:30 +00:00
|
|
|
def run(cmd, env_paths=[context.superbuild_bin_path]):
|
2015-11-16 14:52:47 +00:00
|
|
|
"""Run a system command"""
|
2015-11-26 12:15:02 +00:00
|
|
|
log.ODM_DEBUG('running %s' % cmd)
|
2017-06-29 14:55:43 +00:00
|
|
|
|
|
|
|
env = None
|
|
|
|
if len(env_paths) > 0:
|
|
|
|
env = os.environ.copy()
|
|
|
|
env["PATH"] = env["PATH"] + ":" + ":".join(env_paths)
|
|
|
|
|
|
|
|
retcode = subprocess.call(cmd, shell=True, env=env)
|
2015-11-26 12:15:02 +00:00
|
|
|
|
2016-10-24 23:47:38 +00:00
|
|
|
if retcode < 0:
|
|
|
|
raise Exception("Child was terminated by signal {}".format(-retcode))
|
|
|
|
elif retcode > 0:
|
|
|
|
raise Exception("Child returned {}".format(retcode))
|
2015-11-16 14:52:47 +00:00
|
|
|
|
2016-02-26 18:50:12 +00:00
|
|
|
|
2015-11-16 14:52:47 +00:00
|
|
|
def now():
|
|
|
|
"""Return the current time"""
|
|
|
|
return datetime.datetime.now().strftime('%a %b %d %H:%M:%S %Z %Y')
|
|
|
|
|
2016-02-26 18:50:12 +00:00
|
|
|
|
2016-02-29 14:45:00 +00:00
|
|
|
def now_raw():
|
|
|
|
return datetime.datetime.now()
|
|
|
|
|
|
|
|
|
|
|
|
def benchmark(start, benchmarking_file, process):
|
|
|
|
"""
|
|
|
|
runs a benchmark with a start datetime object
|
|
|
|
:return: the running time (delta)
|
|
|
|
"""
|
|
|
|
# Write to benchmark file
|
|
|
|
delta = (datetime.datetime.now() - start).total_seconds()
|
|
|
|
with open(benchmarking_file, 'a') as b:
|
2016-02-29 14:47:54 +00:00
|
|
|
b.write('%s runtime: %s seconds\n' % (process, delta))
|
2016-02-29 14:45:00 +00:00
|
|
|
|
2015-11-16 14:52:47 +00:00
|
|
|
def mkdir_p(path):
|
2016-02-26 18:50:12 +00:00
|
|
|
"""Make a directory including parent directories.
|
|
|
|
"""
|
2015-11-16 14:52:47 +00:00
|
|
|
try:
|
|
|
|
os.makedirs(path)
|
|
|
|
except os.error as exc:
|
|
|
|
if exc.errno != errno.EEXIST or not os.path.isdir(path):
|
|
|
|
raise
|
|
|
|
|
|
|
|
|
|
|
|
def calculate_EPSG(utmZone, south):
|
|
|
|
"""Calculate and return the EPSG"""
|
|
|
|
if south:
|
|
|
|
return 32700 + utmZone
|
|
|
|
else:
|
|
|
|
return 32600 + utmZone
|