Exemplo n.º 1
0
    def test_joined_layers_conversion(self):
        v1 = QgsVectorLayer("Point?field=id:integer&field=b_id:integer&field=c_id:integer&field=name:string", "A", "memory")
        self.assertEqual(v1.isValid(), True)
        v2 = QgsVectorLayer("Point?field=id:integer&field=bname:string&field=bfield:integer", "B", "memory")
        self.assertEqual(v2.isValid(), True)
        v3 = QgsVectorLayer("Point?field=id:integer&field=cname:string", "C", "memory")
        self.assertEqual(v3.isValid(), True)
        QgsProject.instance().addMapLayers([v1, v2, v3])
        joinInfo = QgsVectorJoinInfo()
        joinInfo.targetFieldName = "b_id"
        joinInfo.joinLayerId = v2.id()
        joinInfo.joinFieldName = "id"
        #joinInfo.prefix = "B_";
        v1.addJoin(joinInfo)
        self.assertEqual(len(v1.fields()), 6)

        df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
        self.assertEqual(df.query(), 'SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS B_bname, j1.bfield AS B_bfield FROM {} AS t LEFT JOIN {} AS j1 ON t."b_id"=j1."id"'.format(v1.id(), v2.id()))

        # with a field subset
        v1.removeJoin(v2.id())
        joinInfo.setJoinFieldNamesSubset(["bname"])
        v1.addJoin(joinInfo)
        self.assertEqual(len(v1.fields()), 5)
        df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
        self.assertEqual(df.query(), 'SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS B_bname FROM {} AS t LEFT JOIN {} AS j1 ON t."b_id"=j1."id"'.format(v1.id(), v2.id()))
        joinInfo.setJoinFieldNamesSubset(None)

        # add a table prefix to the join
        v1.removeJoin(v2.id())
        joinInfo.prefix = "BB_"
        v1.addJoin(joinInfo)
        self.assertEqual(len(v1.fields()), 6)
        df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
        self.assertEqual(df.query(), 'SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS BB_bname, j1.bfield AS BB_bfield FROM {} AS t LEFT JOIN {} AS j1 ON t."b_id"=j1."id"'.format(v1.id(), v2.id()))
        joinInfo.prefix = ""
        v1.removeJoin(v2.id())
        v1.addJoin(joinInfo)

        # add another join
        joinInfo2 = QgsVectorJoinInfo()
        joinInfo2.targetFieldName = "c_id"
        joinInfo2.joinLayerId = v3.id()
        joinInfo2.joinFieldName = "id"
        v1.addJoin(joinInfo2)
        self.assertEqual(len(v1.fields()), 7)
        df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
        self.assertEqual(df.query(), ('SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS B_bname, j1.bfield AS B_bfield, j2.cname AS C_cname FROM {} AS t ' +
                                      'LEFT JOIN {} AS j1 ON t."b_id"=j1."id" ' +
                                      'LEFT JOIN {} AS j2 ON t."c_id"=j2."id"').format(v1.id(), v2.id(), v3.id()))

        QgsProject.instance().removeMapLayers([v1.id(), v2.id(), v3.id()])
