Example #1
0
    def eliminarNoElegido(self, feat):
        campos = {}
        campos['wkt'] = feat.geometry().asWkt()
        campos['srid'] = 32614

        campos['tabla'] = 'e_predio'
        atributos = {}
        capaPredios = QgsProject.instance().mapLayer(
            self.ACA.obtenerIdCapa('predios.geom'))
        nombresAtrbutos = capaPredios.fields()

        nombres = [campo.name() for campo in nombresAtrbutos]

        for x in range(0, len(nombres)):
            atributo = feat.attributes()[x]
            if str(feat.attributes()[x]) == "NULL":
                atributo = None
            atributos[str(nombres[x])] = atributo

        campos['attr'] = atributos

        campos['nuevo'] = False
        campos['eliminado'] = True

        listaTemp = QSettings().value('listaEliminada')
        listaTemp.append(campos)

        QSettings().setValue('listaEliminada', listaTemp)
Example #2
0
    def eliminacionConjunta(self):
        self.capaActiva.startEditing()
        self.listaEliminadaCompleta = []
        self.listaEliminadaCompletaRef = []
        nombreCapa = self.ACA.traducirIdCapa( self.capaActiva.id())

        if nombreCapa == 'manzana':
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('predios.geom'))
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('construcciones'))
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('horizontales.geom'))
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('verticales'))
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('cves_verticales'))
        elif nombreCapa == 'predios.geom':
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('construcciones'))
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('horizontales.geom'))
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('verticales'))
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('cves_verticales'))
        elif nombreCapa == 'horizontales.geom':
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('construcciones'))
        elif nombreCapa == 'verticales':
            self.eliminarYGuardarInterseccion(self.ACA.obtenerIdCapa('cves_verticales'))
        
        self.capaVictima = self.capaActiva
        self.eliminarYGuardar(self.seleccion[0])
        self.capaActiva.removeSelection()
        self.capaActiva.triggerRepaint()
        self.capaActiva.commitChanges()
        listaTemp = QSettings().value('listaEliminada')
        listaTempRef = QSettings().value('listaEliminadaRef')   
        for feat in self.listaEliminadaCompleta:
            listaTemp.append(feat)
        for feat in self.listaEliminadaCompletaRef:
            listaTempRef.append(feat)
        QSettings().setValue('listaEliminada', listaTemp)
        QSettings().setValue('listaEliminadaRef', listaTempRef)
Example #3
0
    def event_aceptar(self):

        estatus = self.comboManzana.currentText()
        clave = self.claveActual
        m = {}
        m['clave'] = clave
        m['claveFiltro'] = self.claveFiltro
        m['estatus'] = estatus
        m['tipo'] = self.tipo

        # se obtiene la lista de las claves cambiadas por estatus de uso
        lista = QSettings().value(
            'clavesEstatusRef' if self.referencia else 'clavesEstatus')
        if not lista:
            lista = []

        lista.append(m)

        # se almacena la lista de claves
        QSettings().setValue(
            'clavesEstatusRef' if self.referencia else 'clavesEstatus', lista)
        self.accept()
