예제 #1
0
 def __init__(self, interface, settings):
     QObject.__init__(self)
     self.iface = interface
     self.settings = settings
     self.stop = False
     self.util = Util(self.iface)
     self.intersections = []
예제 #2
0
 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)
예제 #3
0
 def __init__(self, iface, fileName, settings, profiles):
     self.iface = iface
     self.fileName = fileName
     self.settings = settings
     self.profiles = profiles
     self.u = Util(self.iface)
예제 #4
0
    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