Exemplo n.º 2
0
    def test_joined_layers_conversion(self):
        v1 = QgsVectorLayer("Point?field=id:integer&field=b_id:integer&field=c_id:integer&field=name:string", "A", "memory")
        self.assertEqual(v1.isValid(), True)
        v2 = QgsVectorLayer("Point?field=id:integer&field=bname:string&field=bfield:integer", "B", "memory")
        self.assertEqual(v2.isValid(), True)
        v3 = QgsVectorLayer("Point?field=id:integer&field=cname:string", "C", "memory")
        self.assertEqual(v3.isValid(), True)
        QgsMapLayerRegistry.instance().addMapLayers([v1, v2, v3])
        joinInfo = QgsVectorJoinInfo()
        joinInfo.targetFieldName = "b_id"
        joinInfo.joinLayerId = v2.id()
        joinInfo.joinFieldName = "id"
        #joinInfo.prefix = "B_";
        v1.addJoin(joinInfo)
        self.assertEqual(len(v1.fields()), 6)

        df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
        self.assertEqual(df.query(), 'SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS B_bname, j1.bfield AS B_bfield FROM {} AS t LEFT JOIN {} AS j1 ON t."b_id"=j1."id"'.format(v1.id(), v2.id()))

        # with a field subset
        v1.removeJoin(v2.id())
        joinInfo.setJoinFieldNamesSubset(["bname"])
        v1.addJoin(joinInfo)
        self.assertEqual(len(v1.fields()), 5)
        df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
        self.assertEqual(df.query(), 'SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS B_bname FROM {} AS t LEFT JOIN {} AS j1 ON t."b_id"=j1."id"'.format(v1.id(), v2.id()))
        joinInfo.setJoinFieldNamesSubset(None)

        # add a table prefix to the join
        v1.removeJoin(v2.id())
        joinInfo.prefix = "BB_"
        v1.addJoin(joinInfo)
        self.assertEqual(len(v1.fields()), 6)
        df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
        self.assertEqual(df.query(), 'SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS BB_bname, j1.bfield AS BB_bfield FROM {} AS t LEFT JOIN {} AS j1 ON t."b_id"=j1."id"'.format(v1.id(), v2.id()))
        joinInfo.prefix = ""
        v1.removeJoin(v2.id())
        v1.addJoin(joinInfo)

        # add another join
        joinInfo2 = QgsVectorJoinInfo()
        joinInfo2.targetFieldName = "c_id"
        joinInfo2.joinLayerId = v3.id()
        joinInfo2.joinFieldName = "id"
        v1.addJoin(joinInfo2)
        self.assertEqual(len(v1.fields()), 7)
        df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
        self.assertEqual(df.query(), ('SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS B_bname, j1.bfield AS B_bfield, j2.cname AS C_cname FROM {} AS t ' +
                                      'LEFT JOIN {} AS j1 ON t."b_id"=j1."id" ' +
                                      'LEFT JOIN {} AS j2 ON t."c_id"=j2."id"').format(v1.id(), v2.id(), v3.id()))

        QgsMapLayerRegistry.instance().removeMapLayers([v1.id(), v2.id(), v3.id()])
Exemplo n.º 3
0
    def test_join(self):

        joinLayer = createJoinLayer()
        joinLayer2 = createJoinLayer()
        QgsMapLayerRegistry.instance().addMapLayers([joinLayer, joinLayer2])

        layer = createLayerWithOnePoint()

        join = QgsVectorJoinInfo()
        join.targetFieldName = "fldint"
        join.joinLayerId = joinLayer.id()
        join.joinFieldName = "y"
        join.memoryCache = True

        layer.addJoin(join)

        join2 = QgsVectorJoinInfo()
        join2.targetFieldName = "fldint"
        join2.joinLayerId = joinLayer2.id()
        join2.joinFieldName = "y"
        join2.memoryCache = True
        join2.prefix = "custom-prefix_"

        layer.addJoin(join2)

        flds = layer.pendingFields()
        assert len(flds) == 6
        assert flds[2].name() == "joinlayer_x"
        assert flds[3].name() == "joinlayer_z"
        assert flds[4].name() == "custom-prefix_x"
        assert flds[5].name() == "custom-prefix_z"
        assert flds.fieldOrigin(0) == QgsFields.OriginProvider
        assert flds.fieldOrigin(2) == QgsFields.OriginJoin
        assert flds.fieldOrigin(3) == QgsFields.OriginJoin
        assert flds.fieldOriginIndex(0) == 0
        assert flds.fieldOriginIndex(2) == 0
        assert flds.fieldOriginIndex(3) == 2

        f = QgsFeature()
        fi = layer.getFeatures()
        assert fi.nextFeature(f) == True
        attrs = f.attributes()
        assert len(attrs) == 6
        assert attrs[0] == "test"
        assert attrs[1] == 123
        assert attrs[2] == "foo"
        assert attrs[3] == 321
        assert fi.nextFeature(f) == False

        f2 = layer.getFeatures(QgsFeatureRequest(f.id())).next()
        assert len(f2.attributes()) == 6
        assert f2[2] == "foo"
        assert f2[3] == 321