Example #4
0
    def cargarJSON(self):


        stringJson = """ [
    {
    "name": "PRUEBA1",
    "layerType": "WMS",
    "strokeColor": "ABCDEF",
    "strokeWidth": 0.5,
    "fillColor": "FFBF00",
    "atributos": [
        {
        "internalName": "clv",
        "attrType": "STRING"
        }
    ],
    "catDependencia": {
        "nombre": "catastro",
        "municipio": {
        "srid": 32614
        },
        "topologias": [
        {
            "reglaTopolia": "interseccion",
            "capa": "PRUEBA1"
        },
        {
            "reglaTopolia": "inclusion",
            "capa": "PRUEBA2"
        }
        ]
    }
    },
    {
    "name": "PRUEBA2",
    "layerType": "WMS",
    "strokeColor": "A9F5A9",
    "strokeWidth": 0.3,
    "fillColor": "A9F5A9",
    "atributos": [
        {
        "internalName": "clv",
        "attrType": "STRING"
        }
    ],
    "catDependencia": {
        "nombre": "catastro",
        "municipio": {
        "srid": 32614
        },
        "topologias": [
        {
            "reglaTopolia": "interseccion",
            "capa": "PRUEBA2"
        }
        ]
    }
    }

    ] """

        datos = json.loads(stringJson)


        #Leemos los objetos capa del json
        for objeto in datos:

            stringDatos = "" #Los datos de la capa los guardamemos en un string

            #obtenemos el srid
            srid = objeto["catDependencia"]["municipio"]["srid"]

            #cargamos el srid en el string de los datos
            #stringDatos += objeto["layerType"]
            stringDatos += "Polygon"
            stringDatos += '?crs=epsg:'
            stringDatos += str(srid)

            #Obtenemos la dependencia de del objeto capa
            dependencia = objeto["catDependencia"]["nombre"]

            #Obtenemos los atributos de la capa y los pasamos al string
            for atributo in objeto["atributos"]:
                stringDatos += '&field='
                stringDatos += atributo["internalName"]
                tipo = atributo["attrType"]
                if tipo == 'STRING':
                    stringDatos += ':string(15)'
                
            stringDatos += '&index=yes'    
            stringNombre = objeto["name"] #Obtenemos el nombre la capa

            #Creamos la capa con el string
            capa = QgsVectorLayer(stringDatos, stringNombre, "memory")

            capa.startEditing() #Iniciamos edicion de la capa

            root = QgsProject.instance().layerTreeRoot() #Obtenemos la raiz para agregar grupos

            QgsProject.instance().addMapLayer(capa, False) #Agregamos la capa en falso para que no se refleje hasta agregarla al grupo

            group = root.findGroup(dependencia) #Buscamos el grupo de la dependencia

            capaReinst = QgsLayerTreeLayer(capa) #La necesitamos para agregar al grupo

            renderer = capa.renderer() #Obtenemos el rendered
            colorRelleno = "#" + objeto["fillColor"] #Obtenemos el color de relleno de la capa
            colorBorde = "#" + objeto["strokeColor"] #Obtenemos el color del borde de la capa
            anchoBorde = str(objeto["strokeWidth"]) #Obtenemos el ancho del bode de la capa

            if capa.wkbType() == 3: #Si la capa es poligono aplicamos el estilo
                symbol = QgsFillSymbol.createSimple({'color': colorRelleno, 'color_border': colorBorde, 'width_border': anchoBorde})
                renderer.setSymbol(symbol)
                capa.triggerRepaint()
                capa.commitChanges() #Aceptamos los cambios

            if not group is None: #Si el grupo dependencia existe agregamos la capa
                group.insertChildNode(0, capaReinst)
            else: #Si el grupo dependencia no existe lo creamos y luego agregamos la capa
                root.insertGroup(0, dependencia)
                group = root.findGroup(dependencia)
                group.insertChildNode(0, capaReinst)

            #print QSettings().value("reglasTopologicas", [])
            reglas = QSettings().value("reglasTopologicas") #obtenemos las reglas ya almacenadas en qgis

            #print reglas
            reglasObjeto = objeto["catDependencia"]["topologias"]
            
            for regla in reglasObjeto:
                descRegla = regla["reglaTopolia"]
                capa1 = stringNombre
                capa2 = regla["capa"]
                tupla = (descRegla, capa1, capa2)
                reglas.append(tupla)
            
            QSettings().setValue("reglasTopologicas", reglas)
