""" CityGmlBase module abstract class to template the different level of details SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2022 Concordia CERC group Project Coder Guille Gutierrez guillermo.gutierrezmorote@concordia.ca """ from abc import ABC import numpy as np from imports.geometry.helpers.geometry_helper import GeometryHelper class CityGmlBase(ABC): """ CityGmlBase class inherited by the specific level of detail classes. """ def __init__(self): self._surfaces = [] @property def surfaces(self): """ Get parsed surfaces """ return self._surfaces @staticmethod def _remove_last_point(points): array = points.split(' ') res = " " return res.join(array[0:len(array) - 3]) @staticmethod def _solid_points(coordinates) -> np.ndarray: solid_points = np.fromstring(coordinates, dtype=float, sep=' ') solid_points = GeometryHelper.to_points_matrix(solid_points) return solid_points @classmethod def _solid(cls, city_object_member): raise NotImplementedError @classmethod def _multi_surface(cls, city_object_member): raise NotImplementedError @classmethod def _multi_curve(cls, city_object_member): raise NotImplementedError