可视化模块修改

This commit is contained in:
weixin_46229132 2025-04-12 22:48:07 +08:00
parent 5c382e1810
commit a3a5e5738a
4 changed files with 66 additions and 58 deletions

View File

@ -15,8 +15,11 @@ class DirectoryManager:
def clean_output_dir(self): def clean_output_dir(self):
"""清理输出目录""" """清理输出目录"""
try: try:
if os.path.exists(self.config.output_dir):
shutil.rmtree(self.config.output_dir) shutil.rmtree(self.config.output_dir)
print(f"已清理输出目录: {self.config.output_dir}") print(f"已清理输出目录: {self.config.output_dir}")
else:
pass
except Exception as e: except Exception as e:
print(f"清理输出目录时发生错误: {str(e)}") print(f"清理输出目录时发生错误: {str(e)}")
raise raise
@ -65,7 +68,7 @@ class DirectoryManager:
free_space = disk_usage.free free_space = disk_usage.free
# 计算所需空间输入大小的10倍 # 计算所需空间输入大小的10倍
required_space = input_size * 10 required_space = input_size * 8
if free_space < required_space: if free_space < required_space:
error_msg = ( error_msg = (

View File

@ -2,6 +2,7 @@ import logging
import os import os
from datetime import datetime from datetime import datetime
def setup_logger(output_dir): def setup_logger(output_dir):
# 创建logs目录 # 创建logs目录
log_dir = os.path.join(output_dir, 'logs') log_dir = os.path.join(output_dir, 'logs')

View File

@ -85,21 +85,20 @@ class ODMProcessMonitor:
self.logger.error("容器运行失败的详细错误日志:") self.logger.error("容器运行失败的详细错误日志:")
for line in error_msg: for line in error_msg:
self.logger.error(line) self.logger.error(line)
container.remove()
time.sleep(5)
else: else:
# 获取所有日志 # 获取所有日志
logs = container.logs().decode("utf-8").splitlines() logs = container.logs().decode("utf-8").splitlines()
# 输出最后 50 行日志 # 输出最后 50 行日志
self.logger.info("容器运行完成,以下是最后 50 行日志:") self.logger.info("容器运行完成,以下是最后 50 行日志:")
for line in logs[-50:]: for line in logs[-50:]:
self.logger.info(line) self.logger.info(line)
success = True success = True
error_msg = "" error_msg = ""
container.remove()
break break
# 删除容器
container.remove()
time.sleep(5)
return success, error_msg return success, error_msg

View File

@ -55,28 +55,31 @@ class FilterVisualizer:
self.logger.info(f"开始生成{step_name}的可视化结果") self.logger.info(f"开始生成{step_name}的可视化结果")
# 找出被过滤掉的点 # 找出被过滤掉的点
filtered_files = set(previous_points['file']) - set(current_points['file']) filtered_files = set(
filtered_points = previous_points[previous_points['file'].isin(filtered_files)] previous_points['file']) - set(current_points['file'])
filtered_points = previous_points[previous_points['file'].isin(
filtered_files)]
# 转换坐标到UTM # 转换坐标到UTM
current_x, current_y = self._convert_to_utm(current_points['lon'], current_points['lat']) current_x, current_y = self._convert_to_utm(
filtered_x, filtered_y = self._convert_to_utm(filtered_points['lon'], filtered_points['lat']) current_points['lon'], current_points['lat'])
filtered_x, filtered_y = self._convert_to_utm(
filtered_points['lon'], filtered_points['lat'])
# 创建图形 # 创建图形
plt.rcParams['font.sans-serif'] = ['SimHei'] # 黑体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 黑体
plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.unicode_minus'] = False
plt.figure() plt.figure(figsize=(20, 20))
# 绘制保留的点 # 绘制保留的点
plt.scatter(current_x, current_y, plt.scatter(current_x, current_y,
color='blue', label='保留的点', color='blue', label='保留的点',
alpha=0.6, s=50) alpha=0.6, s=5)
# 绘制被过滤的点 # 绘制被过滤的点
if not filtered_points.empty: if not filtered_points.empty:
plt.scatter(filtered_x, filtered_y, plt.scatter(filtered_x, filtered_y,
color='red', marker='x', label='过滤的点', color='red', marker='x', label='过滤的点')
alpha=0.6, s=100)
# 设置图形属性 # 设置图形属性
plt.title(f"{step_name}后的GPS点\n" plt.title(f"{step_name}后的GPS点\n"
@ -85,6 +88,7 @@ class FilterVisualizer:
plt.xlabel("东向坐标 (米)", fontsize=12) plt.xlabel("东向坐标 (米)", fontsize=12)
plt.ylabel("北向坐标 (米)", fontsize=12) plt.ylabel("北向坐标 (米)", fontsize=12)
plt.grid(True) plt.grid(True)
plt.axis('equal')
# 添加统计信息 # 添加统计信息
stats_text = ( stats_text = (
@ -104,7 +108,8 @@ class FilterVisualizer:
# 保存图形 # 保存图形
save_name = save_name or step_name.lower().replace(' ', '_') save_name = save_name or step_name.lower().replace(' ', '_')
save_path = os.path.join(self.output_dir, 'filter_imgs', f'filter_{save_name}.png') save_path = os.path.join(
self.output_dir, 'filter_imgs', f'filter_{save_name}.png')
plt.savefig(save_path, dpi=300, bbox_inches='tight') plt.savefig(save_path, dpi=300, bbox_inches='tight')
plt.close() plt.close()