feat: update algorithm integrations and point cloud overlays
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""测量任务基类"""
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Dict, Any, Optional
|
||||
from dataclasses import dataclass
|
||||
import numpy as np
|
||||
|
||||
|
||||
@dataclass
|
||||
class MeasurementResult:
|
||||
"""测量结果数据类"""
|
||||
task_name: str
|
||||
task_type: str
|
||||
success: bool
|
||||
data: Optional[Dict[str, Any]] = None
|
||||
error_message: Optional[str] = None
|
||||
|
||||
|
||||
class BaseMeasurement(ABC):
|
||||
"""测量任务基类"""
|
||||
|
||||
def __init__(self, name: str, point_cloud: np.ndarray, config: Dict[str, Any], spatial_index=None):
|
||||
"""
|
||||
初始化测量任务
|
||||
|
||||
Args:
|
||||
name: 任务名称
|
||||
point_cloud: 完整点云数组 (N, 3)
|
||||
config: 任务配置字典
|
||||
spatial_index: 空间索引对象(可选)
|
||||
"""
|
||||
self.name = name
|
||||
self.point_cloud = point_cloud
|
||||
self.config = config
|
||||
self.task_type = config.get('type', 'unknown')
|
||||
self.spatial_index = spatial_index # 保存空间索引
|
||||
|
||||
@abstractmethod
|
||||
def execute(self) -> MeasurementResult:
|
||||
"""
|
||||
执行测量任务
|
||||
|
||||
Returns:
|
||||
MeasurementResult: 测量结果
|
||||
"""
|
||||
pass
|
||||
|
||||
def is_enabled(self) -> bool:
|
||||
"""检查任务是否启用"""
|
||||
return self.config.get('enabled', True)
|
||||
Reference in New Issue
Block a user