kopia lustrzana https://github.com/OpenDroneMap/ODM
Fix COG compression, cap mesh-octree-depth values
rodzic
d827ee62d7
commit
7aa6444637
|
@ -5,7 +5,7 @@ from opendm.concurrency import get_max_memory
|
||||||
from opendm import io
|
from opendm import io
|
||||||
from opendm import log
|
from opendm import log
|
||||||
|
|
||||||
def convert_to_cogeo(src_path, blocksize=256, max_workers=1):
|
def convert_to_cogeo(src_path, blocksize=256, max_workers=1, compression="DEFLATE"):
|
||||||
"""
|
"""
|
||||||
Guarantee that the .tif passed as an argument is a Cloud Optimized GeoTIFF (cogeo)
|
Guarantee that the .tif passed as an argument is a Cloud Optimized GeoTIFF (cogeo)
|
||||||
The file is destructively converted into a cogeo.
|
The file is destructively converted into a cogeo.
|
||||||
|
@ -30,6 +30,8 @@ def convert_to_cogeo(src_path, blocksize=256, max_workers=1):
|
||||||
'max_memory': get_max_memory(),
|
'max_memory': get_max_memory(),
|
||||||
'src_path': src_path,
|
'src_path': src_path,
|
||||||
'tmpfile': tmpfile,
|
'tmpfile': tmpfile,
|
||||||
|
'compress': compression,
|
||||||
|
'predictor': '2' if compression in ['LZW', 'DEFLATE'] else '1',
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -37,7 +39,8 @@ def convert_to_cogeo(src_path, blocksize=256, max_workers=1):
|
||||||
"-of COG "
|
"-of COG "
|
||||||
"-co NUM_THREADS={threads} "
|
"-co NUM_THREADS={threads} "
|
||||||
"-co BLOCKSIZE={blocksize} "
|
"-co BLOCKSIZE={blocksize} "
|
||||||
"-co COMPRESS=deflate "
|
"-co COMPRESS={compress} "
|
||||||
|
"-co PREDICTOR={predictor} "
|
||||||
"-co BIGTIFF=IF_SAFER "
|
"-co BIGTIFF=IF_SAFER "
|
||||||
"-co RESAMPLING=NEAREST "
|
"-co RESAMPLING=NEAREST "
|
||||||
"--config GDAL_CACHEMAX {max_memory}% "
|
"--config GDAL_CACHEMAX {max_memory}% "
|
||||||
|
|
|
@ -277,7 +277,7 @@ def config(argv=None, parser=None):
|
||||||
'Default: %(default)s'))
|
'Default: %(default)s'))
|
||||||
|
|
||||||
parser.add_argument('--mesh-octree-depth',
|
parser.add_argument('--mesh-octree-depth',
|
||||||
metavar='<positive integer>',
|
metavar='<integer: 1 <= x <= 14>',
|
||||||
action=StoreValue,
|
action=StoreValue,
|
||||||
default=11,
|
default=11,
|
||||||
type=int,
|
type=int,
|
||||||
|
|
|
@ -86,7 +86,7 @@ def post_orthophoto_steps(args, bounds_file_path, orthophoto_file, orthophoto_ti
|
||||||
generate_orthophoto_tiles(orthophoto_file, orthophoto_tiles_dir, args.max_concurrency)
|
generate_orthophoto_tiles(orthophoto_file, orthophoto_tiles_dir, args.max_concurrency)
|
||||||
|
|
||||||
if args.cog:
|
if args.cog:
|
||||||
convert_to_cogeo(orthophoto_file, max_workers=args.max_concurrency)
|
convert_to_cogeo(orthophoto_file, max_workers=args.max_concurrency, compression=args.orthophoto_compression)
|
||||||
|
|
||||||
def compute_mask_raster(input_raster, vector_mask, output_raster, blend_distance=20, only_max_coords_feature=False):
|
def compute_mask_raster(input_raster, vector_mask, output_raster, blend_distance=20, only_max_coords_feature=False):
|
||||||
if not os.path.exists(input_raster):
|
if not os.path.exists(input_raster):
|
||||||
|
|
|
@ -42,7 +42,7 @@ class ODMApp:
|
||||||
filterpoints = ODMFilterPoints('odm_filterpoints', args, progress=52.0)
|
filterpoints = ODMFilterPoints('odm_filterpoints', args, progress=52.0)
|
||||||
meshing = ODMeshingStage('odm_meshing', args, progress=60.0,
|
meshing = ODMeshingStage('odm_meshing', args, progress=60.0,
|
||||||
max_vertex=args.mesh_size,
|
max_vertex=args.mesh_size,
|
||||||
oct_tree=args.mesh_octree_depth,
|
oct_tree=max(1, min(14, args.mesh_octree_depth)),
|
||||||
samples=1.0,
|
samples=1.0,
|
||||||
point_weight=4.0,
|
point_weight=4.0,
|
||||||
max_concurrency=args.max_concurrency,
|
max_concurrency=args.max_concurrency,
|
||||||
|
|
Ładowanie…
Reference in New Issue