2017-05-24 5 views
-1

レイヤのすべてのフィーチャのジオメトリとQGISの特定のフィーチャのジオメトリを比較したいと思います。私はoutoutとして、この私が取得していますNoneを実行していない場合はすべてのレイヤのフィーチャを比較する方法

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) 

: はここに私のコードです。私が本当に望むのは、ジオメトリタイプが同じであればTrueを返します。そうでなければFalseです。 誰かが助けてくれる

+0

'layer_name == self.target_layer_name'がFalseの場合、返されません。 – e4c5

+0

うん、訂正しました。そして、コードは 'dict'オブジェクトが 'getFeatures'属性を持たない返す –

+0

これは自明です。あるクラスのインスタンスであるかのように辞書を扱っています – e4c5

答えて

0

バージョン10のライセンスレベルでこれを行うツールが組み込まれています。これは機能比較ツールと呼ばれています。これはまさにあなたが望むと言ったものと同じように聞こえる。 http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//001700000004000000

+0

QGISでこれを行いたい –

+0

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

関連する問題