from abc import ABC, abstractmethod
from Grounded.DataObject import PointCloud, Raster
from Grounded.Tools.Tools import Tools
[docs]
class PointCloudProcessor(Tools, ABC):
"""
Cette classe est une interface définissant les méthodes nécessaires pour traiter les nuages de points.
Les classes concrètes implémentant cette interface devront fournir des implémentations pour les méthodes
mise_a_echelle et cloud_to_cloud_difference.
"""
[docs]
@abstractmethod
def mise_a_echelle(self, point_cloud: PointCloud, facteur: float) -> PointCloud:
"""
Méthode abstraite pour effectuer une mise à l'échelle d'un nuage de points.
Args:
point_cloud (PointCloud): Le nuage de points à mettre à l'échelle.
facteur (float): Le facteur d'échelle à appliquer.
Returns:
PointCloud: Le nuage de points mis à l'échelle.
"""
pass
[docs]
@abstractmethod
def cloud_to_cloud_distance(self, point_cloud_before_excavation: PointCloud,
point_cloud_after_excavation: PointCloud) -> Raster:
"""
Méthode abstraite pour calculer la distance entre deux nuages de points.
Args:
point_cloud_before_excavation (PointCloud): Le nuage de points avant l'excavation.
point_cloud_after_excavation (PointCloud): Le nuage de points après l'excavation.
Returns:
Raster: Un objet Raster correspondant à un fichier raster représentant la distance
entre les deux nuages de points.
"""
pass
[docs]
@abstractmethod
def crop_point_cloud(self, point_cloud: PointCloud, coordonnees_trace: list[tuple[float, float]]) -> PointCloud:
"""
Méthode abstraite permettant de découper un nuage de points à partir d'une liste de coordonnées délimitant
les contours.
Args:
point_cloud (PointCloud): le nuage de point dans lequel effectuer la découpe
coordonnees_trace (list): coordonnées détourant la zone de découpe
Returns:
PointCloud: nuage de points de la partie découpée
"""
pass
[docs]
@abstractmethod
def volume_between_clouds(self, crop_before: PointCloud, crop_after: PointCloud) -> float:
"""
Méthode abstraite pour calculer le volume se trouvant entre deux nuages de points
Args:
crop_before (PointCloud): Le nuage de points découpé avant l'excavation.
crop_after (PointCloud): Le nuage de points découpé après l'excavation.
Returns:
float: le volume calculé
"""
pass
[docs]
@abstractmethod
def get_config(self) -> str:
pass