''' @author: olivier.massot, 2018 ''' import logging from qgis.core import QgsWkbTypes from PyQt5.QtCore import QVariant logger = logging.getLogger("mncheck") class QgsModel(): GEOM_UNKNOWN = 0 GEOM_POINT = 1 GEOM_LINE = 2 GEOM_POLYGON = 3 GEOM_MULTIPOINT = 4 GEOM_MULTILINE = 5 GEOM_MULTIPOLYGON = 6 GEOM_NAMES = {0: "(AUCUN)", 1: "POINT", 2: "LIGNE", 3: "POLYGONE", 4: "MULTI-POINT", 5:"MULTI-LIGNE", 6:"MULTI-POLYGONE"} layername = "" pk = "" geom_type = 0 bounding_box = (0,0,1,1) schema = {} def __init__(self, qgs_feature): self._feature = qgs_feature attributes = dict(zip([f.name() for f in qgs_feature.fields()], qgs_feature.attributes())) for attr, value in attributes.items(): if isinstance(value, QVariant): value = value.value() if not value.isNull() else "" setattr(self, attr, value) self.geom = qgs_feature.geometry() def is_geometry_valid(self): return self._feature.geometry().isGeosValid() def get_geom_type(self): return QgsWkbTypes.singleType(self._feature.geometry().wkbType()) def get_bounding_box(self): bb = self._feature.geometry().boundingBox() return (bb.xMinimum(), bb.yMinimum(), bb.xMaximum(), bb.yMaximum())