Exemplo n.º 4
0
    def test_join(self):

        joinLayer = createJoinLayer()
        joinLayer2 = createJoinLayer()
        QgsMapLayerRegistry.instance().addMapLayers([joinLayer, joinLayer2])

        layer = createLayerWithOnePoint()

        join = QgsVectorJoinInfo()
        join.targetFieldName = "fldint"
        join.joinLayerId = joinLayer.id()
        join.joinFieldName = "y"
        join.memoryCache = True

        layer.addJoin(join)

        join2 = QgsVectorJoinInfo()
        join2.targetFieldName = "fldint"
        join2.joinLayerId = joinLayer2.id()
        join2.joinFieldName = "y"
        join2.memoryCache = True
        join2.prefix = "custom-prefix_"

        layer.addJoin(join2)

        flds = layer.pendingFields()
        self.assertEquals(len(flds), 6)
        self.assertEquals(flds[2].name(), "joinlayer_x")
        self.assertEquals(flds[3].name(), "joinlayer_z")
        self.assertEquals(flds[4].name(), "custom-prefix_x")
        self.assertEquals(flds[5].name(), "custom-prefix_z")
        self.assertEquals(flds.fieldOrigin(0), QgsFields.OriginProvider)
        self.assertEquals(flds.fieldOrigin(2), QgsFields.OriginJoin)
        self.assertEquals(flds.fieldOrigin(3), QgsFields.OriginJoin)
        self.assertEquals(flds.fieldOriginIndex(0), 0)
        self.assertEquals(flds.fieldOriginIndex(2), 0)
        self.assertEquals(flds.fieldOriginIndex(3), 2)

        f = QgsFeature()
        fi = layer.getFeatures()
        self.assertTrue(fi.nextFeature(f))
        attrs = f.attributes()
        self.assertEquals(len(attrs), 6)
        self.assertEquals(attrs[0], "test")
        self.assertEquals(attrs[1], 123)
        self.assertEquals(attrs[2], "foo")
        self.assertEquals(attrs[3], 321)
        self.assertFalse(fi.nextFeature(f))

        f2 = layer.getFeatures(QgsFeatureRequest(f.id())).next()
        self.assertEquals(len(f2.attributes()), 6)
        self.assertEquals(f2[2], "foo")
        self.assertEquals(f2[3], 321)
Exemplo n.º 5
0
    def test_join(self):

        joinLayer = createJoinLayer()
        joinLayer2 = createJoinLayer()
        QgsMapLayerRegistry.instance().addMapLayers([joinLayer, joinLayer2])

        layer = createLayerWithOnePoint()

        join = QgsVectorJoinInfo()
        join.targetFieldName = "fldint"
        join.joinLayerId = joinLayer.id()
        join.joinFieldName = "y"
        join.memoryCache = True

        layer.addJoin(join)

        join2 = QgsVectorJoinInfo()
        join2.targetFieldName = "fldint"
        join2.joinLayerId = joinLayer2.id()
        join2.joinFieldName = "y"
        join2.memoryCache = True
        join2.prefix = "custom-prefix_"

        layer.addJoin(join2)

        flds = layer.pendingFields()
        assert len(flds) == 6
        assert flds[2].name() == "joinlayer_x"
        assert flds[3].name() == "joinlayer_z"
        assert flds[4].name() == "custom-prefix_x"
        assert flds[5].name() == "custom-prefix_z"
        assert flds.fieldOrigin(0) == QgsFields.OriginProvider
        assert flds.fieldOrigin(2) == QgsFields.OriginJoin
        assert flds.fieldOrigin(3) == QgsFields.OriginJoin
        assert flds.fieldOriginIndex(0) == 0
        assert flds.fieldOriginIndex(2) == 0
        assert flds.fieldOriginIndex(3) == 2

        f = QgsFeature()
        fi = layer.getFeatures()
        assert fi.nextFeature(f)
        attrs = f.attributes()
        assert len(attrs) == 6
        assert attrs[0] == "test"
        assert attrs[1] == 123
        assert attrs[2] == "foo"
        assert attrs[3] == 321
        assert not fi.nextFeature(f)

        f2 = layer.getFeatures(QgsFeatureRequest(f.id())).next()
        assert len(f2.attributes()) == 6
        assert f2[2] == "foo"
        assert f2[3] == 321
