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)
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)
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()
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)
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 {}