Exemplo n.º 1
0
    def works_field_matching(self):

        self.matchingfrom.clear()
        self.matchingto.clear()

        if self.needsmatching.isChecked():
            self.matchingfrom.setVisible(True)
            self.matchingto.setVisible(True)
            self.lblmatchfrom.setVisible(True)
            self.lblmatchto.setVisible(True)

            if self.fromlayer.currentIndex() >= 0:
                layer = get_vector_layer_by_name(self.fromlayer.currentText(
                ))  # If we have the right layer in hands
                for field in layer.pendingFields().toList():
                    self.matchingfrom.addItem(field.name())

            if self.tolayer.currentIndex() >= 0:
                layer = get_vector_layer_by_name(self.tolayer.currentText(
                ))  # If we have the right layer in hands
                for field in layer.pendingFields().toList():
                    self.matchingto.addItem(field.name())
        else:
            self.matchingfrom.setVisible(False)
            self.matchingto.setVisible(False)
            self.lblmatchfrom.setVisible(False)
            self.lblmatchto.setVisible(False)
 def reload_fields(self, box):
     if box == 'from':
         self.fromfield.clear()
         if self.fromlayer.currentIndex() >= 0:
             layer = get_vector_layer_by_name(self.fromlayer.currentText(
             ))  # If we have the right layer in hands
             for field in layer.pendingFields().toList():
                 self.fromfield.addItem(field.name())
     else:
         self.tofield.clear()
         if self.tolayer.currentIndex() >= 0:
             layer = get_vector_layer_by_name(self.tolayer.currentText(
             ))  # If we have the right layer in hands
             for field in layer.pendingFields().toList():
                 self.tofield.addItem(field.name())
Exemplo n.º 3
0
 def reload_fields_matching(self):
     self.matches_types()
     if self.tolayer.currentIndex() >= 0:
         self.matchingto.clear()
         layer = get_vector_layer_by_name(self.tolayer.currentText(
         ))  # If we have the right layer in hands
         for field in layer.pendingFields().toList():
             self.matchingto.addItem(field.name())
Exemplo n.º 4
0
    def matches_types(self):
        self.fromtype = None
        self.frommatchingtype = None

        if self.fromlayer.currentIndex() >= 0:
            layer = get_vector_layer_by_name(self.fromlayer.currentText(
            ))  # If we have the right layer in hands
            for field in layer.pendingFields().toList():
                if self.fromfield.currentText() == field.name():
                    self.fromtype = field.type()

        if self.needsmatching.isChecked():
            if self.fromlayer.currentIndex() >= 0:
                layer = get_vector_layer_by_name(self.fromlayer.currentText(
                ))  # If we have the right layer in hands
                for field in layer.pendingFields().toList():
                    if self.matchingfrom.currentText() == field.name():
                        self.frommatchingtype = field.type()
Exemplo n.º 5
0
    def set_to_fields(self):
        self.tofield.clear()

        if self.tolayer.currentIndex() >= 0:
            layer = get_vector_layer_by_name(self.tolayer.currentText(
            ))  # If we have the right layer in hands

            for field in layer.pendingFields().toList():
                self.tofield.addItem(field.name())
        if self.needsmatching.isChecked():
            self.works_field_matching()
    def run(self):
        error = None
        if self.fromlayer.currentIndex() < 0 or self.fromfield.currentIndex() < 0 or \
           self.tolayer.currentIndex() < 0 or self.tofield.currentIndex() < 0:
            error = "ComboBox with ilegal value"

        flayer = self.fromlayer.currentText()
        ffield = self.fromfield.currentText()
        tlayer = self.tolayer.currentText()
        tfield = self.tofield.currentText()

        layer1 = get_vector_layer_by_name(
            self.fromlayer.currentText()).wkbType()
        layer2 = get_vector_layer_by_name(self.tolayer.currentText()).wkbType()
        if layer1 in point_types and layer2 in point_types:
            error = 'It is not sensible to have two point layers for this analysis'

        if error is None:
            self.worker_thread = \
                LeastCommonDenominatorProcedure(qgis.utils.iface.mainWindow(), flayer, tlayer, ffield, tfield)
            self.run_thread()
        else:
            qgis.utils.iface.messageBar().pushMessage(
                "Input data not provided correctly. ", error, level=3)
Exemplo n.º 7
0
    def set_from_fields(self):
        self.fromfield.clear()

        if self.fromlayer.currentIndex() >= 0:
            layer = get_vector_layer_by_name(self.fromlayer.currentText(
            ))  # If we have the right layer in hands

            for field in layer.pendingFields().toList():
                self.fromfield.addItem(field.name())

            self.enclosed.setEnabled(True)
            if layer.wkbType() not in poly_types:
                self.enclosed.setEnabled(False)
                if self.enclosed.isChecked:
                    self.touching.setChecked(True)

        if self.needsmatching.isChecked():
            self.works_field_matching()
        self.matches_types()