model.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. '''
  2. @author: olivier.massot, 2018
  3. '''
  4. import logging
  5. from qgis.core import QgsWkbTypes
  6. from PyQt5.QtCore import QVariant
  7. logger = logging.getLogger("mncheck")
  8. class QgsModel():
  9. GEOM_UNKNOWN = 0
  10. GEOM_POINT = 1
  11. GEOM_LINE = 2
  12. GEOM_POLYGON = 3
  13. GEOM_MULTIPOINT = 4
  14. GEOM_MULTILINE = 5
  15. GEOM_MULTIPOLYGON = 6
  16. GEOM_NAMES = {0: "(AUCUN)", 1: "POINT", 2: "LIGNE", 3: "POLYGONE",
  17. 4: "MULTI-POINT", 5:"MULTI-LIGNE", 6:"MULTI-POLYGONE"}
  18. layername = ""
  19. pk = ""
  20. geom_type = 0
  21. bounding_box = (0,0,1,1)
  22. schema = {}
  23. def __init__(self, qgs_feature):
  24. self._feature = qgs_feature
  25. attributes = dict(zip([f.name() for f in qgs_feature.fields()], qgs_feature.attributes()))
  26. for attr, value in attributes.items():
  27. if isinstance(value, QVariant):
  28. value = value.value() if not value.isNull() else ""
  29. setattr(self, attr, value)
  30. self.geom = qgs_feature.geometry()
  31. def is_geometry_valid(self):
  32. return self._feature.geometry().isGeosValid()
  33. def get_geom_type(self):
  34. return QgsWkbTypes.singleType(self._feature.geometry().wkbType())
  35. def get_bounding_box(self):
  36. bb = self._feature.geometry().boundingBox()
  37. return (bb.xMinimum(), bb.yMinimum(), bb.xMaximum(), bb.yMaximum())