def loadProject(filename): # clear the map layer registry QgsProject.instance().removeAllMapLayers() assert os.path.exists(filename), "project file does not exist: " + filename # load the project QgsProject.instance().read(filename) assert QgsProject.instance().mapLayers(), "no layers in map layer registry" doc = QDomDocument() with open(filename, encoding="utf-8") as f: doc.setContent(f.read()) # map settings mapSettings = QgsMapSettings() mapSettings.readXml(doc.elementsByTagName("mapcanvas").at(0)) # visible layers layerIds = [] nodes = doc.elementsByTagName("legendlayer") for i in range(nodes.count()): elem = nodes.at(i).toElement().elementsByTagName("legendlayerfile").at( 0).toElement() if elem.attribute("visible") == "1": layerIds.append(elem.attribute("layerid")) mapSettings.setLayers(getLayersByLayerIds(layerIds)) # canvas color red = int( doc.elementsByTagName("CanvasColorRedPart").at(0).toElement().text()) green = int( doc.elementsByTagName("CanvasColorGreenPart").at(0).toElement().text()) blue = int( doc.elementsByTagName("CanvasColorBluePart").at(0).toElement().text()) mapSettings.setBackgroundColor(QColor(red, green, blue)) return mapSettings