Exemplo n.º 6
0
    def test_join(self):

        joinLayer = createJoinLayer()
        joinLayer2 = createJoinLayer()
        QgsMapLayerRegistry.instance().addMapLayers([joinLayer, joinLayer2])

        layer = createLayerWithOnePoint()

        join = QgsVectorJoinInfo()
        join.targetFieldName = "fldint"
        join.joinLayerId = joinLayer.id()
        join.joinFieldName = "y"
        join.memoryCache = True

        layer.addJoin(join)

        join2 = QgsVectorJoinInfo()
        join2.targetFieldName = "fldint"
        join2.joinLayerId = joinLayer2.id()
        join2.joinFieldName = "y"
        join2.memoryCache = True
        join2.prefix = "custom-prefix_"

        layer.addJoin(join2)

        flds = layer.pendingFields()
        self.assertEquals(len(flds), 6)
        self.assertEquals(flds[2].name(), "joinlayer_x")
        self.assertEquals(flds[3].name(), "joinlayer_z")
        self.assertEquals(flds[4].name(), "custom-prefix_x")
        self.assertEquals(flds[5].name(), "custom-prefix_z")
        self.assertEquals(flds.fieldOrigin(0), QgsFields.OriginProvider)
        self.assertEquals(flds.fieldOrigin(2), QgsFields.OriginJoin)
        self.assertEquals(flds.fieldOrigin(3), QgsFields.OriginJoin)
        self.assertEquals(flds.fieldOriginIndex(0), 0)
        self.assertEquals(flds.fieldOriginIndex(2), 0)
        self.assertEquals(flds.fieldOriginIndex(3), 2)

        f = QgsFeature()
        fi = layer.getFeatures()
        self.assertTrue(fi.nextFeature(f))
        attrs = f.attributes()
        self.assertEquals(len(attrs), 6)
        self.assertEquals(attrs[0], "test")
        self.assertEquals(attrs[1], 123)
        self.assertEquals(attrs[2], "foo")
        self.assertEquals(attrs[3], 321)
        self.assertFalse(fi.nextFeature(f))

        f2 = next(layer.getFeatures(QgsFeatureRequest(f.id())))
        self.assertEquals(len(f2.attributes()), 6)
        self.assertEquals(f2[2], "foo")
        self.assertEquals(f2[3], 321)
Exemplo n.º 7
0
    def execute_layers_join(layer, layer_field, column_header, fk_layer, fk_field):
        """
        Joins two layers with specified field.
        :param layer: The destination layer of the merge.
        :type layer: QgsVectorLayer
        :param layer_field: The source layer of the merge.
        :type layer_field: String
        :param fk_layer: The foreign key layer object.
        :type fk_layer: QgsVectorLayer
        :param fk_field: The foreign key layer field name.
        :type fk_field: String
        :return:
        :rtype:
        """
        join = QgsVectorJoinInfo()
        join.joinLayerId = fk_layer.id()
        join.joinFieldName = 'id'

        join.setJoinFieldNamesSubset([fk_field])
        join.targetFieldName = layer_field
        join.memoryCache = True
        join.prefix = u'{} '.format(column_header)
        layer.addJoin(join)
