Просмотр исходного кода

Corrige les erreurs d'exécution levées lorsque la couche zapbo est
manquante

omassot 6 лет назад
Родитель
Сommit
2e2dde3fb7
3 измененных файлов с 10 добавлено и 12 удалено
  1. 6 4
      core/mncheck.py
  2. 2 4
      schemas/mn1_rec.py
  3. 2 4
      schemas/mn2_rec.py

+ 6 - 4
core/mncheck.py

@@ -88,24 +88,26 @@ class QgsModel():
     
     @property
     def geom(self):
+        if not self._feature:
+            return None
         return self._feature.geometry()
     
     def is_geometry_valid(self):
-        return self._feature.geometry().isGeosValid()
+        return self.geom and self.geom.isGeosValid()
         
     def get_geom_type(self):
-        return QgsWkbTypes.singleType(self._feature.geometry().wkbType())
+        return QgsWkbTypes.singleType(self._feature.geometry().wkbType()) if self.geom else None
     
     @classmethod
     def get_geom_name(cls, wkb):
         return QgsWkbTypes.displayString(wkb)
         
     def get_bounding_box(self):
-        bb = self._feature.geometry().boundingBox()
+        bb = self.geom.boundingBox()
         return (bb.xMinimum(), bb.yMinimum(), bb.xMaximum(), bb.yMaximum())
     
     def get_points(self):
-        if self.geom.isNull():
+        if not self.geom or self.geom.isNull():
             return []
         
         multi_geom = QgsGeometry()

+ 2 - 4
schemas/mn1_rec.py

@@ -201,9 +201,7 @@ class Mn1Checker(BaseChecker):
         for model in models:
             model.layer = next((l for l in QgsProject.instance().mapLayers().values() \
                           if l.name().lower() == model.layername.lower()), None)
-            if not model.layer:
-                continue
-            self.dataset[model] = [model(f) for f in model.layer.getFeatures()]
+            self.dataset[model] = [model(f) for f in model.layer.getFeatures()] if model.layer else []
         
         self.arteres = self.dataset.get(Artere, [])
         self.cables = self.dataset.get(Cable, [])
@@ -254,7 +252,7 @@ class Mn1Checker(BaseChecker):
         Vérifie que les couches ont le bon sytème de projection
         """
         for model in models:
-            if model.layer.crs().authid() != model.crs:
+            if model.layer and model.layer.crs().authid() != model.crs:
                 self.log_error(f"Mauvaise projection (attendu: {model.crs})", model=model)
 
     def _validate_structure(self, model, items):

+ 2 - 4
schemas/mn2_rec.py

@@ -222,9 +222,7 @@ class Mn2Checker(BaseChecker):
         for model in models:
             model.layer = next((l for l in QgsProject.instance().mapLayers().values() \
                           if l.name().lower() == model.layername.lower()), None)
-            if not model.layer:
-                continue
-            self.dataset[model] = [model(f) for f in model.layer.getFeatures()]
+            self.dataset[model] = [model(f) for f in model.layer.getFeatures()] if model.layer else []
         
         self.arteres = self.dataset.get(Artere, [])
         self.cables = self.dataset.get(Cable, [])
@@ -274,7 +272,7 @@ class Mn2Checker(BaseChecker):
         Vérifie que les couches ont le bon sytème de projection
         """
         for model in models:
-            if model.layer.crs().authid() != model.crs:
+            if model.layer and model.layer.crs().authid() != model.crs:
                 self.log_error(f"Mauvaise projection (attendu: {model.crs})", model=model)
 
     def _validate_structure(self, model, items):