def run_open_grid_snapped(self):
        snappeddirectory = QFileDialog.getExistingDirectory(
            self.dlg, "Select snapped directory ")

        allshapefiles = glob.glob(os.path.join(snappeddirectory, '*.shp'))

        print(allshapefiles)
        templatefile = r'c:\Users\jong_jn\.qgis2\python\plugins\Delft3D_FlexibleMesh\incl\snapped.qlr'

        _, dirname = os.path.split(snappeddirectory)
        qlrfile = os.path.join(snappeddirectory, 'snapped.qlr')

        # shutil.copy(templatefile, qlrfile)
        with open(templatefile, 'r') as fin:
            templatecontent = fin.read()

        # Do adjustments to the templatecontent
        # templatecontent = templetecontent.replace()

        with open(qlrfile, 'w') as fout:
            fout.write(templatecontent)

        root = QgsProject.instance().layerTreeRoot()
        group = root.insertGroup(0, "Snapped_{}".format(dirname))
        QgsLayerDefinition().loadLayerDefinition(qlrfile, group)
예제 #2
0
    def _load_radarnetwork_layer(self):
        ''' load DWDs radar network consisting of two layers (points and buffer)
        by QgsLayerDefinition file '''

        layergroup_name = "RadarNetwork"

        root = QgsProject.instance().layerTreeRoot()
        """
        Check/uncheck radar network group layer if existing
        """

        # find group layers:
        '''
        for child in root.children():
            if isinstance(child, QgsLayerTreeGroup) and child.name() == layergroup_name:
                self.out("LayerGroup '{}' already exists.".format(layergroup_name), False)
                return
        ''' # is OK, it works
        # simpler method:
        group = root.findGroup(layergroup_name)
        if group:
            #self.out("LayerGroup '{}' already exists.".format(layergroup_name), False)
            state = group.isVisible()
            group.setItemVisibilityChecked(not state)
            return
        """
        Create radar network group layer
        """

        layer_def_file = self._model.plugin_dir / "example/shapes/RadarNetwork/dwd_radarnetwork.qlr"

        if not layer_def_file.exists():
            self.out(
                "layer definition file '{}' doesn't exist.".format(
                    layer_def_file), False)
            return
        """ OK for buffer layer only:
        shp = self._model.plugin_dir / "example/shapes/RadarNetwork/radarbuffer_150km.gpkg"
        vlayer_radar = QgsVectorLayer(str(shp), 'radar_buffer', 'ogr')
        #print("isValid:", vlayer_radar.isValid())
        #crs_radolan = QgsCoordinateReferenceSystem()
        #crs_radolan.createFromProj4(self._model.projection_radolan)
        #vlayer_radar.setCrs(crs_radolan)
        QgsProject.instance().addMapLayer(vlayer_radar)
        """

        #group = root.addGroup("RadarNetwork")    # ok, appended
        group = root.insertGroup(0, layergroup_name)  # first position
        self.out("loading layer definition file '{}'".format(layer_def_file))
        QgsLayerDefinition().loadLayerDefinition(str(layer_def_file),
                                                 QgsProject.instance(), group)
    def run_open_Baseline6(self):
        # Open Baseline-project with template
        # Supports both: d:\modellen\baseline\Rijn\j15_5-v1\ and d:\modellen\baseline\Rijn\j15_5-v1\baseline.gdb\
        baselinegdb = QFileDialog.getExistingDirectory(
            self.dlg, "Select baseline gdb-file ", '*.gdb')

        if len(baselinegdb) == 0:
            return

        if not ("baseline.gdb" in baselinegdb):
            baselinegdb = os.path.join(baselinegdb, 'baseline.gdb')

        if not os.path.isdir(baselinegdb):
            self.iface.messageBar().pushMessage(
                "Error",
                "Cannot find baseline.gdb in given folder",
                level=QgsMessageBar.CRITICAL)
            return

        templatefile = r'c:\Users\jong_jn\.qgis2\python\plugins\Delft3D_FlexibleMesh\incl\baseline6_layer_template.qlr'

        head, tail = os.path.split(baselinegdb)
        _, baselinedirname = os.path.split(head)
        qlrfile = os.path.join(head, 'baseline6.qlr')

        # shutil.copy(templatefile, qlrfile)
        with open(templatefile, 'r') as fin:
            templatecontent = fin.read()

        # Do adjustments to the templatecontent
        # templatecontent = templetecontent.replace()

        with open(qlrfile, 'w') as fout:
            fout.write(templatecontent)

        root = QgsProject.instance().layerTreeRoot()
        group = root.insertGroup(0, "Baseline6_{}".format(baselinedirname))
        QgsLayerDefinition().loadLayerDefinition(qlrfile, group)