Exemplo n.º 8
0
    def execute_layers_join(layer, layer_field, column_header, fk_layer, fk_field):
        """
        Joins two layers with specified field.
        :param layer: The destination layer of the merge.
        :type layer: QgsVectorLayer
        :param layer_field: The source layer of the merge.
        :type layer_field: String
        :param fk_layer: The foreign key layer object.
        :type fk_layer: QgsVectorLayer
        :param fk_field: The foreign key layer field name.
        :type fk_field: String
        :return:
        :rtype:
        """
        join = QgsVectorJoinInfo()
        join.joinLayerId = fk_layer.id()
        join.joinFieldName = 'id'

        join.setJoinFieldNamesSubset([fk_field])
        join.targetFieldName = layer_field
        join.memoryCache = True
        join.prefix = u'{} '.format(column_header)
        layer.addJoin(join)
Exemplo n.º 9
0
    def run(self):
        project_id = self.settings.value("project/id")
        epsg = self.settings.value("project/epsg")

        locale = QSettings().value('locale/userLocale')[
                 0:2]  # this is for multilingual legends

        # If locale is different to frence or italian, german will be used.
        # Otherwise we get into troubles with the legends, e.g. locale = "en"
        # but
        # there is no english legend (qml file).
        if locale == "fr":
            pass
        elif locale == "it":
            pass
        else:
            locale = "de"

        if not project_id:
            self.message_bar.pushCritical("Error",
                                          _translate("VeriSO_V+D_FP1",
                                                     "project_id not set",
                                                     None))
            return

        QApplication.setOverrideCursor(Qt.WaitCursor)
        try:
            group = _translate("VeriSO_V+D_FP1", "FixpunkteKategorie1", None)
            group += " (" + str(project_id) + ")"

            # Lagefixpunkte 1

            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP1", "LFP1 Nachführung",
                                    None),
                "featuretype": "fixpunktekatgrie1_lfp1nachfuehrung",
                "geom": "perimeter", "key": "ogc_fid", "sql": "",
                "readonly": True, "group": group
            }

            # Visibility and if legend and/or groupd should be collapsed can
            # be set with parameters in the self.layer_loader.load()
            # method:
            # load(layer, visibility=True, collapsed_legend=False,
            # collapsed_group=False)
            vlayer_lfp1_nf = self.layer_loader.load(layer, False, True)

            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP1", "LFP1", None),
                "featuretype": "fixpunktekatgrie1_lfp1", "geom": "geometrie",
                "key": "ogc_fid", "sql": "", "readonly": True, "group": group,
                "style": "fixpunkte/lfp2.qml"
            }

            vlayer_lfp1 = self.layer_loader.load(layer)

            # Join two layers (lfp1 and lfp1nachfuehrung)
            lfp1_field = "entstehung"
            lfp1_nf_field = "ogc_fid"
            join_obj = QgsVectorJoinInfo()
            join_obj.joinLayerId = vlayer_lfp1_nf.id()
            join_obj.joinFieldName = lfp1_nf_field
            join_obj.targetFieldName = lfp1_field
            join_obj.memoryCache = True
            join_obj.prefix = "lfp1_nf_"
            vlayer_lfp1.addJoin(join_obj)

            # This is how WMS layer work.
            layer = {
                "type": "wms",
                "title": _translate("VeriSO_V+D_FP1", "LFP1 Schweiz (WMS)",
                                    None),
                "url": "http://wms.geo.admin.ch/",
                "layers": "ch.swisstopo.fixpunkte-lfp1",
                "format": "image/png", "crs": "EPSG:" + str(epsg),
                "group": group
            }

            vlayer = self.layer_loader.load(layer, False, True)

            # Höhenfixpunkte 1
            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP1", "HFP1 Nachführung",
                                    None),
                "featuretype": "fixpunktekatgrie1_hfp1nachfuehrung",
                "geom": "perimeter", "key": "ogc_fid", "sql": "",
                "readonly": True, "group": group
            }

            vlayer_hfp1_nf = self.layer_loader.load(layer, False, True)

            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP1", "HFP1", None),
                "featuretype": "fixpunktekatgrie1_hfp1", "geom": "geometrie",
                "key": "ogc_fid", "sql": "", "readonly": True, "group": group,
                "style": "fixpunkte/hfp2.qml"
            }

            vlayer_hfp1 = self.layer_loader.load(layer)

            # Join two layers (hfp1 and hfp1nachfuehrung)
            hfp1_field = "entstehung"
            hfp1_nf_field = "ogc_fid"
            join_obj = QgsVectorJoinInfo()
            join_obj.joinLayerId = vlayer_hfp1_nf.id()
            join_obj.joinFieldName = hfp1_nf_field
            join_obj.targetFieldName = hfp1_field
            join_obj.memoryCache = True
            join_obj.prefix = "hfp1_nf_"
            vlayer_hfp1.addJoin(join_obj)

            layer = {
                "type": "wms",
                "title": _translate("VeriSO_V+D_FP1", "HFP1 Schweiz (WMS)",
                                    None),
                "url": "http://wms.geo.admin.ch/",
                "layers": "ch.swisstopo.fixpunkte-hfp1",
                "format": "image/png", "crs": "EPSG:" + str(epsg),
                "group": group
            }

            vlayer = self.layer_loader.load(layer, False, True)

            # Business as usual: Gemeindegrenzen
            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP1", "Gemeindegrenze",
                                    None),
                "featuretype": "gemeindegrenzen_gemeindegrenze",
                "geom": "geometrie", "key": "ogc_fid", "sql": "",
                "readonly": True, "group": group,
                "style": "global_qml/gemeindegrenze/gemgre_strichliert.qml"
            }

            gemgrelayer = self.layer_loader.load(layer)

            # Change map extent.
            # Bug (?) in QGIS: http://hub.qgis.org/issues/10980
            # Closed for the lack of feedback. Upsi...
            # Still a problem? (sz / 2015-04-12)
            if gemgrelayer:
                rect = gemgrelayer.extent()
                rect.scale(5)
                self.iface.mapCanvas().setExtent(rect)
                self.iface.mapCanvas().refresh()
                # Sometimes it does make much more sense
                # to zoom to maximal extent:
                # self.iface.mapCanvas().zoomToFullExtent()

        except Exception:
            QApplication.restoreOverrideCursor()
            exc_type, exc_value, exc_traceback = sys.exc_info()
            self.message_bar.pushMessage("Error", str(
                    traceback.format_exc(exc_traceback)),
                                         level=QgsMessageBar.CRITICAL,
                                         duration=0)
        QApplication.restoreOverrideCursor()
