def getProjectVariable(self, key): current_project = core.QgsProject().instance() chiper_text = core.QgsExpressionContextUtils.projectScope( current_project).variable(key) value = base64.b64decode( str.encode(chiper_text)).decode('utf-8') if chiper_text else '' return value
def exportToMemoryLayer(self, route, srid, valueMaps): vectorLyr = core.QgsVectorLayer( 'LineString?crs=epsg:{0}{1}'.format( srid, self.getMemoryLayerFieldsUrl()), 'rota', "memory") vl = core.QgsProject().instance().addMapLayer(vectorLyr) vl.startEditing() feat = core.QgsFeature(vl.fields()) pavingValueMap = [ valueMap for valueMap in valueMaps if valueMap['attribute'] == 'revestimento' ] pavingValueMap = pavingValueMap[0][ 'valueMap'] if pavingValueMap else {} getPavingValue = lambda code, valueMap=pavingValueMap: list( pavingValueMap.keys())[list(pavingValueMap.values()).index(code)] for step in route: step['covering'] = getPavingValue( step['covering']).split('(')[0].strip() feat.setAttribute('id', step['seq']) feat.setAttribute('nome', step['name']) feat.setAttribute('sigla', step['initials']) feat.setAttribute('revestimento', step['covering']) feat.setAttribute('faixas', step['tracks']) feat.setAttribute('velocidade', step['velocity']) feat.setAttribute('observacao', step['note']) feat.setGeometry(QgsGeometry.fromWkt(step['wkt'])) vl.addFeature(feat) vl.commitChanges() return vl
def createTheme(self): layers = iface.layerTreeView().selectedLayers() themeCollection = core.QgsProject.instance().mapThemeCollection() themeName = "{0}{1}".format( layers[0].name() if len(layers) == 1 else 'tema_misto', '' if len(themeCollection.mapThemes()) == 0 else len( themeCollection.mapThemes())) root = core.QgsProject().instance().layerTreeRoot().clone() root.clear() [root.insertLayer(idx, layer) for idx, layer in enumerate(layers)] model = core.QgsLayerTreeModel(root) themeCollection.insert( themeName, core.QgsMapThemeCollection.createThemeFromCurrentState( root, model)) return themeName
def run(self, attributes, relationshipTablaName): foundRelationshipTable = [ layer for layer in core.QgsProject().instance().mapLayers().values() if layer.dataProvider().uri().table() == relationshipTablaName ] if not foundRelationshipTable: return (False, 'Tabela de relacionamento não encontrada') layer = foundRelationshipTable[0] feature = self.hasRelationship(attributes, layer) if feature: self.delRelationship(feature, layer) else: self.addRelationship(attributes, layer) iface.mapCanvas().refresh() return (True, '')
def setProjectVariable(self, key, value): chiper_text = base64.b64encode(value.encode('utf-8')) core.QgsExpressionContextUtils.setProjectVariable( core.QgsProject().instance(), key, chiper_text.decode('utf-8'))
# Get full file paths in_paths = [os.path.join(a.RSDS_folder, f) for f in in_files] # Get names of layers in_names = [os.path.splitext(f)[0] for f in in_files] # Launch QGIS application qgs = qc.QgsApplication([], True) qgs.initQgis() # WARNING: This is to silence the ol 'Sum of Photometric type-related... (etc)' error # Should be included with caution, since it can silence other errors PushErrorHandler('CPLQuietErrorHandler') # Create new project project = qc.QgsProject() # Read map project.read(a.qgs_file) # To access layers and groups at root root = project.layerTreeRoot() # Get group (add if needed) group = root.findGroup(a.group_name) if group is None: group = root.addGroup(a.group_name) # Add layer and groups for i in range(len(in_names)):