From d05f278d79376c12f180ca01dc4650929860d652 Mon Sep 17 00:00:00 2001 From: weixin_46229132 Date: Sat, 15 Feb 2025 09:49:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9odm=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 2 +- post_pro/conv_obj.py | 31 +++---------------------------- utils/odm_monitor.py | 22 ++++++++++++---------- 3 files changed, 16 insertions(+), 39 deletions(-) diff --git a/main.py b/main.py index 526a90f..a51cd62 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,6 @@ import argparse from datetime import timedelta -from odm_preprocess_fast import PreprocessConfig, ImagePreprocessor +from odm_preprocess import PreprocessConfig, ImagePreprocessor def parse_args(): parser = argparse.ArgumentParser(description='ODM预处理工具') diff --git a/post_pro/conv_obj.py b/post_pro/conv_obj.py index 6080cba..70901bb 100644 --- a/post_pro/conv_obj.py +++ b/post_pro/conv_obj.py @@ -75,9 +75,9 @@ class ConvertOBJ: self.logger.info(f"开始转换网格 {grid_id} 的OBJ文件") output_osgb = os.path.join(texturing_dir, "Tile.osgb") cmd = ( - f"osgconv {obj_file} {output_osgb} " + f"osgconv {modified_obj} {output_osgb} " f"--compressed --smooth --fix-transparency " - f"-o 0,1,0-0,0,-1" + # f"-o -90-1,0,0" ) self.logger.info(f"执行osgconv命令:{cmd}") @@ -143,31 +143,6 @@ class ConvertOBJ: EPSG:4326 {self.center_lon},{self.center_lat},0.000000 - - - - {min([t['bounds']['min_lat'] for t in tile_infos])} - {max([t['bounds']['max_lat'] for t in tile_infos])} - {min([t['bounds']['min_lon'] for t in tile_infos])} - {max([t['bounds']['max_lon'] for t in tile_infos])} - - """ - - for tile in tile_infos: - metadata_content += f""" - - - {tile['bounds']['min_lat']} - {tile['bounds']['max_lat']} - {tile['bounds']['min_lon']} - {tile['bounds']['max_lon']} - - """ - - metadata_content += """ - - - Visible @@ -214,7 +189,7 @@ class ConvertOBJ: x = float(parts[1]) + (east_offset - self.min_east) y = float(parts[2]) + (north_offset - self.min_north) z = float(parts[3]) - f_out.write(f'v {x:.6f} {y:.6f} {z:.6f}\n') + f_out.write(f'v {x:.6f} {z:.6f} {y:.6f}\n') else: # 其他行直接写入 f_out.write(line) diff --git a/utils/odm_monitor.py b/utils/odm_monitor.py index 5cb6d28..f6f6643 100644 --- a/utils/odm_monitor.py +++ b/utils/odm_monitor.py @@ -125,16 +125,14 @@ class ODMProcessMonitor: def run_odm_with_monitor(self, grid_dir: str, grid_id: tuple, produce_dem: bool = False) -> Tuple[bool, str]: """运行ODM命令""" - # if produce_dem and self.mode == "快拼模式": - # self.logger.error("快拼模式下无法生成DEM,请调整生产参数") - # return False, "快拼模式下无法生成DEM,请调整生产参数" - self.logger.info(f"开始处理网格 ({grid_id[0]},{grid_id[1]})") success = False error_msg = "" max_retries = 3 current_try = 0 - use_lowest_quality = True # 初始使用lowest quality + + # 根据模式设置是否使用lowest quality + use_lowest_quality = self.mode == "快拼模式" while current_try < max_retries: current_try += 1 @@ -151,6 +149,10 @@ class ODMProcessMonitor: f"--project-path /datasets project " f"--max-concurrency 15 " f"--force-gps " + f"--use-exif " + f"--use-hybrid-bundle-adjustment " + f"--optimize-disk-space " + # f"--feature-quality ultra " ) # 根据是否使用lowest quality添加参数 @@ -170,10 +172,10 @@ class ODMProcessMonitor: #f"--fast-orthophoto " f"--skip-3dmodel " ) - elif self.mode == "三维模式": - docker_command += ( - f"--skip-orthophoto " - ) + # elif self.mode == "三维模式": + # docker_command += ( + # f"--skip-orthophoto " + # ) docker_command += "--rerun-all" self.logger.info(docker_command) @@ -223,7 +225,7 @@ class ODMProcessMonitor: raise NotOverlapError except NotOverlapError: - if use_lowest_quality: + if use_lowest_quality and self.mode == "快拼模式": self.logger.warning( "检测到not overlap错误,移除lowest quality参数后重试") use_lowest_quality = False