def __init__(self, interface, settings): QObject.__init__(self) self.iface = interface self.settings = settings self.stop = False self.util = Util(self.iface) self.intersections = []
def __init__(self, iface, hekto, attribs, delimiter, decimalDelimiter, fileName, settings, profiles): self.iface = iface self.hekto = hekto self.attribs = attribs self.delimiter = delimiter self.decimalDelimiter = decimalDelimiter self.fileName = fileName self.settings = settings self.profiles = profiles self.u = Util(self.iface)
def __init__(self, iface, fileName, settings, profiles): self.iface = iface self.fileName = fileName self.settings = settings self.profiles = profiles self.u = Util(self.iface)
def create(self): profiles = [] #Line aus den Textboxwerten erstellen if self.settings.modeLine == enumModeLine.straightLine: profiles.append( self.processFeature(None, 1, 1, self.settings.mapData.customLine)) return profiles #Line aus gezeichneter Linie erstellen if self.settings.modeLine == enumModeLine.customLine: profiles.append( self.processFeature(None, 1, 1, self.settings.mapData.customLine)) return profiles #Shapefile Geometrien abarbeiten if self.settings.modeLine == enumModeLine.line: #feat = QgsFeature() #if self.settings.onlySelectedFeatures is True: # for feat in self.settings.mapData.selectedLineLyr.line.selectedFeatures(): # profiles.append(self.processFeature(len(profiles) + 1, # self.settings.mapData.selectedLineLyr.line.id(), # feat # ) # ) #else: # provider = self.settings.mapData.selectedLineLyr.line.dataProvider() # attrIndices = provider.attributeIndexes() # provider.select(attrIndices) # while (provider.nextFeature(feat)): # #QgsMessageLog.logMessage(str(self.settings.mapData.selectedLineLyr.line.id()), 'VoGis') # profiles.append(self.processFeature(len(profiles) + 1, # self.settings.mapData.selectedLineLyr.line.id(), # feat # ) # ) provider = self.settings.mapData.selectedLineLyr.line.dataProvider( ) feats = [] #Alle Attribute holen if QGis.QGIS_VERSION_INT < 10900: provider.select(provider.attributeIndexes()) if self.settings.onlySelectedFeatures is True: feats = self.settings.mapData.selectedLineLyr.line.selectedFeatures( ) else: if QGis.QGIS_VERSION_INT < 10900: attrIndices = provider.attributeIndexes() provider.select(attrIndices) feat = QgsFeature() while (provider.nextFeature(feat)): #geom = feat.geometry() #QgsMessageLog.logMessage( 'isMultipart: {0}'.format(str(geom.isMultipart())), 'VoGis') #attrs = feat.attributeMap() # attrs is a dictionary: key = field index, value = QgsFeatureAttribute # show all attributes and their values #for (k, attr) in feat.attributeMap().iteritems(): # QgsMessageLog.logMessage('{0}: {1}'.format(k, attr.toString()), 'VoGis') feats.append(feat) #neues Feature verwenden, weil sonst die Multiparts #nicht als solche erkannt werden feat = QgsFeature() else: QgsMessageLog.logMessage('PROVIDER SELECT', 'VoGis') #processing.getfeatures: This will iterate over all the features in the layer, in case there is no selection, or over the selected features otherwise. #obviously not available with windows standalone installer #features = processing.getfeatures(self.settings.mapData.selectedLineLyr.line) features = self.settings.mapData.selectedLineLyr.line.getFeatures( ) for feat in features: feats.append(feat) #for feat in feats: # if feat.isValid() is False: # return [] ut = Util(self.iface) feats, err_msg = ut.prepareFeatures(self.settings, provider, feats) if not err_msg is None: #QMessageBox.critical(self.iface.mainWindow(), "VoGIS-Profiltool", err_msg) QMessageBox.critical(self.iface.mainWindow(), 'PREPARE ERROR', err_msg) return [] for f in feats: geom = f.geometry() if geom.isMultipart(): msg = QApplication.translate( 'code', 'Multipart Feature vorhanden! Option zum Explodieren verwenden.', None, QApplication.UnicodeUTF8) QMessageBox.warning(self.iface.mainWindow(), "VoGIS-Profiltool", msg) return profiles featCnt = len(feats) for idx, feat in enumerate(feats): #QGIS 2.0 http://gis.stackexchange.com/a/58754 http://gis.stackexchange.com/a/57090 #http://acaciaecho.wordpress.com/2011/01/11/pyqtprogressbar/ self.iface.mainWindow().statusBar().showMessage( 'VoGIS-Profiltool, Element: {0}/{1}'.format(idx, featCnt)) profiles.append( self.processFeature( provider.fields(), len(profiles) + 1, self.settings.mapData.selectedLineLyr.line.id(), feat)) #QGIS 2.0 http://gis.stackexchange.com/a/58754 http://gis.stackexchange.com/a/57090 self.iface.mainWindow().statusBar().showMessage( 'VoGIS-Profiltool, {0} Profile'.format(len(profiles))) return profiles