Example #5
0
    def cargarWebService(self):

        #token = "bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbIm9wZW5pZCJdLCJleHAiOjE1MTk2ODcwMzgsImlhdCI6MTUxOTY4NjczOCwiYXV0aG9yaXRpZXMiOlsiUk9MRV9BRE1JTiIsIlJPTEVfVVNFUiJdLCJqdGkiOiJkMzI1ZWQ4Ni1iNmVlLTQ3ZDktYWI4YS1lYzE3YjgwMDNjNzEiLCJjbGllbnRfaWQiOiJ3ZWJfYXBwIn0.TMXvDbwtfMJLK_1UnnoTySt0TZ4o_4H1tp-A1CHBDlnU0aCQWnfcj3ja6jD5RAsNKmlc-5HD1gvRlFdKt5D9BBbLxykswD161N2690iurCV0NkjhmMia7yt8-X0EOI1vQoEyf7GdnzFo6Bi5fpmFE6YSS9LMZaxCy4NVhLRfqgNgq9ExKd4igedRSMmSVpQ5oV0u-5__7-sB07n3KCwGZjXeRJgVZQuKUiNI8pPljsY8X56vqYPlJlBNLzIjGjjxR_bkiYaXTdytd9LckbwSnm0914KHkIEhr66PS548V58nZfSAovLofaqV7-VCWViPo3SgvmuLDVxwdFem4b4ipQ"
        token = "bearer " + QSettings().value("token")

        cabecera = {'Content-type': 'application/json', 'Authorization' : token}

            #url del service
        url = 'http://192.168.0.50:8080/configuracion/api/adm-capas/getAllCapasConfiguration'

        respuesta = requests.get(url, headers = cabecera)

        if respuesta.status_code == 200:

            datos = respuesta.json()


            #Leemos los objetos capa del json
            for objeto in datos:

                stringDatos = "" #Los datos de la capa los guardamemos en un string

                #obtenemos el srid
                srid = objeto["catDependencia"]["municipio"]["srid"]

                #cargamos el srid en el string de los datos
                #stringDatos += objeto["layerType"]
                stringDatos += "Polygon"
                stringDatos += '?crs=epsg:'
                stringDatos += str(srid)

                #Obtenemos la dependencia de del objeto capa
                dependencia = objeto["catDependencia"]["nombre"]

                #Obtenemos los atributos de la capa y los pasamos al string
                for atributo in objeto["atributos"]:
                    stringDatos += '&field='
                    stringDatos += atributo["internalName"]
                    tipo = atributo["attrType"]
                    if tipo == 'STRING':
                        stringDatos += ':string(15)'
                    
                stringDatos += '&index=yes'    
                stringNombre = objeto["name"] #Obtenemos el nombre la capa

                #Creamos la capa con el string
                capa = QgsVectorLayer(stringDatos, stringNombre, "memory")

                capa.startEditing() #Iniciamos edicion de la capa

                root = QgsProject.instance().layerTreeRoot() #Obtenemos la raiz para agregar grupos

                QgsProject.instance().addMapLayer(capa, False) #Agregamos la capa en falso para que no se refleje hasta agregarla al grupo

                group = root.findGroup(dependencia) #Buscamos el grupo de la dependencia

                capaReinst = QgsLayerTreeLayer(capa) #La necesitamos para agregar al grupo

                renderer = capa.renderer() #Obtenemos el rendered
                colorRelleno = "#" + objeto["fillColor"] #Obtenemos el color de relleno de la capa
                colorBorde = "#" + objeto["strokeColor"] #Obtenemos el color del borde de la capa
                anchoBorde = str(objeto["strokeWidth"]) #Obtenemos el ancho del bode de la capa

                if capa.wkbType() == 3: #Si la capa es poligono aplicamos el estilo
                    symbol = QgsFillSymbol.createSimple({'color': colorRelleno, 'color_border': colorBorde, 'width_border': anchoBorde})
                    renderer.setSymbol(symbol)
                    capa.triggerRepaint()
                    capa.commitChanges() #Aceptamos los cambios

                if not group is None: #Si el grupo dependencia existe agregamos la capa
                    group.insertChildNode(0, capaReinst)
                else: #Si el grupo dependencia no existe lo creamos y luego agregamos la capa
                    root.insertGroup(0, dependencia)
                    group = root.findGroup(dependencia)
                    group.insertChildNode(0, capaReinst)

                #print QSettings().value("reglasTopologicas", [])
                reglas = QSettings().value("reglasTopologicas") #obtenemos las reglas ya almacenadas en qgis

                #print reglas
                reglasObjeto = objeto["topologias"]
                
                for regla in reglasObjeto:
                    descRegla = regla["reglaTopolia"]
                    capa1 = stringNombre
                    capa2 = regla["capa"]
                    tupla = (descRegla, capa1, capa2)
                    reglas.append(tupla)
                
                QSettings().setValue("reglasTopologicas", reglas)
    def processAlgorithm(self, parameters, context,
                         model_feedback: QgsProcessingFeedback):

        s = Path(parameters["DestinationFolder"])
        model_feedback.pushCommandInfo(f"Destination folder set to {s}")

        full_svg_path = s.joinpath(default_svg_path).as_posix()

        svg_paths = QSettings().value('svg/searchPathsForSVG')

        if not svg_paths:
            svg_paths = QgsApplication.svgPaths()

        if full_svg_path in svg_paths:
            model_feedback.pushCommandInfo(
                f"svg path {full_svg_path} is already present in the settings")
        else:
            model_feedback.pushCommandInfo(
                f"Adding svg path {full_svg_path} to the settings")
            svg_paths.append(full_svg_path)
            QSettings().setValue('svg/searchPathsForSVG', svg_paths)

        if not s.exists():
            model_feedback.pushCommandInfo(
                f"Folder does not exists. Creating it at {s}")
            s.mkdir(parents=True)

        else:
            model_feedback.pushCommandInfo(f"Folder already exists.")

        import requests

        url = parameters["Url"]

        myfile = requests.get(url)
        fname = Path(url).name
        model_feedback.pushCommandInfo(fname)

        import tempfile
        tdir = Path(tempfile.gettempdir())

        newfname = tdir.joinpath(fname)

        with open(newfname, 'wb') as f:
            f.write(myfile.content)

        # now we decompress it
        from zipfile import ZipFile
        with ZipFile(newfname, 'r') as zf:
            zf.extractall(s)

        from .symbol_xml_extractor import SymbolXMLExtractor
        extractor = SymbolXMLExtractor(s.joinpath(file_to_load).as_posix())
        extractor.parse_xml()

        symbols = extractor.symbols

        style = QgsStyle.defaultStyle()

        tag_name = "Planetary Symbols"
        tag = style.tagId(tag_name)
        if tag == 0:
            tag = style.addTag(tag_name)

        for symbol in symbols:
            symbol_name = '%s (%s)' % (symbol['name'], "Planetary Symbols")
            style.addSymbol(symbol_name, symbol["symbol"], True)
            style.tagSymbol(QgsStyle.SymbolEntity, symbol_name, [tag_name])

        return {}