2017-05-24 1 views
-1

Je souhaite comparer la géométrie de toutes les entités d'une couche à la géométrie d'une entité particulière dans QGIS. Voici mon code:Comment comparer les caractéristiques de toutes les couches

class geometry_checker(base_prechecker): 
    def __init__(self): 
     self.target_layer_name = "layer_1" 

    def do_geom_check(self, layer, layers): 
     layer_name = self.get_layer_name(layer) 
     if layer_name == self.target_layer_name: 
      iter = layer.getFeatures() 
      for feat in iter: 
       geom = feat.geometry() 
       e = geom.type() 
       iter1 = layers.getFeatures() 
       for fea in iter1: 
        geom_a = fea.geometry() 
        f = geom.type() 
        if e == f: 
         return True 
        else: 
         return False 




q = geometry_checker() 
lay = iface.activeLayer() 
layers = QgsMapLayerRegistry.instance().mapLayers() 
print q.do_geom_check(lay) 

Si je cours ce que je reçois comme outout Aucun. Ce que je veux vraiment, c'est que si le type de géométrie est le même, il devrait retourner True sinon False. Quelqu'un m'aide m'aider

+0

lorsque 'layer_name == self.target_layer_name' est Faux, il retournera – e4c5

+0

Oui, je l'ai corrigé. Et le code renvoie l'objet 'dict' n'a aucun attribut 'getFeatures' –

+0

Ce qui est explicite. vous traitez un dictionnaire comme s'il s'agissait d'une instance de classe – e4c5

Répondre

0

Il existe un outil intégré qui fera cela pour vous à n'importe quel niveau de licence dans la version 10. C'est ce qu'on appelle l'outil de comparaison de caractéristiques. Cela semble exactement ce que vous avez décrit vouloir. http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001700000004000000

+0

Je veux le faire dans QGIS –

+0

http://docs.qgis.org/testing/fr/docs/pyqgis_developer_cookbook/vector.html –