예제 #4
0
파일: agis_load.py 프로젝트: matjash/AGIS
    def load_layers(self):
        root = QgsProject.instance().layerTreeRoot()
        crs = QgsCoordinateReferenceSystem("EPSG:3794")

        if access(self):
            self.iface.messageBar().pushMessage(
                self.tr("Povezava s podatkovno bazo CPA uspešna.."))
        else:
            self.iface.messageBar().pushMessage(
                self.tr("Nalagam brez CPA slojev.."))

        #To prevent folder locking of Plugin directory
        try:
            tmp = tempfile.mkdtemp()
            src = path('qlrs')
            shutil.rmtree(tmp)
            shutil.copytree(str(src), tmp)
            styles_path = Path(tmp)
        except:
            self.iface.messageBar().pushMessage(
                self.tr('Berem qlr iz mape vtičnika...'))

        #Load Arheologija layes group

        if access(self):
            if not root.findGroup(self.tr("Arheologija")):
                arheo_group = root.addGroup(self.tr("Arheologija"))
            else:
                arheo_group = root.findGroup(self.tr("Arheologija"))

            vlayer = postgis_connect(self, "public", "Katalog najdišč", "geom",
                                     "kid")
            QgsProject.instance().addMapLayer(vlayer, False)
            arheo_group.insertChildNode(0, QgsLayerTreeLayer(vlayer))

            vlayer = postgis_connect(self, "public",
                                     "Evidenca arheoloških raziskav", "geom",
                                     "id")
            QgsProject.instance().addMapLayer(vlayer, False)
            arheo_group.insertChildNode(1, QgsLayerTreeLayer(vlayer))

            arch_layers = [
                'Claustra Alpium Iuliarum', 'Načrti najdišč',
                'Načrti najdišč_poligoni'
            ]
            for layer in arch_layers:
                vlayer = postgis_connect(self, "public", layer, "geom", "id")
                QgsProject.instance().addMapLayer(vlayer, False)
                arheo_group.insertChildNode(2, QgsLayerTreeLayer(vlayer))

            arch_layers = ['SMAP', 'ZLS interpretacija']
            for layer in arch_layers:
                vlayer = postgis_connect(self, "public", layer, "geom", "gid")
                QgsProject.instance().addMapLayer(vlayer, False)
                arheo_group.insertChildNode(7, QgsLayerTreeLayer(vlayer))

        else:
            pass

        #Load Dediščina layes group
        if self.dlg.dediscina.isChecked():
            if not root.findGroup(self.tr("Dediščina")):
                dedi_group = root.addGroup(self.tr("Dediščina"))
            else:
                dedi_group = root.findGroup(self.tr("Dediščina"))

            evrd = styles_path / 'eVRD.qlr'
            QgsLayerDefinition().loadLayerDefinition(str(evrd),
                                                     QgsProject.instance(),
                                                     dedi_group)

            rkd = styles_path / 'RKD.qlr'
            QgsLayerDefinition().loadLayerDefinition(str(rkd),
                                                     QgsProject.instance(),
                                                     dedi_group)

        #Load Prostorske enote layes group
        if self.dlg.prostorske_enote.isChecked():
            self.iface.messageBar().pushMessage(
                self.tr("Nalagam Prostoske enote..."))
            if not root.findGroup(self.tr("Prostorske enote")):
                prostorske_group = root.addGroup(self.tr("Prostorske enote"))
            else:
                prostorske_group = root.findGroup(self.tr("Prostorske enote"))

            prostorske = styles_path / 'Prostorske enote.qlr'
            QgsLayerDefinition().loadLayerDefinition(str(prostorske),
                                                     QgsProject.instance(),
                                                     prostorske_group)

            if access(self):
                vlayer = postgis_connect(self, "public", "ZKN parcele", "geom",
                                         "fid")
                QgsProject.instance().addMapLayer(vlayer, False)
                prostorske_group.insertChildNode(6, QgsLayerTreeLayer(vlayer))

            zkgji = styles_path / 'zkgji.qlr'
            QgsLayerDefinition().loadLayerDefinition(str(zkgji),
                                                     QgsProject.instance(),
                                                     prostorske_group)

        else:
            self.iface.messageBar().pushMessage(
                self.tr("Ne nalagam Prostorskih enot!"), duration=2)

        #Load Historične podlage layes group
        if self.dlg.historicnepodlage.isChecked():
            self.iface.messageBar().pushMessage(
                self.tr("Nalagam Historične podlage..."))
            if not root.findGroup(self.tr("Historične podlage")):
                hist_group = root.addGroup(self.tr("Historične podlage"))
            else:
                hist_group = root.findGroup(self.tr("Historične podlage"))

            histo = styles_path / 'Historicne podlage.qlr'
            QgsLayerDefinition().loadLayerDefinition(str(histo),
                                                     QgsProject.instance(),
                                                     hist_group)
            hist_group.setExpanded(False)
        else:
            self.iface.messageBar().pushMessage(
                self.tr("Ne nalagam Historičnih podlag!"), duration=2)

        #Load podlage layes group
        if self.dlg.c_podlage.isChecked():
            self.iface.messageBar().pushMessage(self.tr("Nalagam podlage.."))
            if not root.findGroup(self.tr("Podlage")):
                podlage_group = root.addGroup(self.tr("Podlage"))
            else:
                podlage_group = root.findGroup(self.tr("Podlage"))

            geology = styles_path / 'Geološka karta.qlr'
            QgsLayerDefinition().loadLayerDefinition(str(geology),
                                                     QgsProject.instance(),
                                                     podlage_group)

            if data_access(self):
                podlage_zls = styles_path / 'ZLS 1.qlr'
                QgsLayerDefinition().loadLayerDefinition(
                    str(podlage_zls), QgsProject.instance(), podlage_group)
            else:
                pass

            podlage_gurs = styles_path / 'Podlage.qlr'
            QgsLayerDefinition().loadLayerDefinition(str(podlage_gurs),
                                                     QgsProject.instance(),
                                                     podlage_group)

        else:
            self.iface.messageBar().pushMessage(self.tr("Ne nalagam podlag!"),
                                                duration=2)

        QgsProject.instance().setCrs(crs)
        self.iface.messageBar().pushMessage(
            self.tr("Nastavljam Državni kordinatni sistem D96/TM.."),
            duration=5)

        if access(self):
            #Set which layers should not be expanded
            not_expanded = [
                'SMAP', 'ZLS interpretacija', 'Claustra Alpium Iuliarum',
                'Načrti najdišč', 'Načrti najdišč_poligoni',
                'Evidenca arheoloških raziskav', 'Katalog najdišč'
            ]
            for layer in not_expanded:
                if len(QgsProject.instance().mapLayersByName(layer)) != 0:
                    layer = QgsProject.instance().mapLayersByName(layer)[0]
                    myLayerNode = root.findLayer(layer.id())
                    myLayerNode.setExpanded(False)

            #toggle visibility
            layers = [
                'Claustra Alpium Iuliarum', 'Načrti najdišč',
                'Načrti najdišč_poligoni', 'Evidenca arheoloških raziskav',
                'SMAP', 'ZLS interpretacija', 'ZKN parcele'
            ]
            for layer in layers:
                if len(QgsProject.instance().mapLayersByName(layer)) != 0:
                    layer = QgsProject.instance().mapLayersByName(layer)[0]
                    root.findLayer(layer.id()).setItemVisibilityChecked(0)

        #toggle visibility
        layers = ['RKD']
        for layer in layers:
            if len(QgsProject.instance().mapLayersByName(layer)) != 0:
                layer = QgsProject.instance().mapLayersByName(layer)[0]
                root.findLayer(layer.id()).setItemVisibilityChecked(0)