Exemplo n.º 10
0
    def run(self):
        project_id = self.settings.value("project/id")
        epsg = self.settings.value("project/epsg")
        self.project_dir = self.settings.value("project/projectdir")
        self.project_id = self.settings.value("project/id")

        locale = QSettings().value('locale/userLocale')[
            0:2]  # this is for multilingual legends

        # If locale is different to frence or italian, german will be used.
        # Otherwise we get into troubles with the legends, e.g. locale = "en"
        # but
        # there is no english legend (qml file).
        if locale == "fr":
            pass
        elif locale == "it":
            pass
        else:
            locale = "de"

        if not project_id:
            self.message_bar.pushCritical(
                "Error",
                _translate("VeriSO_V+D_FP3", "project_id not set", None))
            return

        QApplication.setOverrideCursor(Qt.WaitCursor)
        try:
            group = _translate("VeriSO_V+D_FP3", "FixpunkteKategorie3", None)
            group += " (" + str(project_id) + ")"

            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP3", "Toleranzstufen", None),
                "featuretype": "tseinteilung_toleranzstufe",
                "geom": "geometrie",
                "key": "ogc_fid",
                "sql": "",
                "readonly": True,
                "group": group,
                "style": "tseinteilung/toleranzstufe_" + locale + ".qml"
            }

            # Visibility and if legend and/or groupd should be collapsed can
            # be set with parameters in the self.layer_loader.load()
            # method:
            # load(layer, visibility=True, collapsed_legend=False,
            # collapsed_group=False)
            vlayer = self.layer_loader.load(layer)

            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP3", "LFP3 Nachführung",
                                    None),
                "featuretype": "fixpunktekatgrie3_lfp3nachfuehrung",
                "geom": "perimeter",
                "key": "ogc_fid",
                "sql": "",
                "readonly": True,
                "group": group
            }

            vlayer_lfp3_nf = self.layer_loader.load(layer, False, True)

            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP3", "LFP3", None),
                "featuretype": "fixpunktekatgrie3_lfp3",
                "geom": "geometrie",
                "key": "ogc_fid",
                "sql": "",
                "readonly": True,
                "group": group,
                "style": "fixpunkte/lfp3_" + locale + ".qml"
            }

            vlayer_lfp3 = self.layer_loader.load(layer)

            # Join two layers (lfp3 and lfp3nachfuehrung)
            lfp3_field = "entstehung"
            lfp3_nf_field = "ogc_fid"
            join_obj = QgsVectorJoinInfo()
            join_obj.joinLayerId = vlayer_lfp3_nf.id()
            join_obj.joinFieldName = lfp3_nf_field
            join_obj.targetFieldName = lfp3_field
            join_obj.memoryCache = True
            join_obj.prefix = "lfp3_nf_"
            vlayer_lfp3.addJoin(join_obj)

            layer = {
                "type":
                "postgres",
                "title":
                _translate("VeriSO_V+D_FP3", "LFP3 ausserhalb "
                           "Gemeinde", None),
                "featuretype":
                "t_lfp3_ausserhalb_gemeinde",
                "geom":
                "geometrie",
                "key":
                "ogc_fid",
                "sql":
                "",
                "readonly":
                True,
                "group":
                group,
                "style":
                "fixpunkte/lfp3ausserhalb.qml"
            }

            vlayer = self.layer_loader.load(layer)

            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP3", "LFP3 pro TS", None),
                "featuretype": "t_lfp3_pro_ts",
                "key": "ogc_fid",
                "sql": "",
                "readonly": True,
                "group": group
            }

            vlayer_lfp3_pro_ts = self.layer_loader.load(layer)

            layer = {
                "type": "postgres",
                "title": _translate("VeriSO_V+D_FP3", "Gemeindegrenze", None),
                "featuretype": "gemeindegrenzen_gemeindegrenze",
                "geom": "geometrie",
                "key": "ogc_fid",
                "sql": "",
                "readonly": True,
                "group": group,
                "style": "global_qml/gemeindegrenze/gemgre_strichliert.qml"
            }

            gemgrelayer = self.layer_loader.load(layer)

            # Change map extent.
            # Bug (?) in QGIS: http://hub.qgis.org/issues/10980
            # Closed for the lack of feedback. Upsi...
            # Still a problem? (sz / 2015-04-12)
            # sz / 2015-04-20:
            # Aaaah: still a problem. Some really strange combination of
            # checked/unchecked-order-of-layers-thing?
            # If wms is addes after gemgre then is scales (rect.scale(5))?!
            # So it seems that the last added layer HAS TO BE unchecked?
            # No not exactly. Only if a wms is added before?
            # rect.scale(5) has no effect?

            # I reopened the ticket / 2015-04-20 / sz

            if gemgrelayer:
                rect = gemgrelayer.extent()
                rect.scale(5)
                self.iface.mapCanvas().setExtent(rect)
                self.iface.mapCanvas().refresh()
                # Sometimes it does make much more sense
            # to zoom to maximal extent:
            # self.iface.mapCanvas().zoomToFullExtent()

            self.export_to_excel(vlayer_lfp3_pro_ts)

        except Exception:
            QApplication.restoreOverrideCursor()
            exc_type, exc_value, exc_traceback = sys.exc_info()
            self.message_bar.pushMessage(
                "Error",
                str(traceback.format_exc(exc_traceback)),
                level=QgsMessageBar.CRITICAL,
                duration=0)
        QApplication.restoreOverrideCursor()