Daha çox

Xüsusiyyət xətası: "Siyahı" obyektinin getFeatures atributu yoxdur


Qgis 2.6 -da çox qatlı həndəsəni yoxlayan bir plagin hazırlayıram. GetFeatures atributu olmayan bir səhv siyahısı obyekti tapıram. Kod parçacığım aşağıda əlavə edilmişdir.

def run (self): "" "Bütün həqiqi işləri yerinə yetirən işləmə üsulu" "" # dial. -in özünü göstər.dlg.show () # Q. self.dlg.multipartcombo.clear () #self yükləməzdən əvvəl QcomboBoxu sil. dlg.multipartcombo.clear () qat = self.iface.mapCanvas (). qat () qatdakı təbəqə üçün: əgər layer.type () == QgsMapLayer.VectorLayer: self.dlg.multipartcombo.addItem (layer.name () , qat) # Dialoq hadisəsi döngüsünü işlədin nəticə = self.dlg.exec_ () # OK düyməsinə basıldığına baxın # Nəticə olarsa, aktiv qatdakı bütün çox hissəli xüsusiyyətləri tapın: layer = self.dlg.multipartcombo.itemData (self.dlg. multipartcombo.currentIndex ()) iter = layer.getFeatures () geoms = [] iterdəki xüsusiyyət üçün: geom = feature.geometry () if geom.isMultipart (): layer.select (feature.id ()) geoms.append ( geom) əgər nəticə == 1 olarsa: index = self.dlg.featurecombo.currentIndex () qat = self.dlg.featurecombo.itemData (indeks) əgər qat> 0 olarsa: QMessageBox.information (self.iface.mainWindow (), 'Orada bu qatdakı % i çox hissəli xüsusiyyətlərdir % len (geoms)) başqa: QMessageBox.informatio n (self.iface.mainWindow (), "Xəbərdarlıq!", 'Bir qat yüklə!')

Hansı təbəqədən xüsusiyyətlər əldə etmək istədiyinizi göstərməlisiniz.

Kodunuzda,qatlarqatların siyahısıdır, halbukiqatxüsusi bir təbəqədir.

Yalnız zəng edə bilərsinizgetFeatures ()vektor təbəqəsindən.

Əlavə olaraq, ehtimal ki, seçilmiş təbəqəni QComboBox -dan almaq istəyirsiniz. Beləliklə, belə bir şey sınayın (sınamadınız, yəqin ki, bəzi düzəlişlərə ehtiyacınız var):

nəticə olarsa: layer = self.dlg.multipartcombo.itemData (self.dlg.multipartcombo.currentIndex ()) iter = layer.getFeatures ()…