kopia lustrzana https://github.com/OpenDroneMap/ODM
Merge pull request #525 from dakotabenjamin/bigtiff
Add BigTIFF creation and overviews option to odm_orthophotopull/536/head
commit
764d56ec3c
|
@ -344,6 +344,21 @@ def config():
|
|||
'break gdal_translate if you don\'t know what you '
|
||||
'are doing. Options: %(choices)s.\nDefault: %(default)s')
|
||||
|
||||
parser.add_argument('--orthophoto-bigtiff',
|
||||
type=str,
|
||||
choices=['YES', 'NO','IF_NEEDED','IF_SAFER'],
|
||||
default='IF_SAFER',
|
||||
help='Control whether the created orthophoto is a BigTIFF or '
|
||||
'classic TIFF. BigTIFF is a variant for files larger than '
|
||||
'4GiB of data. Options are %(choices)s. See GDAL specs: '
|
||||
'https://www.gdal.org/frmt_gtiff.html for more info. '
|
||||
'\nDefault: %(default)s')
|
||||
|
||||
parser.add_argument('--build-overviews',
|
||||
action='store_true',
|
||||
default=False,
|
||||
help='Build orthophoto overviews using gdaladdo.')
|
||||
|
||||
parser.add_argument('--zip-results',
|
||||
action='store_true',
|
||||
default=False,
|
||||
|
|
|
@ -422,3 +422,4 @@ class ODM_Tree(object):
|
|||
self.odm_orthophoto_corners = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_corners.txt')
|
||||
self.odm_orthophoto_log = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_log.txt')
|
||||
self.odm_orthophoto_tif_log = io.join_paths(self.odm_orthophoto, 'gdal_translate_log.txt')
|
||||
self.odm_orthophoto_gdaladdo_log = io.join_paths(self.odm_orthophoto, 'gdaladdo_log.txt')
|
||||
|
|
|
@ -76,6 +76,8 @@ class ODMApp(ecto.BlackBox):
|
|||
t_srs=p.args.orthophoto_target_srs,
|
||||
no_tiled=p.args.orthophoto_no_tiled,
|
||||
compress=p.args.orthophoto_compression,
|
||||
bigtiff=p.args.orthophoto_bigtiff,
|
||||
build_overviews=p.args.build_overviews,
|
||||
verbose=p.args.verbose)
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,8 @@ class ODMOrthoPhotoCell(ecto.Cell):
|
|||
params.declare("t_srs", 'Target SRS', None)
|
||||
params.declare("no_tiled", 'Do not tile tiff', False)
|
||||
params.declare("compress", 'Compression type', 'DEFLATE')
|
||||
params.declare("bigtiff", 'Make BigTIFF orthophoto', 'IF_SAFER')
|
||||
params.declare("build_overviews", 'Build overviews', False)
|
||||
params.declare("verbose", 'print additional messages to console', False)
|
||||
|
||||
def declare_io(self, params, inputs, outputs):
|
||||
|
@ -102,6 +104,7 @@ class ODMOrthoPhotoCell(ecto.Cell):
|
|||
['LZW', 'DEFLATE'] else '',
|
||||
'epsg': georef.epsg,
|
||||
't_srs': self.params.t_srs or "EPSG:{0}".format(georef.epsg),
|
||||
'bigtiff': self.params.bigtiff,
|
||||
'png': tree.odm_orthophoto_file,
|
||||
'tiff': tree.odm_orthophoto_tif,
|
||||
'log': tree.odm_orthophoto_tif_log
|
||||
|
@ -109,6 +112,7 @@ class ODMOrthoPhotoCell(ecto.Cell):
|
|||
|
||||
system.run('gdal_translate -a_ullr {ulx} {uly} {lrx} {lry} '
|
||||
'{tiled} '
|
||||
'-co BIGTIFF={bigtiff} '
|
||||
'-co COMPRESS={compress} '
|
||||
'{predictor} '
|
||||
'-co BLOCKXSIZE=512 '
|
||||
|
@ -116,6 +120,19 @@ class ODMOrthoPhotoCell(ecto.Cell):
|
|||
'-co NUM_THREADS=ALL_CPUS '
|
||||
'-a_srs \"EPSG:{epsg}\" '
|
||||
'{png} {tiff} > {log}'.format(**kwargs))
|
||||
|
||||
if self.params.build_overviews:
|
||||
log.ODM_DEBUG("Building Overviews")
|
||||
kwargs = {
|
||||
'orthophoto': tree.odm_orthophoto_tif,
|
||||
'log': tree.odm_orthophoto_gdaladdo_log
|
||||
}
|
||||
# Run gdaladdo
|
||||
system.run('gdaladdo -ro -r average '
|
||||
'--config BIGTIFF_OVERVIEW IF_SAFER '
|
||||
'--config COMPRESS_OVERVIEW JPEG '
|
||||
'{orthophoto} 2 4 8 16 > {log}'.format(**kwargs))
|
||||
|
||||
geotiffcreated = True
|
||||
if not geotiffcreated:
|
||||
log.ODM_WARNING('No geo-referenced orthophoto created due '
|
||||
|
|
Ładowanie…
Reference in New Issue